*******************************************************************************
[Begin of SPAMASSASSIN_INSTALL.HOWTO]
УСТАНОВКА И НАСТРОЙКА SPAMASSASSIN ДЛЯ ФИЛЬТРАЦИИ СПАМА
НА ПОЧТОВОМ СЕРВЕРЕ (QMAIL)
(STEP-BY-STEP HOWTO)
СОДЕРЖАНИЕ:
1. Требования к системе
2. Необходимые компоненты
3. Установка SPAMASSASSIN
4. Настройка SPAMASSASSIN
5. Bayes-фильтры и утилита SA-LEARN
6. Действия с маркированными письмами (обработка)
====================
1. ТРЕБОВАНИЯ К СИСТЕМЕ
====================
Вообще-то SPAMASSASSIN не предъявляет особых требований к системе, однако,
на некоторых моментах стоит остановиться особо:
* ну, естественно, Linux! :)
* и, само собой, MTA (в нашем случае - QMAIL). PROCMAIL тоже нужен.
* для того, чтобы заработало BAYES-фильтрование, необходим PERL версии
не ниже 5.6.1
======================
2. НЕОБХОДИМЫЕ КОМПОНЕНТЫ
======================
Поскольку SPAMASSASSIN почти полностью написан на PERL, то и компоненты для него
нужны, в основном, PERL'овые, то есть, библиотеки. Я не вижу особого смысла
в том, чтобы ставить SPAMASSASSIN из RPM, предварительно собранного из
исходников. По вышеописанной причине. Естественно, наличие/отсутствие некоторых
PERL-библиотек полностью зависит от варианта (опций) установки PERL на конкретном
почтовом сервере. Поэтому, RPM-пакет не будет являться универсальным и решающим
все проблемы способом установки на любой машине. Гораздо проще и удобнее
поставить SPAMASSASSIN с CPAN, о чем и рассказывается ниже. В этом случае,
установщик сам определит, какие библиотеки уже установлены, а какие необходимо
поставить дополнительно (что он и сделает).
======================
3. УСТАНОВКА SPAMASSASSIN
======================
3.1. Первое, что нужно сделать перед установкой SPAMASSASSIN - проверить версию PERL
на почтовом сервере. Для этого в командной строке пишем:
perl -v
И смотрим на результат в первых строках:
This is perl, v5.8.0 built for i386-linux-thread-multi
(with 1 registered patch, see perl -V for more detail)
Copyright 1987-2002, Larry Wall
В данном случае (у меня) установлена версия 5.8.0, значит, обновления PERL
не потребуется. Если вы видите, что версия, установленная у вас ниже 5.6.1 -
придётся обновить, иначе вам придётся забыть о BAYES-фильтровании.
3.2. Теперь непосредственно переходим к установке SPAMASSASSIN. Из командной
строки даём команду:
perl -MCPAN -e shell
на экране появится следующая информация и загрузится оболочка CPAN-сервера:
cpan shell -- CPAN exploration and modules installation (v1.61)
ReadLine support available (try 'install Bundle::CPAN')
cpan>
Далее (уже непосредственно в оболочке CPAN-сервера) пишем:
o conf prerequisites_policy ask (жмём ENTER)
нужно проверить наличие и при необходимости установить следующие модули
perl:
Cwd-2.20
DB_File-1.810
Digest-1.08
Digest-HMAC-1.01
Digest-SHA1-2.10
ExtUtils-MakeMaker-6.21
File-Spec-0.88
Mail-SpamAssassin-2.64
Net-DNS-0.48
PodParser-1.28
install Mail::SpamAssassin (жмём ENTER)
И можно идти пить кофе. Правда, иногда установщик задаёт вопросы по поводу
обновления уже установленных модулей до более подходящей версии. Рекомендую
не отказываться. После того, как появится пустое приглашение
cpan>
смотрим - не было ли выше никаких ошибок при установке. Если всё нормально -
можно считать, что SPAMASSASSIN установлен. Мои поздравления! Выходим из
CPAN-оболочки:
cpan> quit
Всё! С установкой разобрались.
Теперь необходимо проверить, работает ли SPAMASSASSIN. В командной строке пишем:
spamassassin
и жмём ENTER. И видим, что никакой реакции в ответ на эту команду не происходит.
Курсор просто переходит на следующую строчку и всё. У вас может создаться впечатление,
что процесс просто "висит". Спокойно! Не надо бежать за валидолом. Так и должно
быть, ЭТО НОРМАЛЬНО! Если вы нажмёте комбинацию клавиш , то увидите следующее:
root@yourserver:~>spamassassin (нажмите Ctrl-D)
X-Spam-Checker-Version: SpamAssassin 2.64 (2004-01-11) on yourserver.ru
X-Spam-Report:
* 2.0 FROM_NO_LOWER 'From' has no lower-case characters
* 1.9 DATE_MISSING Missing Date: header
X-Spam-Status: No, hits=3.9 required=5.0 tests=DATE_MISSING,FROM_NO_LOWER
autolearn=no version=2.64
X-Spam-Level: ***
root@yourserver:~>
Это значит, что SPAMASSASSIN нормально установился и работает. Теперь надо сделать
скрипт для автоматического запуска демона spamd (на случай, если сервер вдруг будет
перезагружен). Для этого делаем такой скрипт:
#!/bin/sh
#########################################################################
#
# chkconfig: 2345 99 99
# description: "spamd" is the spamassassin daemon
#
# Start / stop script for spamd
#
# In order to be distibution independant, the server known a few
# extra commands:
# start
# stop
#
#
##########################################################################
# Special options, adapt this
NAME=spamd
PIDFILE=/var/run/spamd.pid
# where the program is located
PROG=/usr/bin/spamd
case $1 in
start)
echo -n "Starting $NAME "
$PROG -d -r $PIDFILE;
RETVAL=$?;
test $RETVAL && echo [ OK ];
test $RETVAL || echo [FAILED];;
stop)
echo -n "Stopping $NAME "
test -f $PIDFILE && kill `cat $PIDFILE` && RETVAL=$? && rm -f $PIDFILE;
test $RETVAL && echo [ OK ];
test $RETVAL || echo [FAILED];;
restart)
$0 stop
sleep 2
$0 start
RETVAL=$?;;
status)
$PROG status;;
*)
echo "Syntax `basename $0` start|stop|status|restart"
RETVAL=1;;
esac
RETVAL=$?
exit $RETVAL
и помещаем его в /etc/rc.d/init.d под именем spamd c правами 0755.
Запускаем демона (если он ещё не запущен):
/etc/init.d/spamd start
Всё... SPAMASSASSIN установлен и работает. Переходим к настройке.
======================
4. НАСТРОЙКА SPAMASSASSIN
======================
Настройка SPAMASSASSIN очень проста. Файл настроек находится в каталоге
/etc/mail/spamassassin и называется local.cf
Для нормальной работы SPAMASSASSIN достаточно, чтобы в этом файле присутствовали
следующие строки (в фигурных скобках - мои комментарии, ИХ ПИСАТЬ НЕ НУЖНО!)
trusted_networks 195.69.148/24 127/8 # all in 192.168.*.* and 127.*.*.*
trusted_networks 127. # all in 127.*.*.* localhost
# whitelist
whitelist_from *@cf1.ru # Accept ALL from our domains
whitelist_from *@center-f1.ru
whitelist_from *@kenga.cf1.ru
whitelist_from *@panda.cf1.ru
whitelist_from *@mail.cf1.ru
whitelist_from *@squid.cf1.ru
whitelist_from *@kenga.center-f1.ru
whitelist_from *@panda.center-f1.ru
whitelist_from *@mail.center-f1.ru
whitelist_from *@squid.center-f1.ru
whitelist_from localhost # Accept ALL from this machine
#blacklist
#blacklist_from
#blacklist_to
#переписать поле subject
rewrite_subject 1
subject_tag [SPAM-SPAM-SPAM]: # Mark header of bulk mail with this signature
required_hits 5.0
report_safe 0
use_terse_report 0
auto_learn 1
skip_rbl_checks 0
use_razor2 0
use_dcc 0
use_pyzor 0
always_add_report 1
#use_auto_whitelist 1
#auto_whitelist_path /etc/mail/spamassassin/auto_whitelist
use_bayes 1
bayes_path /var/sa_bayes/sa_bayes
bayes_file_mode 0666
#bayes_auto_expire 1
#bayes_auto_learn 1
ok_languages ru en
ok_locales ru en
report_charset windows-1251
lang ru
score NAME_OF_TEST 3.0
score MIME_HTML_ONLY 2.0
score HTML_MESSAGE 1.0
score HTML_FONTCOLOR_RED 2.0
score FROM_ILLEGAL_CHARS 1.5
score HEAD_ILLEGAL_CHARS 1.5
Для того, чтобы он начал фильтровать
почту у конкретного пользователя, надо в файл .qmail в домашнем каталоге
пользователя внести некоторые изменения.
==============================================
6. ДЕЙСТВИЯ С МАРКИРОВАННЫМИ ПИСЬМАМИ (ОБРАБОТКА)
==============================================
После того, как SPAMASSASSIN начал маркировать заголовки писем, у вас есть
три варианта обработки маркированных писем:
Вариант А:
----------
Маркированные письма можно пропускать через почтовый сервер ничего
с ними не делая. То есть, ваш MUA (например, KMail или TheBAT!)
может непосредственно отфильтровывать маркированные письма и складывать
их в отдельную папку. Для этого вам в вашем почтовом клиенте надо
создать новой правило фильтрации для входящей почты:
* ФИЛЬТРОВАТЬ ПО ТЕМЕ ПИСЬМА
* ЕСЛИ ТЕМА ПИСЬМА СОДЕРЖИТ МЕТКУ
[SPAM-SPAM-SPAM]:
ТО СКЛАДЫВАТЬ ЭТИ ПИСЬМА В ОТДЕЛЬНУЮ ПАПКУ (например, SPAM)
Этот вариант идеален, если вам необходимо получить ВСЕ письма и вы
сами хотите решать, что с ними делать. Для этого варианта файл
.procmail в домашнем каталоге пользователя изменять не потребуется.
Вариант Б:
----------
В этом варианте промаркированные письма можно складывать в отдельную
папку в домашнем каталоге пользователя на сервере. Я не думаю, что
кто-нибудь остановится на этом варианте, поскольку он не имеет никакой
пользы и имеет много минусов: засорение дискового пространства в разделах,
невозможность контроля обычными пользователями пришедших промаркированных
писем, и т.д. Однако, всё же приведу настройки файла .procmail для этого
варианта:
############## Begin of .procmail #####################################
############## End of .procmail #######################################
Вариант В:
----------
Этот вариант - наиболее рискованный с точки зрения потери информации. Он
заключается в том, что все письма, промаркированные, как спам, можно сразу
же удалять на почтовом сервере, не помещая письма в пользовательские
почтовые каталоги. Пользоваться этим вариантом можно только тогда,
когда Байес-фильтр у вас уже достаточно натренирован (см. пункт Х) и
ваш КЛС (коэффициент ложных срабатываний) практически равен нулю. Для того,
чтобы задействовать этот вариант, необходимо в файле .procmail прописать
следующее:
############## Begin of .procmail #####################################
############## End of .procmail #######################################
Этим самым вы говорите обработчику почты, что все письма, содержащие
в теме письма метку [SPAM-SPAM-SPAM]: будут перенаправляться в /dev/null -
то есть, попросту говоря, удаляться, не доходя до почтовых ящиков
конечных пользователей. Ещё раз особо подчеркну, что этот вариант опасен тем,
что какое-нибудь важное письмо, которое фильтр посчитает спамом (хотя, на
самом деле, оно будет для вас очень важным) будет просто удалено без суда и
следствия.
От себя скажу, что я использую вариант А (о чем нисколько не жалею). Те пользователи,
которых не интересует возможное наличие среди кучи спама важных писем, настроили фильтры
своих почтовиков так, что весь спам при получении автоматически удаляется в Корзину
почтового клиента. Остальные (более осторожные) бегло просматривают эту кучу мусора
на предмет наличия важных писем, а потом всё равно удаляют.
русский и прочий спам не идентифицируется до тех пор пока в базе менее 200
ham записей. Это видно при анализе подробных логов spamd в режиме Debug
(spamd -d -D):
Sep 27 16:44:43 medvejonok spamd[24688]: debug: Failed to parse line in SpamAssassin configuration, skipping: use_auto_whitelist 0
Sep 27 16:44:43 medvejonok spamd[24688]: debug: Failed to parse line in SpamAssassin configuration, skipping: lang ru
Sep 27 16:44:43 medvejonok spamd[24688]: debug: bayes: 24688 tie-ing to DB file R/O /var/sa_bayes/sa_bayes_toks
Sep 27 16:44:43 medvejonok spamd[24688]: debug: bayes: 24688 tie-ing to DB file R/O /var/sa_bayes/sa_bayes_seen
Sep 27 16:44:43 medvejonok spamd[24688]: debug: bayes: found bayes db version 2
Sep 27 16:44:43 medvejonok spamd[24688]: debug: bayes: Not available for scanning, only 33 ham(s) in Bayes DB < 200
Sep 27 16:44:43 medvejonok spamd[24688]: debug: bayes: 24688 untie-ing
Для этого небходимо в первую очередь (!) обучить spamd пополнив базы ham и spam:
sa-learn --spam --showdots /dir-spam
sa-learn --ham --showdots /dir-ham
При настройке spamd могут появиться следующего рода ошибки:
Sep 28 09:16:01 medvejonok spamd[28152]: connection from localhost.localdomain [127.0.0.1] at port 1665
Sep 28 09:16:01 medvejonok spamd[28160]: info: setuid to lev succeeded
Sep 28 09:16:01 medvejonok spamd[28160]: processing message <200409280911.56602.xinyong090607@yahoo.com> for lev:500.
Sep 28 09:16:03 medvejonok spamd[28160]: cannot write to /var/sa_bayes/sa_bayes_journal, Bayes db update ignored
Sep 28 09:16:03 medvejonok spamd[28160]: identified spam (19.4/5.0) for lev:500 in 2.0 seconds, 16582 bytes.
Для этого нужно всего лишь изменить права на /var/sa_bayes (666)
[End of SPAMASSASSIN_INSTALL.HOWTO]
*******************************************************************************
HOWTO написан исключительно на основе собственного опыта и не претендует на
авторские права сторонних людей, которые когда-либо описывали процесс установки
и настройки SPAMASSASSIN для QMAIL. Если вы считаете, что я что-либо упустил в
процессе описания - сообщите мне и я постараюсь это исправить.
2004 (C) Алексей Фастович
Группа компаний "F1", Новосибирск.
|