Установка SpamAssassin
Для установки антиспама выполним команду
apt install spamassassin
Сразу после установки программа не будет работать. По умолчанию она отключена. Для ее активации нужно в файле /etc/default/spamassassin изменить значения enable в 1.
Подключение SpamAssassin к Postfix
Вносим изменения в файл /etc/postfix/master.cf .
Сразу после строчки
smtp inet n - - - - smtpd
добавляем
-o content_filter=spamassassin
Новая строка должна отступать от начала строки.
Этим параметром мы указываем, что все письма должны передаваться на анализ фильтру spamassassin
Теперь, в конце этого файла, нужно собственно описать этот фильтр. Для этого допишем строки:
spamassassin unix - nn - - pipe
user=virtual argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
Файл конфигурации SpamAssassin
Основной файл конфигурации антиспама – это /etc/spamassassin/local.cf. Приводим его к виду:
rewrite_header Subject *****SPAM*****
report_safe 0
trusted_networks 192.168.0.0/24
required_score 5.0
use_bayes 1
bayes_auto_learn 1
bayes_ignore_header X-Bogosity
bayes_ignore_header X-Spam-Flag
bayes_ignore_header X-Spam-Status
bayes_min_ham_num 1
bayes_min_spam_num 1
report_charset koi8-r
ok_locales ru en ru
bayes_path /var/spool/bayes/bayes
bayes_file_mode 0666
score SUBJ_FULL_OF_8BITS 0
score FROM_ILLEGAL_CHARS 0
score SUBJ_ILLEGAL_CHARS 0
score HEAD_ILLEGAL_CHARS 0
score HABEAS_SWE 0
score FORGED_IMS_TAGS 1
score BAYES_00 0.0001 0.0001 -2.312 -2.599
score BAYES_05 0.0001 0.0001 -1.110 -1.110
score BAYES_20 0.0001 0.0001 -0.740 -0.740
score BAYES_40 0.0001 0.0001 -0.185 -0.185
score BAYES_50 0.0001 0.0001 0.001 0.001
score BAYES_60 0.0001 0.0001 2.0 2.0
score BAYES_80 0.0001 0.0001 3.0 3.0
score BAYES_95 0.0001 0.0001 3.5 3.5
score BAYES_99 0.0001 0.0001 5.0 5.0
score ALL_TRUSTED -3.360 -3.440 -3.665 -3.800
Основные параметры
rewrite_header показывает какую строку добавляет в тему письма
trusted_networks 192.168.0.0/24 доверенная сеть откуда проверка спама не производится
required_score 5.0 порог срабатывания на спам, по умолчанию 5 баллов, если 5 баллов и больше, то письмо обозначается как спам
use_bayes 1 включаем алгоритм bayes (самообучение)
ok_locales ru en ru список допустимых языков
Параметры оценки писем на принадлежность спаму, а также количество баллов за каждое спаривание указывается после ключевого слова score. Подробнее об этих параметрах можно узнать из документации на сайте разработчиков по ссылке
https://spamassassin.apache.org/old/tests_3_3_x.html
Правил может быть любое количество и они добавляются в столбик. Для каждого правила назначается определенные а количество баллов. Правила, не описанные в этом файле, будут работать с количеством баллов по умолчанию. То есть все правила, которые находятся по ссылке работают, а в файле мы прописываем только те правила, для которых мы изменяем количество баллов. Для отключения правила ему нужно назначить 0 баллов.
Создание белых списков адресов
Белый список адресов заполняется адресами, из которых точно не может прийти спам. В файле /etc/spamassassin/local.cf прописываем параметр whitelist_from и далее делаем список адресов. Например:
whitelist_from user @mail.ru *@gmai.com
Все адреса записываются через пробел. При записи могут использоваться регулярные выражения. Для удобства, чтобы не делать длинную строку, таких строк можно сделать много.
Обучение антиспам
Механизм самообучения - это алгоритм bayes. Это не часть статических правил spamassassin, а отдельный алгоритм. Дополнительные баллы он к дает или снимает исходя из собственного опыта обучения на базе писем и делает это динамично. При создании базы писем для обучения нужно быть внимательным, потому что базу обучения легко испортить по ошибке добавленными письмами. С точки зрения разработчиков ни в коем случае нельзя включать в базу обучения на спам (--spam) письма, которые уже обозначены как спам, а в обучении на ошибочное срабатывание (--ham) нельзя включать письма не обозначены как спам.
Любая система антиспама может как пропускать спамовые листы, так и генерировать ошибочные срабатывания (т.е. нормальное письмо может обозначиться как спам). Если нужно передать в учебный механизм неопознанные спамовые письма (система не обозначила их как спам, хотя это точно спам) используется команда :
/usr/bin/sa-learn --spam
Для обучения на письмах с ошибочным срабатыванием используется команда:
/ u sr/bin/sa-learn --ham
Автоматизация обучения антиспаму
В ручную учить антиспам не продуктивны в , том с делаем автоматизацию процесса. В каждом почтовом ящике создаем две папки :
Spam – в эту папку пользователь вручную составляет письма не обнаруженные антиспамом Nospam - в эту папку пользователь вручную составляет письма ошибков о обозначенных как спам
В папке /root создаем две папки - spam и nospam
Следует обратить внимание что в файлов й системе папки Spam и Nospam в почтовом й ящике пользователя ( /var/mail/domain/user) будут называться соответственно .Spam и .Nospam , это связано с нюансами работы Dovecot Кроме этого нужно учитывать, что письма хранятся не в самой папке (например .Spam ), а в подпапках .Spam /cur (прочитанные письма) и .Spam/new(непрочитанные письма)
Далее пишем скрипт для автоматизации процесса.
В папке / root создаем файл скрипта spam.sh и записываем в него:
!/bin/bash
MAILDIR=/var/mail/ cnmcyber.com # определим в переменной папке хранения почты
#Spam
for filename in $MAILDIR/* # Обход всех файлов в папке.
do
if [-d $filename]; then
if [-e $filename/.Spam]; then
ssp=$filename'/.Spam/cur/';
ssp2=$filename'/.Spam/new/';
sp1=`ls $ssp`
if [ "$sp1" != "" ];
then
mv -f $ssp/* /root/spam && chmod 777 -R /root/spam;
mv -f $ssp2/* /root/spam && chmod 777 -R /root/spam;
fi;
fi;
fi;
done
date >>/var/log/spam-learn.log
/usr/bin/sa-learn --spam /root/spam >>/var/log/spam-learn.log
MDIR=/var/mail/ cnmcyber.com
#NoSpam
for filename in $MDIR/* # Обход всех файлов в папке.
do
if [-d $filename]; then
if [-e $filename/.Nospam]; then
ssp=$filename'/.Nospam/cur/';
ssp2=$filename'/.Nospam/new/';
sp1=`ls $ssp`
if [ "$sp1" != "" ];
then
mv -f $ssp/* /root/nospam && chmod 777 -R /home/root/nospam;
mv -f $ssp2/* /root/nospam && chmod 777 -R /home/root/nospam;
fi;
fi;
fi;
done
date >>/var/log/spam-learn.log
/usr/bin/sa-learn --ham /root/nospam >>/var/log/spam-learn.log
Теперь устанавливаем на этот файл право на исполнение:
chmod +x /root/spam.sh
И дописываем в планировщик cron (файл /etc/crontab ) правило периодического запуска этого скрипта:
10 1 * * * root /root/spam.sh