Добавление Spam assissian к Postfix

Материал из Wiki МИАЦ ВО
Версия от 08:18, 25 октября 2007; Misha (обсуждение | вклад) (Защищена страница «Добавление Spam assissian к Postfix» [edit=autoconfirmed:move=autoconfirmed])
Перейти к навигации Перейти к поиску

Описание взято 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.

В почтовый ящик, указанный в скрипте для спама должен попасть это письмо.