Amavis

редактировать
Amavis
Разработчик (и) Патрик Бен Кёттер
Первоначальный выпуск1997 (1997 г.)
Стабильный выпуск 2.11.1 (9 октября 2018 г.; 2 года назад (2018-10-09))
Репозиторий Измените это на Wikidata
Написано наPerl
Операционная система Unix-like
Тип Фильтрация почты
Лицензия GPLv2, Упрощенная лицензия BSD
Веб-сайтwww.amavis.org Измените это на Wikidata

Amavis - это фильтр содержимого с открытым исходным кодом для электронной почты, реализующий почтовое сообщение передача, декодирование, некоторая обработка и проверка, а также взаимодействие с внешними фильтрами содержимого для обеспечения защиты от спама и вирусов и других вредоносных программ. Его можно рассматривать как интерфейс между почтовой программой (MTA, Mail Transfer Agent) и одним или несколькими фильтрами содержимого..

Amavis может использоваться для:

  • обнаружения вирусов, спама, запрещенного содержимого типы или синтаксические ошибки в почтовых сообщениях
  • блокировать, тегировать, перенаправлять (с использованием подадресации ) или пересылать почту в зависимости от ее содержимого, происхождения или размера
  • карантин ( и освободить), или архивировать почтовые сообщения в файлы, в почтовые ящики или в реляционную базу данных
  • очистить переданные сообщения с помощью внешнего средства очистки
  • генерировать DKIM подписи
  • проверять подписи DKIM и предоставлять белый список на основе DKIM

. Примечательные особенности:

Обычная установка фильтрации почты с Amavis состоит из Postfix в качестве MTA, SpamAssassin в качестве классификатора спама и ClamAV в качестве антивирусной защиты, все работает под Unix-подобной операционной системой. Также поддерживаются многие другие антивирусные сканеры (около 30) и некоторые другие сканеры спама (CRM114, DSPAM, Bogofilter ), а также некоторые другие MTA.

Содержание
  • 1 Топология взаимодействия
  • 2 Протоколы взаимодействия
  • 3 Взаимодействие со SpamAssassin
  • 4 Приоритеты проектирования
    • 4.1 Надежность
    • 4.2 Безопасность
    • 4.3 Производительность
    • 4.4 Соблюдение стандарты
  • 5 Лицензия
  • 6 Проект
    • 6.1 Объявление о смене руководителей проекта
  • 7 Ветви и название проекта
  • 8 История проекта
    • 8.1 Программа оболочки
    • 8.2 Программа на Perl
    • 8.3 Демон Perl: amavisd
    • 8.4 Perl, модульная переработка
    • 8.5 amavisd-new
  • 9 См. Также
  • 10 Ссылки
  • 11 Внешние ссылки
Топология взаимодействия

Поддерживаются три топологии для взаимодействия с MTA. Процесс amavisd может быть зажат между двумя экземплярами MTA, что дает классическую настройку фильтрации почты после очереди, или amavisd можно использовать в качестве прокси-фильтра SMTP в настройке фильтрации до очереди, или можно проконсультироваться с процессом amavisd для обеспечения классификация почты, но не для пересылки почтового сообщения само по себе, и в этом случае консультационный клиент остается ответственным за пересылку почты. Этот последний подход используется в настройке Milter (с некоторыми ограничениями) или с исторической клиентской программой amavisd-submit.

Начиная с версии 2.7.0 предпочтительна установка предварительной очереди, поскольку она позволяет отклонять передачу почтового сообщения во время сеанса SMTP с отправляющим клиентом. При настройке пост-очереди фильтрация происходит после того, как почтовое сообщение уже было получено и поставлено в очередь агентом MTA, и в этом случае почтовый фильтр больше не может отклонять сообщение, а может только доставить его (возможно, помеченный) или отбросить, или генерировать уведомление о недоставке, которое может вызвать нежелательное обратное рассеяние в случае сообщения с поддельным адресом отправителя.

Недостатком настройки до очереди является то, что она требует ресурсов (ЦП, память), пропорциональных текущей (пиковой) скорости передачи почты, в отличие от настройки после очереди, где допустима некоторая задержка и использование ресурсов соответствует средней скорости пересылки почты. С введением опции smtpd_proxy_options = speed_adjust в Postfix 2.7.0 требования к ресурсам для фильтра содержимого до очереди были значительно уменьшены.

В некоторых странах законодательство не разрешает фильтрацию почты для однократного отбрасывания почтового сообщения он был принят MTA, поэтому это исключает установку фильтрации после очереди с отбрасыванием или помещением сообщений в карантин, но оставляет возможность доставки (возможно, помеченных) сообщений или отклонения их в настройке до очереди (прокси SMTP или milter).

Протоколы взаимодействия

Amavis может получать почтовые сообщения от MTA через один или несколько сокетов из семейств протоколов PF_INET (IPv4 ), PF_INET6 (IPv6 ) или PF_LOCAL (сокет домена Unix ), используя протоколы ESMTP, LMTP или простой частный протокол AM.PDP можно использовать с вспомогательной программой, такой как amavisd-milter, для взаимодействия с milters. На стороне вывода протоколы ESMTP или LMTP могут использоваться для передачи сообщения внутреннему экземпляру MTA или LDA, либо сообщение может быть передано порожденному процессу по каналу Unix. Когда используются ESMTP или LMTP, сеанс может быть дополнительно зашифрован с использованием расширения протокола TLS STARTTLS (RFC 3207 ). Конвейерная обработка команд SMTP (RFC 2920 ) поддерживается в коде клиента и сервера.

Взаимодействие со SpamAssassin

Когда сканирование спама включено, процесс-демон amavisd концептуально очень похож на процесс spamd в проекте SpamAssassin. В обоих случаях разветвленные дочерние процессы вызывают модули SpamAssassin Perl напрямую, поэтому их производительность схожа.

Основное различие заключается в используемых протоколах: Amavis обычно передает MTA стандартный протокол ESMTP, тогда как в случае spamc / spamd MTA обычно порождает программу spamc, передавая ему сообщение по каналу Unix, затем процесс spamc передает сообщение демону spamd, используя частный протокол, и spamd затем вызывает модули Perl SpamAssassin.

Приоритеты проектирования

Приоритеты проектирования amavisd-new (далее именуемого Amavis): надежность, безопасность, соответствие стандартам, производительность и функциональность.

Надежность

Для того, чтобы ни одно почтовое сообщение не могло быть потеряно из-за неожиданных событий, таких как сбои ввода-вывода, истощение ресурсов и неожиданное завершение программы, программа amavisd тщательно проверяет состояние завершения каждого системный вызов и операции ввода-вывода. Неожиданные события регистрируются, если это вообще возможно, и обрабатываются с помощью нескольких уровней обработки событий. Amavis никогда не берет на себя ответственность за доставку почтового сообщения от MTA: окончательный статус успеха сообщается MTA только после того, как сообщение было передано внутреннему экземпляру MTA и было подтверждено получение. В случае каких-либо фатальных сбоев во время обработки или передачи сообщения, обрабатываемое сообщение просто остается в очереди внешнего экземпляра MTA, чтобы его можно было повторить позже. Этот подход также охватывает потенциальные неожиданные сбои хоста, сбои процесса amavisd или одного из его компонентов.

Использование ресурсов программы, таких как размер памяти, файловые дескрипторы, использование диска и создание подпроцессов, контролируется. Большие почтовые сообщения не хранятся в памяти, поэтому доступный размер памяти не накладывает ограничения на размер почтовых сообщений, которые могут быть обработаны, и ресурсы памяти не расходуются без надобности.

Безопасность

Большое внимание уделяется аспектам безопасности, необходимым для обработки потенциально вредоносных, нестандартных или просто искаженных данных в почтовых сообщениях, поступающих из ненадежных источников.

Процесс обработки почтовых сообщений выполняется с ограниченными привилегиями под выделенным идентификатором пользователя. При желании он может запускать chroot -ed. Рисков переполнения буфера и ошибок выделения памяти в значительной степени можно избежать за счет реализации всей обработки протоколов и обработки почты в Perl, который обеспечивает прозрачное управление динамической памятью. Необходимо следить за тем, чтобы содержимое обработанных сообщений случайно не попало в систему. Perl обеспечивает дополнительную безопасность за счет маркировки испорченных данных, происходящих из дикой природы, и Amavis старается использовать эту функцию Perl с пользой, избегая автоматического удаления данных (используйте повторное заражение) и только не окрашивая его явно в стратегических точках, в конце потока данных.

Amavis может использовать несколько внешних программ для расширения своей функциональности. Это де- архиваторы, де- компрессоры, сканеры вирусов и сканеры спама. Поскольку эти программы часто реализуются на таких языках, как C или C ++, существует потенциальный риск того, что почтовое сообщение, переданное одной из этих программ, может вызвать ее сбой или даже открыть брешь в безопасности.. Риск ограничен запуском этих программ от имени непривилегированного пользователя и, возможно, chroot-ed. Тем не менее, следует избегать использования внешних программ, таких как деархиваторы без поддержки. Использование этих внешних программ настраивается, и их можно отключать выборочно или как группу (как все декодеры или все антивирусные сканеры).

Производительность

Несмотря на то, что он реализован на интерпретируемом языке программирования Perl, сам Amavis не медлит. Хорошая производительность функций, реализованных самим Amavis (не говоря уже о внешних компонентах), достигается за счет работы с данными большими фрагментами (например, не построчно), избеганием ненужного копирования данных, оптимизацией часто просматриваемых путей кода, путем с использованием подходящих структур данных и алгоритмов, а также с помощью некоторых низкоуровневых оптимизаций. Узкие места обнаруживаются во время разработки путем профилирования кода и сравнительного анализа. Подробный отчет о времени в журнале может помочь распознать узкие места в конкретной установке.

Некоторые внешние модули или программы, такие как SpamAssassin или некоторые сканеры вирусов командной строки, могут работать очень медленно, и их использование будет составлять подавляющее большинство прошедшего времени и обработки ресурсов, что делает ресурсы, используемые самим Amavis, относительно небольшими.

Компоненты, такие как внешние почтовые декодеры, антивирусные сканеры и сканеры спама, могут быть выборочно отключены, если они не нужны. Остается только функциональность, реализованная самим Amavis, такая как передача почтового сообщения от и к MTA с использованием протокола SMTP или LMTP, проверка правильности раздела заголовка почты, проверка на запрещенные типы почтового содержимого, проверка и генерация DKIM подписей.

Как следствие, задачи обработки почты, такие как подпись и проверка DKIM (при отключенной другой проверке почты), могут быть исключительно быстрыми и могут конкурировать с реализациями на компилируемых языках. Даже полная проверка с использованием быстрого антивирусного сканера, но с отключенным сканированием спама, может быть удивительно быстрой.

Соблюдение стандартов

Реализация протоколов и структур сообщений тесно связана с набором применимых стандартов, таких как RFC 5322, RFC 5321, RFC 2033, RFC 3207, RFC 2045, RFC 2046, RFC 2047, RFC 3461, RFC 3462, RFC 3463, RFC 3464, RFC 4155, RFC 5965, RFC 6376, RFC 5451, RFC 6008 и RFC 4291. В нескольких случаях некоторые функции были повторно реализованы в коде Amavis, даже несмотря на то, что существует общедоступный (CPAN ) Perl модуль, но не уделяется внимания деталям в соответствии со стандартом или недостаточно проверок и обработка ошибок.

Лицензия

Amavis находится под лицензией GPLv2. Это относится как к текущему коду, так и к историческим веткам. Исключением являются некоторые вспомогательные программы (например, мониторинг и статистическая отчетность), на которые распространяется Новая лицензия BSD.

Проект

Проект стартовал в 1997 году как Unix сценарий оболочки для обнаружения и блокировки сообщений электронной почты, содержащих вирус. Он был предназначен для блокирования вирусов на этапе MTA (агент пересылки почты) или LDA (локальная доставка), работает на Unix-подобной платформе, дополняя другие механизмы защиты от вирусов, работающие на персональных компьютерах конечных пользователей.

Затем инструмент был повторно реализован как программа Perl, которая позже превратилась в демонизированный процесс. Десяток разработчиков по очереди в течение первых пяти лет работы над проектом разрабатывали несколько вариантов, сохраняя при этом общую цель, название проекта и часть инфраструктуры разработки.

С декабря 2008 года (до 09.10.2018) единственной активной ветвью была официально amavisd-new, которая разрабатывалась и поддерживалась Марком Мартинеком с марта 2002 года. Это было согласовано между разработчиками в то время в личная переписка: Кристиан Брикарт, Ларс Хекинг, Хилко Бенген, Райнер Линк и Марк Мартинек. Название проекта Amavis в значительной степени взаимозаменяемо с названием ветки amavisd-new.

За прошедшие годы было добавлено много функций, таких как добавление защиты от спама и другого нежелательного контента, помимо исходной защиты от вирусов. Основное внимание уделяется надежности, безопасности, соблюдению стандартов и производительности.

Домен amavis.org, используемый проектом, был зарегистрирован в 1998 году Кристианом Брикартом, одним из первых разработчиков, который все еще поддерживает регистрацию доменного имени. Теперь домен полностью посвящен единственной активной ветке. Список рассылки проекта был перемещен с SourceForge на amavis.org в марте 2011 года, и его ведут Ральф Хильдебрандт и Патрик Бен Кёттер. Веб-страница проекта и главный сайт распространения находились в Институте Йожефа Стефана, Любляна, Словения (до передачи в 2018 году), где большая часть разработки происходила в разные годы. 2002 и 2018 гг.

Объявление о смене руководителей проекта

9 октября 2018 года Марк Мартинек объявил в общем списке рассылки поддержки и обсуждения о своем уходе из проекта, а также о том, что Патрик Бен Кёттер продолжит в качестве руководителя нового проекта.

Я знаю Бена лично, он один из двух авторов Книги Постфикса и использует Амавис в своей профессиональной жизни, поэтому я думаю, что проект будет в надежных руках.

— Марк Мартинек

После Патрик уведомил о переносе исходного кода в общедоступный репозиторий GitLab и о своем плане дальнейших шагов по развитию проекта.

Ветви и название проекта

На протяжении истории проекта название проекта или его ветвей несколько менялось. Первоначально название проекта было AMaViS (Mail Virus Scanner), представленное Кристианом Брикартом. После переписывания на Perl название программы было Amavis-perl. Демонизированные версии изначально распространялись под именем amavisd-snapshot, а затем как amavisd. Модульная версия, переписанная Хилко Бенгеном, получила название Amavis-ng.

В марте 2002 г. Марк Мартинек представил ветку amavisd-new, первоначально как патч против amavisd-snapshot-20020300. Позже это превратилось в автономный проект, который сейчас является единственной сохранившейся и активно поддерживаемой веткой. В настоящее время название проекта предпочтительно пишется Amavis (в то время как название самой программы - amavisd). Имя Amavis теперь в основном взаимозаменяемо с amavisd-new.

История проекта

программа оболочки

  • 1997 (исходный код Могенса Кьера - Лаборатория Карлсберга, модифицированный Юргеном Куэйдом) начальная, официально не выпущенная
  • 1998- 01-17 AMaViS 0.1 (Christian Bricart) AMaViS, первый официальный выпуск
  • 1998-01-28 AMaViS 0.1.1
  • 1998-12-08 AMaViS 0.2.0-pre1
  • 1999-02-25 AMaViS 0.2.0-pre2
  • 1999-03-29 AMaViS 0.2.0-pre3
  • 1999-03-31 AMaViS 0.2.0-pre4
  • 1999-07-19 AMaViS 0.2.0-pre5
  • 1999-07-20 AMaViS 0.2.0-pre6
  • 2000-10-31 AMaViS 0.2.1 (Christian Bricart, Rainer Link, Chris Mason)

Программа Perl

  • 2000-01 Amavis-perl (Chris Mason)
  • 2000-08 Amavis-perl-8
  • 2000-12 Amavis-perl -10
  • 2001-04 Amavis-perl-11 (разделен на amavisd)
  • 2003-03-07 Amavis-0.3.12 (Lars Hecking)

Демон Perl: amavisd

  • Демонизация 2001-01 (Джефф Винклесс)
  • 2001-04 amavisd-snapshot-20010407 (Lars Hecking)
  • 2001-07 amavisd-snapshot-20010714
  • 2002-03 amavisd-снимок-20020300 ( разделен на amavisd-new)
  • 2003-03-03 amavisd-0.1

Perl, модульная переработка

(Hilko Bengen)

  • 2002-03 amavis-ng-0.1
  • 2003-03 amavis-ng-0.1.6.2

amavisd-new

(Mark Martinec)

  • 2002-03-30 amavisd-new, предварительно разветвленный, Сеть: : Сервер
  • 2002-05-17
  • 2002-06-30 пакеты, SQL lookups
  • 2002-11-16 интегрировано - один файл
  • 27.12.2002
  • 14.03.2003 LDAP ​​поиск
  • 2003-06-16
  • 2003-08- 25 p5
  • 2003-11-10 p6 @ * _ maps
  • 2004-01-05 p7
  • 2004-03-09 p8
  • 2004-04 -02 p9
  • 2004-06-29 p10
  • 2004-07-01 2.0 политики банков, IPv6-адрес форматы
  • 2004-08-15 2.1.0 Утилита мониторинга amavisd-nanny
  • 2004-09-06 2.1.2
  • 2004-11-02 2.2.0
  • 2004-12-22 2.2.1
  • 2005-04-24 2.3.0 @decoders, правила блокировки для каждого получателя
  • 2005-05-09 2.3.1
  • 2005-06-29 2.3.2
  • 2005-08-22 2.3.3
  • 2006-04-02 2.4.0 DSN в SMTP,% * _ by_ccat
  • 2006-05 -08 2.4.1
  • 2006-06-2 7 2.4.2 друзья по переписке, ведение журнала SQL и карантин
  • 2006-09-30 2.4.3
  • 2006-11-20 2.4.4
  • 2007-01-30 2.4.5
  • 2007-04-23 2.5.0 блокировка категорий контента, перезаписанный SMTP client
  • 2007-05-31 2.5.1 amavisd-Requeue
  • 2007-06-27 2.5.2
  • 2007-12-12 2.5.3
  • 2008-03-12 2.5.4
  • 2008-04-23 2.6.0 DKIM, bounce killer, TLS
  • 29.06.2008 2.6.1
  • 12.12.2008 Amavis - amavisd- новый
  • 2008-12-15 2.6.2
  • 2009-04-22 2.6.3 поддержка CRM114 и DSPAM, усечение
  • 2009-06-25 2.6.4 мониторинг через SNMP
  • 2010-04-25 2.7.0-pre4
  • 2011-02-03 2.7.0-pre14
  • 2011-03-07 список рассылки перемещен из SourceForge в amavis.org
  • 2011-04-07 2.6.5
  • 2011-05-19 2.6.6
  • 2011-06-01 2.7.0 улучшения предварительной очереди, ускорение
  • 2012-04-29 2.7.1
  • 2012-06-30 2.7.2
  • 2012 -06-30 2.8.0 использовать ØMQ вместо BDB, оптимизация производительности
  • 2013-04-27 2.8.1-rc1
  • 2013 -06-28 2.8.1 может использовать Redis для хранения друзей по переписке
  • 04.09.2013 2.8.2-rc1 (2.8.2 не выпущен)
  • 2014 -05-09 2.9.0 структурированный журнал в формате JSON, IP-адрес авторепутация
  • 2014-06-27 2.9.1
  • 2014-10-22 2.10.0 Интернационализированная электронная почта (RFC 6530, SMTPUTF8, EAI, IDN )
  • 2014-10-22 2.10. 1
  • 2016-04-26 2.11.0
  • 2018-10-09 2.11.1 незначительные обновления, непосредственно перед миграцией в репозиторий GitLab
См. Также
  • Free и портал программного обеспечения с открытым исходным кодом
Ссылки
Внешние ссылки
Последняя правка сделана 2021-06-10 16:26:38
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте