Postfix и Spamassassin
Итак, в прошлый раз мы настроили антивирус 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