Homepage: amavisd-new
apt install amavisd-new
Документация расположена в директории /usr/share/doc/amavisd-new/
Рассматривается интеграция Amavisd-new, Spamassassin и ClamAV с транспортным почтовым агентом (MTA) Postfix. Postfix может также проверять легальность почты с помощью передачи ее внешним фильтрам содержания.
# su - amavis $ /etc/init.d/amavis debug
Установим недостающие библиотеки и утилиты
# aptitude install bzip2 lzop p7zip unrar-free arj arc nomarch zoo ripole cabextract zip
# telnet localhost 10024 Trying ::1... Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 [127.0.0.1] ESMTP amavisd-new service ready EHLO mail.example.com 250-[127.0.0.1] 250-VRFY 250-PIPELINING 250-SIZE 250-ENHANCEDSTATUSCODES 250-8BITMIME 250-DSN 250 XFORWARD NAME ADDR PORT PROTO HELO IDENT SOURCE quit 221 2.0.0 [127.0.0.1] amavisd-new closing transmission channel Connection closed by foreign host.
Для проверки работоспособности LMTP вместо команды EHLO, в примере выше, используйте LHLO.
Подключение ClamAV к mavisd-new. ClamAV Свободный Антивирус должен быть установлен.
# Default antivirus checking mode # Please note, that anti-virus checking is DISABLED by # default. # If You wish to enable it, please uncomment the following lines: @bypass_virus_checks_maps = ( \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);
sudo adduser clamav amavis sudo adduser amavis clamav
Все дополнительные настройки лучше делать в файле 50-user.
$myhostname = 'mail.example.com'; @local_domains_acl = ( "example.com", "example.org" );
Полный файл
use strict; # # Place your configuration directives here. They will override those in # earlier files. # # See /usr/share/doc/amavisd-new/ for documentation and examples of # the directives you can use in this file # $myhostname = 'mail.example.com'; @local_domains_acl = ( "example.com", "example.org" ); $virus_admin = 'virusalert@example.com'; #------------ Do not modify anything below this line ------------- 1; # ensure a defined return
Для применения изменений amavis должен быть перегружен
# service amavis restart
До этого момента amavisd-new и Настройка почтового сервера Postfix работали независимо, для их интеграции нужно выполнить три пункта:
# sudo postconf -e "content_filter = amavis-new:[127.0.0.1]:10024"
amavis-new unix - - n - 4 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o smtp_tls_note_starttls_offer=no -o disable_dns_lookups=yes -o max_use=80
127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_delay_reject=no # -o smtpd_client_restrictions= -o smtpd_client_restrictions=permit_mynetworks,reject -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_end_of_data_restrictions= -o mynetworks=127.0.0.0/8 -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_client_connection_count_limit=0 -o smtpd_client_connection_rate_limit=0 -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters
Из всех параметров абсолютно необходим пустой параметр content_filter. Эта настройка перекрывает параметр content_filter в файле main.cf. Остальные параметры, также подменяют соответствующие параметры main.cf, включая параметры для отмены ограничений.
pickup unix n - - 60 1 pickup -o content_filter= -o receive_override_options=no_header_body_checks
# nano /etc/amavis/conf.d/20-debian_defaults ... $log_recip_templ = undef; # disable by-recipient level-0 log entries $DO_SYSLOG = 1; # log via syslogd (preferred) $syslog_ident = 'amavis'; # syslog ident tag, prepended to all messages $syslog_facility = 'mail'; $syslog_priority = 'debug'; # switch to info to drop debug output, etc ...
Просмотр лога amavisd-new:
# tail -F /var/log/syslog | grep amavis
$QUARANTINEDIR = undef; # отключаем использование каратина # для частичного отключения карантина # используйте следующие переменные: # $clean_quarantine_method, $virus_quarantine_to, $banned_quarantine_to, # $bad_header_quarantine_to, $spam_quarantine_to, # # пример: $bad_header_quarantine_to = 'undef';
# Look for and purge files older 40 days every 5 hours # 20 */5 * * * root find /var/lib/amavis/virusmails/* -mtime +40 | xargs rm &> /dev/null 20 */5 * * * root find /var/lib/amavis/virusmails/* -mtime +40 -delete &> /dev/null