Это старая версия документа!
Эвристический фильтр спама
SpamAssassin – это очень мощный и гибкий в настройке фильтр спама с различными возможностями, включая «белый список», RBL-тесты, байесовский анализ, анализ текста в заголовке и теле письма. Фильтр может запускаться из пользовательских файлов .procmail и .forward, почтовых программ и служб MTA.
В пакет включена резидентная программа spamassassin (spamd), которая взаимодействует с клиентами (spamc) по TCP. Такая конфигурация позволяет при последовательной обработке нескольких сообщений загружать интерпретатор perl только один раз. Для использования этой конфигурации необходимо установить пакет spamc.
apt install spamassassin
Перед запуском нужно установить следующие значения:
ENABLED=1 CRON=1
И разрешить автозапуск:
update-rc.d spamassassin enable
Папка с файлами настройки: /etc/spamassassin
Папка с БД: /var/lib/spamassassin
Запуск:
service spamassassin start
Может работать через прокси, использует Wget.
Настройка для работы непосредственно с Postfix.
В файл /etc/postfix/master.cf
нужно добавить
Для smtp
и submission
строку:
-o content_filter=spamassassin
пример:
… smtp inet n - y - - smtpd -o content_filter=spamassassin … submission inet n - y - - smtpd -o content_filter=spamassassin …
spamassassin unix - n n - - pipe user=debian-spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
postfix reload
или
service postfix reload
GTUBE (Generic Test for Unsolicited Bulk Email) текстовая строка для тестирования SpamAssassin. По умолчанию имеет оценку 1000.
Для проверки нужно вставить её в сообщение.
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
Пример обучения spam
по папке Junk
sa-learn --dbpath /var/lib/amavis/.spamassassin --spam /home/user/.Junk
Пример обучения ham
по папке In
sa-learn --dbpath /var/lib/amavis/.spamassassin --ham /home/user/.In
Пример обучения по всем пользователям:
#!/bin/bash MAIL_ROOT_DIR=/srv/mail/vmail SA_DB_DIR=/var/lib/amavis/.spamassassin IFS=$'\n' echo "HAM:" for DIR_HAM in $(find $MAIL_ROOT_DIR -type d|grep ".*/cur"|egrep -v "./*Junk*|./*Archive*|./*Drafts*|./*Sent*|./*Trash*") do echo $DIR_HAM sa-learn --dbpath $SA_DB_DIR --ham $DIR_HAM done echo "SPAM:" for DIR_SPAM in $(find $MAIL_ROOT_DIR -type d|grep ".*Junk/cur") do echo $DIR_SPAM sa-learn --dbpath $SA_DB_DIR --spam $DIR_SPAM done