Головна

Частина 12. Антиспам SpamAssassin.

 До переліку статей циклу

Встановлення 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 - n n - - 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 uk

 

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 uk список припустимих мов

 

Параметри оцінювання листів на належність до спаму, а також кількість балів за кожне спарювання вказується після ключового слова 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

Для навчання на листах з помилковим спрацьовуванням використовується команда:

/usr/bin/sa-learn --ham

 

Автоматизація навчання антиспаму

Вручну навчати антиспам не продуктивно, тому зробимо автоматизацію процесу.
У кожному поштовому ящику створюємо дві
теки:

  1. Spam - в цю теку користувач вручну складає листи не виявлені антиспамом
  2. 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/study.local #визначимо в змінній теку зберігання пошти

#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/study.local

#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

 

Тепер цей скрипт буде виконуватися щодоби вночі о 1 годині 10 хвилин

 

 

 

 До переліку статей циклу

 

Підтримайте, будь ласка автора

та придбайте книгу

"Налаштування поштового

сервера на базі Postfix, Dovecot

та RoundCube"

В електронному вигляді

Придбати

Додати коментар

Захисний код
Оновити