Postfix · 4 min read · Jan 16, 2026
Интеграция amavisd-new в Postfix для сканирования спама и вирусов - Страница 2
3 Debian Sarge
Для нестабильных пакетов, таких как ClamAV (новые версии ClamAV выходят очень часто), существует репозиторий Debian-volatile (только для Sarge и Woody на момент написания). Чтобы убедиться, что мы устанавливаем последнюю версию пакета ClamAV, сначала редактируем /etc/apt/sources.list и добавляем в него следующую строку:
vi /etc/apt/sources.list| [...] deb http://volatile.debian.net/debian-volatile sarge/volatile main contrib non-free |
После этого обновляем базу данных пакетов, выполнив:
apt-get updateЗатем устанавливаем amavisd-new, SpamAssassin и ClamAV вместе с несколькими другими программами (в основном программами, которые нужны amavisd-new для распаковки архивов, так как электронные письма могут содержать архивы в качестве вложений):
apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip unarj bzip2 unzoo libnet-ph-perl libnet-snpp-perl libnet-telnet-perl nomarch lzopВам будет задано несколько вопросов:
Метод обновления вирусной базы данных: <– daemon
Локальный зеркальный сайт базы данных: <– db.de.clamav.net (Германия; выберите зеркало, которое ближе всего к вам)
Информация о HTTP-прокси (оставьте пустым, если нет): <– (пусто)
Должен ли clamd быть уведомлен после обновлений? <– Да
После этого мы должны настроить amavisd-new, отредактировав /etc/amavis/amavisd.conf. Это очень длинный файл с множеством комментариев. Большинство настроек по умолчанию в порядке, однако убедитесь, что строки @bypass_virus_checks_acl и @bypass_spam_checks_acl закомментированы, потому что в противном случае amavisd-new не загрузит код анти-спама/анти-вируса (в моей копии строка @bypass_spam_checks_acl была активной, поэтому мне пришлось закомментировать ее):
vi /etc/amavis/amavisd.conf| [...] # @bypass_virus_checks_acl = qw( . ); # раскомментируйте, чтобы ОТКЛЮЧИТЬ код анти-вируса [...] # @bypass_spam_checks_acl = qw( . ); # Нет зависимости по умолчанию от spamassassin [...] |
Затем вам следует взглянуть на настройки спама и действия для спам-/вирусных писем в том же файле. Нет необходимости ничего менять, если настройки по умолчанию вас устраивают. Файл содержит много объяснений, поэтому нет необходимости объяснять настройки здесь:
| [...] $final_virus_destiny = D_DISCARD; # (по умолчанию D_BOUNCE) $final_banned_destiny = D_BOUNCE; # (по умолчанию D_BOUNCE) $final_spam_destiny = D_REJECT; # (по умолчанию D_REJECT) $final_bad_header_destiny = D_PASS; # (по умолчанию D_PASS), D_BOUNCE рекомендуется [...] $virus_admin = "postmaster\@$mydomain"; # из-за D_DISCARD по умолчанию [...] $QUARANTINEDIR = '/var/lib/amavis/virusmails'; #$virus_quarantine_method = "local:virus-%i-%n"; # по умолчанию #$spam_quarantine_method = "local:spam-%b-%i-%n"; # по умолчанию $virus_quarantine_to = 'virus-quarantine'; # традиционный локальный карантин $spam_quarantine_to = 'spam-quarantine'; [...] $sa_local_tests_only = 1; # (по умолчанию: false) #$sa_auto_whitelist = 1; # включить AWL (по умолчанию: false) # Таймаут для SpamAssassin. Это используется только если spamassassin НЕ # переопределяет его (что часто происходит, если sa_local_tests_only не истинно) $sa_timeout = 30; # таймаут в секундах для вызова SpamAssassin # (по умолчанию 30 секунд, undef отключает его) # AWL (авто-белый список), требует spamassassin 2.44 или лучше # $sa_auto_whitelist = 1; # по умолчанию undef $sa_mail_body_size_limit = 150*1024; # не тратьте время на SA, если почта больше # (менее 1% спама > 64k) # по умолчанию: undef, без ограничений # значения по умолчанию, могут быть переопределены более специфичными запросами, например, SQL $sa_tag_level_deflt = 4.0; # добавлять заголовки информации о спаме, если на уровне или выше $sa_tag2_level_deflt = 6.31; # добавлять заголовки 'спам обнаружен' на этом уровне $sa_kill_level_deflt = $sa_tag2_level_deflt; # триггерит действия по уклонению от спама # на уровне или выше: bounce/reject/drop, # карантин и добавление расширения адреса электронной почты $sa_dsn_cutoff_level = 10; # уровень спама, за которым DSN не отправляется, # фактически превращая D_BOUNCE в D_DISCARD; # undef отключает эту функцию и является значением по умолчанию; $sa_spam_subject_tag = '*SPAM* '; # (по умолчанию: undef, отключено) [...] |
После этого выполните эти команды, чтобы добавить пользователя clamav в группу amavis и перезапустить amavisd-new и ClamAV:
adduser clamav amavis
/etc/init.d/amavis restart
/etc/init.d/clamav-daemon restartДалее мы должны отредактировать конфигурационный файл демона Freshclam (это демон, который регулярно и автоматически загружает последние вирусные сигнатуры с зеркала ClamAV), потому что он содержит небольшую ошибку. Откройте /etc/clamav/freshclam.conf и измените строку NotifyClamd следующим образом:
vi /etc/clamav/freshclam.conf| [...] NotifyClamd /etc/clamav/clamd.conf [...] |
Затем перезапустите Freshclam (убедитесь, что никакой другой процесс Freshclam (возможно, от другой установки ClamAV) не работает, потому что тогда наш Freshclam не сможет запуститься):
/etc/init.d/clamav-freshclam restartТеперь мы должны настроить Postfix для перенаправления входящей электронной почты через amavisd-new:
postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
postconf -e 'receive_override_options = no_address_mappings'После этого добавьте следующие строки в /etc/postfix/master.cf:
vi /etc/postfix/master.cf| [...] amavis unix - - - - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes 127.0.0.1:10025 inet n - - - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks=127.0.0.0/8 -o strict_rfc821_envelopes=yes -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks -o smtpd_bind_address=127.0.0.1 |
Затем перезапустите Postfix:
/etc/init.d/postfix restartТеперь выполните
netstat -tapи вы должны увидеть, что Postfix (master) слушает на порту 25 (smtp) и 10025, а amavisd-new на порту 10024:
server1:~# netstat -tap
Активные интернет-соединения (серверы и установленные)
Протокол Recv-Q Send-Q Локальный адрес Удаленный адрес Состояние PID/Имя программы
tcp 0 0 localhost.localdo:10024 *:* LISTEN 4369/amavisd (maste
tcp 0 0 localhost.localdo:10025 *:* LISTEN 4895/master
tcp 0 0 *:874 *:* LISTEN 1964/rpc.statd
tcp 0 0 *:sunrpc *:* LISTEN 1553/portmap
tcp 0 0 *:auth *:* LISTEN 1932/inetd
tcp 0 0 *:smtp *:* LISTEN 4895/master
tcp6 0 0 *:imaps *:* LISTEN 3177/couriertcpd
tcp6 0 0 *:pop3s *:* LISTEN 3094/couriertcpd
tcp6 0 0 *:pop3 *:* LISTEN 3038/courierttcpd
tcp6 0 0 *:imap2 *:* LISTEN 3129/couriertcpd
tcp6 0 0 *:ssh *:* LISTEN 1943/sshd
tcp6 0 0 *:smtp *:* LISTEN 4895/master
tcp6 0 148 localhost:ssh localhost:4631 ESTABLISHED2052/0Если хотите, вы можете теперь добавить Razor, Pyzor и DCC в SpamAssassin, чтобы улучшить его производительность фильтрации. Razor, Pyzor и DCC - это фильтры спама, которые используют сеть совместной фильтрации. Чтобы установить их, выполните
apt-get install razor pyzor dcc-clientТеперь мы должны сказать SpamAssassin использовать эти три программы. Отредактируйте /etc/spamassassin/local.cf и добавьте в него следующие строки:
vi /etc/spamassassin/local.cf| [...] # dcc use_dcc 1 dcc_path /usr/bin/dccproc dcc_add_header 1 dcc_dccifd_path /usr/sbin/dccifd #pyzor use_pyzor 1 pyzor_path /usr/bin/pyzor pyzor_add_header 1 #razor use_razor2 1 razor_config /etc/razor/razor-agent.conf #bayes use_bayes 1 use_bayes_rules 1 bayes_auto_learn 1 |
После этого перезапустите amavisd-new:
/etc/init.d/amavis restartВот и все. Теперь следите за своим почтовым журналом (/var/log/mail.log), чтобы увидеть, работает ли amavisd-new должным образом. amavisd-new будет записывать, когда он находит спам или вирусное письмо. Когда вы (пере)запускаете amavisd-new, он также должен записывать, что загружает свой код сканирования спама и вирусов (если нет, вероятно, вы сделали что-то неправильно).
Чтобы в реальном времени просмотреть свой почтовый журнал, вы можете использовать эту команду:
tail -f /var/log/mail.log(Нажмите CTRL + c, чтобы выйти из журнала.)
4 Ссылки
- amavisd-new: http://www.ijs.si/software/amavisd
- Postfix: http://www.postfix.org
- ClamAV: http://www.clamav.net
- SpamAssassin: http://spamassassin.apache.org
- Debian: http://www.debian.org
- Ubuntu: http://www.ubuntu.com
Get new posts in your inbox
No spam. Unsubscribe anytime.