Добавление Spam assissian к Postfix
Описание взято spamassissian + Postfix
Содержание
Установка пакетов
Итак устанавливаем пакет spammassissian*.rpm, spammassissian-cpamd *.rpm, spammassissian-spamc *.rpm со всеми зависимостями.
Настройка
Добабляем пользователя, от которого будет работать спамфильтр
adduser spamfilter -s /sbin/nologin
Редактируем /etc/postfix/master.cf
Вконец добавляем строки
spamfilter unix - n n - - pipe flags=Rq user=spamfilter argv=/etc/postfix/scripts/spamfilter -f ${sender} -- ${recipient}
Редактируем строку с smtp
smtp inet n - y - - smtpd -o content_filter=spamfilter:dummy
Cоздаем конфигурационный файл /etc/mail/spamassassin/local.cf
(полная документация - см. perldoc Mail::SpamAssassin::Conf)
required_hits 5 rewrite_header Subject ****SPAM**** report_safe 0 auto_learn 1 use_bayes 1 bayes_path /etc/mail/spamassassin/bayes bayes_file_mode 0666 bayes_learn_to_journal 1 bayes_min_ham_num 50 bayes_min_spam_num 50 score SUBJ_FULL_OF_8BITS 0.00 score HTML_COMMENT_8BITS 0.01 score HEADER_8BITS 0.00 score TO_NO_USER 0.01 score FORGED_MUA_OUTLOOK 0.5 score X_AUTH_WARNING 0.01 score SUBJ_HAS_UNIQ_ID 9.99 score HTTP_USERNAME_USED 9.99 score FORGED_YAHOO_RCVD 9.99 score FORGED_JUNO_RCVD 16 score UNWANTED_LANGUAGE_BODY 1.02 score MLM 5.55 score RCVD_NUMERIC_HELO 4.95 ok_languages en ru ok_locales en ru subject_tag MESSAGE_MARKED_AS_SPAM whitelist_to vt@bykoff.ru whitelist_from root@localhost whitelist_from root@localhost.localhost auto_whitelist_path /etc/mail/spamassassin/auto-whitelist auto_whitelist_file_mode 0666 auto_learn_threshold_nonspam -2 auto_learn_threshold_spam 9 blacklist_from *@888.com blacklist_from *@msn.com blacklist_from *@cat.es blacklist_from *@pmail.gen.nz blacklist_from *@femenino.com blacklist_from *@infonium.com blacklist_from *@outblaze.com
Примечание
bayes_path /etc/mail/spamassassin/bayes указывает что демон создаст три файла базы данных Bayesian фильтра для хранения создаваемых образчиков писем:
/etc/mail/spamassassin/bayes_seen /etc/mail/spamassassin/bayes_journal /etc/mail/spamassassin/bayes_toks
Параметры
bayes_min_ham_num 1 bayes_min_spam_num 1
указывают, сколько чистых писем и писем со спамом должно накопится в Bayesian базе прежде чем демон будет пользоваться этой базой (по умолчания - 200 чистых и спама)
Посмотреть базу можно командой sa-learn -dump auto_whitelist_path /etc/mail/spamassassin/auto-whitelist - Если Вы запустили демон с опцией -a то есть автообучения адресов, указывает, что демон создаст два файла базы данных адресов
/etc/mail/spamassassin/auto-whitelist.dir /etc/mail/spamassassin/auto-whitelist.pag
auto whitelisting вычисляет средний уровень оценки для каждого отправителя и прибавляет его к оценке очередного письма. Это позволяет не блокировать "благонадежных" отправителей если оценка отдельного письма вдруг превысит предел. Кстати, посмотреть базу адресов можно из директории с распакованным дистрибутивом командой ./tools/check_whitelist /etc/mail/spamassassin/auto-whitelist
Создаем Bayes-базу
sa-learn --sync
Затем следует убедится, что владелец файлов в директории /etc/mail/spamassassin/ - это наш новый пользователь.
# chown -R spamfilter /etc/mail/spamassassin/
Запускаем демон
service spamd start
в почтовом логфайле должны появится соответствующие строки о запуске демона
Создаем файл /etc/postfix/scripts/spamfilter
#!/bin/sh # Kalinga Athulathmudali # 2006-01-06 # Variables SENDMAIL="/usr/sbin/sendmail.postfix -i" EGREP=/bin/egrep # Exit codes from <sysexits.h> EX_UNAVAILABLE=69 # Number of *'s in X-Spam-level header needed to sideline message: # (Eg. Score of 5.5 = "*****" ) SPAMLIMIT=5 # Clean up when done or when aborting. trap "rm -f /var/tempfs/out.$$" 0 1 2 3 15 # Pipe message to spamc cat | /usr/bin/spamc -u spamfilter > /var/tempfs/out.$$ if $EGREP -q "^X-Spam-Level: \*{$SPAMLIMIT,}" < /var/tempfs/out.$$ then ## Change the Email address where you want your spam to get fwd to $SENDMAIL -f misha@proba.ru spamtrap@proba.ru < /var/tempfs/out.$$ else $SENDMAIL "$@" < /var/tempfs/out.$$ fi # Postfix returns the exit status of the Postfix sendmail command. exit $?
Теперь поменяйте с этом скрипте почтовые адреса
spamadmin@yourdomain.com на почтовый адрес администратора.
spamtrap@yourdomain.com на адрес, где будет складываться спам.
Теперь поменяйте владельца файла и его атрибуты.
chown spamfilter /etc/postfix/scripts/spamfilter chmod 755 /etc/postfix/scripts/spamfilter
Теперь надо создать temp папку и дать ей нужные аттрибуты
mkdir /var/tempfs chown spamfilter:root /var/tempfs
Ну вот и все. Перезапускаем Postfix.
/etc/init.d/postfix reload
Черные и белые списки
Чтобы добавить почтовый ящик в черный список выполните следующее
spamassassin --add-addr-to-blacklist=boss@test.mail.com
Если надо убрать его оттуда, то надо этого пользователя добавить в белый лист, и он так сказать "отбеливается"
spamassassin --add-addr-to-whitelist=boss@test.mail.com
Перенаправить Spam в отдельный почтовый ящик
В main.cf - раскоментировал
header_checks = regexp:/etc/postfix/header_checks
Создал файлик header_checks
/^Subject: .*SPAM.*/ REDIRECT spamtrap@mydomain.ru
Но если ипользовать скрипт, то в нем и так идет перенаправление спама в указанный почтовый ящик.
Проверка
Отправьте на свой почтовый ящик письмо следующего содержимого
Subject: Test spam mail (GTUBE) Message-ID: <GTUBE1.1010101@example.net> Date: Wed, 23 Jul 2003 23:30:00 +0200 From: Sender <sender@example.net> To: Recipient <recipient@example.net> Precedence: junk MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit This is the GTUBE, the Generic Test for Unsolicited Bulk Email If your spam filter supports it, the GTUBE provides a test by which you can verify that the filter is installed correctly and is detecting incoming spam. You can send yourself a test mail containing the following string of characters (in upper case and with no white spaces and line breaks): XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X You should send this test mail from an account outside of your network.
В почтовый ящик, указанный в скрипте для спама должен попасть это письмо.