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 Ссылки

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.