Антиспам Postfix. Настройка Spamassassin, Postgrey, ClamAV

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

 

Настройка Spamassassin, Postgrey, ClamAV

 

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

 

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

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

 

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

mcedit /etc/default/clamav-milter

SOCKET_RWGROUP=postfix

 

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

 

dpkg-reconfigure clamav-milter

 

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

 

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

настройка spamassassin
настройка ClamAV
Антиспам Postfix.ClamAV.3
Антиспам Postfix.ClamAV.4
Антиспам Postfix.ClamAV.5
Антиспам Postfix.ClamAV.6
Антиспам 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

 

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