Postfix и Spamassassin

Материал из Викиадмин
Версия от 11:04, 20 ноября 2018; Aleksdem (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску

Итак, в прошлый раз мы настроили антивирус ClamAV для работы с Postfix. Пора теперь побороть и спам на наших почтовых серверах.

Для начала, нам нужно установить Spamassassin.

   yum install spamassassin

Далее нам нужно немного исправить конфиг /etc/mail/spamassassin/local.cf:

# Количество очков когда письмо считается спамом
required_hits           4.0 # 4 - это ну очень уж жестоко, кстати

# Небольшой текст, который мы добавим в письмо в тему. 
# Теперь по слову SPAM пользователи могут настроить фильтр
# для отправки этого добра сразу в корзинку
rewrite_header Subject  [*****SPAM*****]

# Можно спам убрать вообще в прикрепленный файл. Но стоит ли...
report_safe             0

# Включить Bayes
use_bayes               1

# Включить автообучение Bayes
bayes_auto_learn        1
bayes_path              /home/spamd/
bayes_file_mode         0666

# Включить или нет сетевые проверки
skip_rbl_checks         0
use_razor2              0
use_dcc                 0
use_pyzor               0

# И белый список ну очень важных персон
whitelist_from          *@xyz.xx

Теперь надо запустить антиспам:

/etc/init.d/spamassassin restart

И проверяем с помощью команды netstat -antpu | grep spam

TCP        0      0 127.0.0.1:783               0.0.0.0:*                   LISTEN      20622/spamd.pid

Отлично, антиспам готов работать от зари до зари. Осталось только намекнуть Postfix, чтобы он не брезговал помощью такого важного друга. Для этого просто откроем файл /etc/postfix/master.cf и немного изменим его (к лучшему!):

Дня начала найдите строчку (почти в самом верху), которая начинается на smtp. Например, такую:

smtp      inet  -       -       n       -       -       smtpd

И измените её до такого состояния:

smtp      inet  n       -       n       -       -       smtpd
    -o content_filter=spamfilter:dummy

Обратите внимание, что не только добавилась вторая строчка, но и символ n после слова inet.

Теперь стоит перейти в конец файла, чтобы еще немного поизуродовать его. Например, добавить такие следующие строки:

#welcome spam
spamfilter unix - n n - - pipe
  flags=Rq user=spamfilter argv=/usr/local/bin/spamfilter -f ${sender} -- ${recipient}

И к тому же создаём файл /usr/local/bin/spamfilter следующего содержания:

#!/bin/bash
/usr/bin/spamc | /usr/sbin/sendmail.postfix -i "$@"
exit $?

Сохраняем и перезапускаем нашего Франкенштейна:

/etc/init.d/postfix restart

Теперь, как только спам будет поступать, в логах можно будет увидеть следующее:

Nov 23 14:47:24 domain spamd[20625]: spamd: result: . 3 - HTML_MESSAGE...... и т.д.

Тест на спам

Отправляем на тестируемые сервер письмо с таким текстом:

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Должно получить как минимум 1000 очков и получить гордый титул SPAM

Отправляем СПАМ с определёнными баллами на спам-ящик

Итак, у нас стоит spamassassin и периодически пользователи получают ненужную корреспонденцию. Средствами Postfix мы будем отправлять спам с 12 баллами и выше на отдельный спам-ящик. Вроде как и пользователи не будут получать ненужное и, при необходимости, можно найти очередное “важное” письмо.

Создаём ящик для спама. Например, spam@wikiadmin.net

В main.cf постфикса добавим

header_checks = regexp:/etc/postfix/header_checks

В файл /etc/postfix/header_checks добавим строчку:

/^X-Spam-Level:.*\*{12,}.*/ REDIRECT spam@wikiadmin.net

То есть тут СПАМ, получивший 12 баллов и выше, будет отправлен в спам-ящик, а не пользователю. Конечно же, не стоит забывать чистить эту кучу раз в некоторое время.

Перезапускаем postfix

/etc/init.d/postfix restart

Эксперимента ради отправьте себе тест на спам (указанный выше) и посмотрите, что будет в логах. Postfix должен будет отправить письмо в spam@wikiadmin.net