21.9. Настройка SpamAssassin в Postfix

Проблема

Блокировка спама на уровне SMTP полезна и эффективна, но её возможности ограничены. Требуется использовать программу, которая бы уничтожала спам, не требуя постоянного наблюдения и настройки. Программа должна интегрироваться в существующую конфигурацию Postfix/Amavisd-new/ClamAV.

Решение

SpamAssassin — именно то, что вам нужно. Поскольку SpamAssassin будет устанавливаться в системе с программой Amavisd-new, выполняющей функции прокси-сервера SMTP, установите SpamAssassin, а затем настройте параметры в /etc/amavis/amavisd.conf. Файл /etc/SpamAssassin/local.cf не понадобится. После установки SpamAssassin перейдите к редактированию /etc/amavis/amavisd.conf.

В секции 1 закомментируйте строку:

@bypass_spam_checks_acl = qw( . );

В секции 4 указывается, как Amavis должен поступать с сообщениями, помеченными как спам. Следующий параметр доставляет их получателям:

$final_spam_destiny = D_PASS; # (по умолчанию D_REJECT)

Значение D_DISCARD уничтожает такие сообщения на сервере без оповещения отправителя:

$final_spam_destiny = D_DISCARD; # (по умолчанию D_REJECT)

В разделе 7 задается конфигурация SpamAssassin:

$sa_tag_level_deflt = -999;
$sa_tag2_level_deflt = 5.0;
$sa_kill_level_deflt = -999;
# Строка, включаемая в начало заголовка Subject, если сообщение
# превышает уровень tag2
$sa_spam_subject_tag = '***SPAM*** ';

Наконец, владельцем файлов SpamAssassin должен быть пользователь amavis:

# chown -R amavis:amavis /usr/share/spamassassin

Комментарий

Вы сами решаете, как поступить со спамом — уничтожить его на сервере или переслать пользователям. Если разрешить доставку, пользователи смогут легко настроить фильтры в своих почтовых клиентах по строке ***SPAM*** и направить спам туда, куда сочтут нужным.

Третий вариант — отвергнуть спам и отправить уведомление 5xx о недоставленном сообщении:

$final_spam_destiny = D_REJECT;

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

Четвёртый и однозначно худший вариант — возврат сообщения. Поскольку подавляющее большинство спамеров использует фальшивые обратные адреса, а небольшое количество с «честными» адресами просто игнорирует ответы, не стоит тратить ресурсы и увеличивать количество ненужного трафика.

Конфигурация SpamAssassin позволяет эффективно фильтровать спам, настраивая параметры, такие как пороговое значение для определения спама, настройку тегов и уровни фильтрации. Установка таких значений как sa_tag_level_deflt и sa_kill_level_deflt помогает администратору определить, какие сообщения будут доставлены пользователю с отметкой "СПАМ", а какие удалены без уведомления. Более тонкая настройка пороговых значений позволяет добиться нужного уровня защиты и минимизировать ложные срабатывания.

Чтобы отслеживать эффективность настроек SpamAssassin и корректировать их по мере изменения угроз, рекомендуется вести логи работы фильтра и анализировать их. Это можно делать как через Amavisd-new, так и через встроенные в SpamAssassin функции. Современные спам-фильтры развиваются, и потому важно периодически проверять актуальность настроек, устанавливая обновления и новые правила.

См. также

The SpamAssassin Wiki; локальная документация Amavisd-new (/usr/share/doc/amavisd-new, amavisd-new(8) и /usr/share/doc/amavisd-new/README.postfix).