Для борьбы со СПАМом есть хороший инструмент — spamassassin. Для его установки на Ubuntu 22.04 надо:
# apt install spamassassin spamc spamass-milter
spamass-milter нужен для для интеграции spamassassin с Postfix SMTP Server. После установки надо внести изменение в два файла. Начнём с /etc/default/spamass-milter
Надо закомментировать строчку с опцией -r
#OPTIONS="${OPTIONS} -r 15"
Эта строка заставляет SMTP сервер отклонять письма с оценкой 15 и выше. На первых этапах этого лучше не делать. Так как есть вероятность, что нужные пользователям письма будут отклонены. Особенно при дефолтных настройках spamassassin. Чуть позже мы рассмотрим как переместить подозрительные письма в СПАМ.
Далее, добавим следующие строки в файл /etc/postfix/main.cf
smtpd_milters = local:spamass/spamass.sock
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
milter_protocol = 6
non_smtpd_milters = $smtpd_milters
Если у вас есть ещё сервисы, такие как DKIM, DMARK, то добавьте local:spamass/spamass.sock
в первую строчку (smtpd_milters
) через запятую после них.
Далее надо рестартовать spamass-milter, spamassassin и postfix:
# systemctl restart postfix spamass-milter spamassassin
Добавить spamassassin в автозагрузку
# systemctl enable spamassassin
Пересылка СПАМа в папку Junk
Настроим пересылку СПАМа в соответствующую папку всем абонентам. Для этого надо установить dovecot-sieve (полагаю, что сам Dovecot уже установлен и настроен):
# apt install dovecot-sieve dovecot-managesieved
Далее, правим файлы настроек dovecot’a. В /etc/dovecot/conf.d/15-lda.conf
надо добавить протокол:
protocol lda {
# Space separated list of plugins to load (default is global mail_plugins).
mail_plugins = $mail_plugins sieve
}
Файл /etc/dovecot/conf.d/20-lmtp.conf
:
protocol lmtp {
mail_plugins = quota sieve
}
В файле /etc/dovecot/conf.d/90-sieve.conf
найдите и раскомментируйте или приведите к следующему виду строку:
sieve_default = /var/lib/dovecot/sieve/default.sieve
Это мы указали где будет файл с дефолтным скриптом sieve. Можно ещё указать параметр sieve =
где будут располагаться индивидуальные файлы пользователей.
Далее правим (создаём) сам /var/lib/dovecot/sieve/default.sieve
:
require ["fileinto", "mailbox"];
if header :contains "X-Spam-Flag" "YES" {
fileinto :create "Junk";
stop;
}
Тут мы все письма с заголовком X-Spam-Flag YES перемещаем в папку Junk, а если её нет — создаём. Далее, выполним скрипт:
# sievec /var/lib/dovecot/sieve/default.sieve
Что создаст файл /var/lib/dovecot/sieve/default.svbin
Добавим в файл /etc/postfix/main.cf
строчку:
mailbox_command = /usr/lib/dovecot/deliver -d $LOGNAME
Перезапускаем Dovecot и Postfix
systemctl restart dovecot.service postfix.service
Тестирование
Для тестирования отправьте письмо с какого-нибудь почтового сервиса (Яндекс подойдёт) письмо в адрес какого-то абонента своего сервера с темой:
*****SPAM***** XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
и любым текстом. Такое письмо должно попасть в папку СПАМ. Если так, то дальше можно приступать к «тонким» настройкам spamassassin
Настройка spamassassin
Пользовательские настройки хранятся в файле /etc/spamassassin/local.cf В самом файле есть много аннотаций и всё доступно. Можно включить report_safe 1 и в письма будет добавляться отчет. Можно это сделать на период тестирования и настройки.
Если вы запустили OpenDMARK сервис, то добавьте строки:
header CUSTOM_DMARC_FAIL Authentication-Results =~ /dmarc=fail/
describe CUSTOM_DMARC_FAIL DMARC check failed
score CUSTOM_DMARC_FAIL 3.0
Тут мы добавили 3 балла если не пройден тест DMARK.
Черные и белые списки
Можно формировать «чёрные» и «белые» списки. Используйте параметры blacklist_from и whitelist_from для добавления определённого адреса или адреса домена в чёрный или белый список. Например:
blacklist_from [email protected]
blacklist_from *@some-bad-spam-domain.com
whitelist_from *@canonical.com
Проверка
Проверить синтаксис можно командой:
# spamassassin --lint
Если вывод нулевой, то всё ОКей и можно перезапускать spamassassin