Настройка Spamassassin в связке с Postfix


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

Для организации почтового сервера чаще всего применяются связка Postfix и Dovecot. Однако нормальной работа почтовой системы на сервере может считаться только в случае наличия защиты от спама.



Будем конфигурировать антиспам систему на базе Spamassassin, Postgrey, ClamAV. Изначально имеем функционирующий почтовый сервер Postfix + Dovecot на Debian.



Устанавливаем из репозитория необходимые пакеты:

apt-get install clamav-milter clamav-unofficial-sigs postgrey



Начнем с конфигурации clamav



mcedit /etc/default/clamav-milter

SOCKET_RWGROUP=postfix



Запускаем реконфигурицю пакета в псевдографическом интерфейсе:

dpkg-reconfigure clamav-milter



Последовательно указываем значения по-умолчанию, следуя подсказкам реконфигуратора.


Приведены только скриншоты тех этапов реконфигурации на которых значения по умолчанию изменялись — в остальных случаях для получения рабочей конфигурации достаточно подтверждать выбор стандартного значения


настройка spamassassin


настройка ClamAV с Spamassassin


Антиспам Postfix.ClamAV.3


Антиспам Postfix.ClamAV.4


Антиспам Postfix.ClamAV.5 + Spamassassin


Антиспам Postfix.ClamAV.6 + Spamassassin


Антиспам Postfix.ClamAV.7


Антиспам Postfix.ClamAV.8


Антиспам Postfix.ClamAV.9


На этом конфигурация clamav закончена.



service postfix restart


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


Setting up clamav-daemon (0.99.2+dfsg-0+deb8u2) …
[FAIL] Clamav signatures not found in /var/lib/clamav … failed!
[FAIL] Please retrieve them using freshclam … failed!
[FAIL] Then run '/etc/init.d/clamav-daemon start' … failed!



Если они выводятся выполняем команду

freshclam



Затем запускаем clamav-daemon

/etc/init.d/clamav-daemon start



Установка и настройка SpamAssassin


Устанавливаем SpamAssassin.

apt-get install spamassassin spamc spamass-milter



Создаем системного пользователя, от имени которого будет выполняться процесс

adduser spamd --disabled-login



Вносим изменения в конфигурационный файл:

mcedit /etc/default/spamassassin



Прежде всего даем указание на необходимость включения демона

ENABLED=1


Далее задаем:

SPAMD_HOME="/home/spamd/"

OPTIONS="--create-prefs --max-children 5 --username spamd --helper-home-dir ${SPAMD_HOME} -s ${SPAMD_HOME}spamd.log"



Указываем имя pid файла

PIDFILE="${SPAMD_HOME}spamd.pid"

Правила Spamassassin должны автоматически обновляться, даем указание на необходимость этого:

CRON=1



Чтобы спам успешно отсеивался в конфигурационном файле нужно задать правила, в соответствии с которыми будет работать пакет

mcedit /etc/spamassassin/local.cf



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

rewrite_header Subject ***** SPAM _SCORE_ *****

report_safe 0

required_score 5.0

use_bayes 1

use_bayes_rules 1

bayes_auto_learn 1

skip_rbl_checks 0

use_razor2 0

use_dcc 0

use_pyzor 0



На этом все, чтобы SpamAssassin мог работать с  Postfix сделаем указание на необходимость подгрузки SpamAssassin


mcedit /etc/postfix/master.cf



Добавляем фильтр:

smtp inet n - - - - smtpd

-o content_filter=spamassassin



Также добавляем следующие параметры:

spamassassin unix - n n - - pipe

user=spamd argv=/usr/bin/spamc -f -e

/usr/sbin/sendmail -oi -f ${sender} ${recipient}



Строки должны начинаться с 2 пробелов, в противном случае при перезапуске службы могут выводиться предупреждения о неверной конфигурации

Создаем файл, в котором указываем сокет, путь к конфигурационному файлу и максимальный размер письма, которое будет проверять spamassassin


mcedit /etc/spamassassin/spamc.conf

-U /var/spool/postfix/spamass/spamass.sock
-u spamass-milter

-s 350000



Обновляем данные

sa-update



Перезапускаем службы:

service spamassassin start

service postfix restart



Настройка postgrey


Поскольку пакет установили на начальном этапе переходим к настройке, которая элементарна



Смотрим на каком порту работает postgrey

netstat -nltp | grep postgrey

Обычно это 10023 или 6000



Идем в конфигурационный файл и указываем хости и порт, а также необходимое время задержки при приеме письма

mcedit /etc/default/postgrey

POSTGREY_OPTS="--inet=127.0.0.1:10023 --delay=60"



Принцип действия основывается на том, что все письма от неизвестных отправителей ставятся на hold на указанное в конфиге время — и принимаются после повторной попытки отправки сервером на другой стороне. Серверы спамеров из соображений снижения нагрузки на инфраструктуру подобных попыток, как правило, не предпринимают.




Перезапускаем службы

/etc/init.d/postgrey restart

service postfix restart



Читайте про настройку веб-интерейса для работы с почтой, который взаимодействует с файлами на диске и не использует базы при этом очень удобен (подходит только для частного использования).

Сказать спасибо