Эффективная борьба со спамом на хостинге 1Gb.ru
Материал из 1GbWiki.
Версия 14:35, 7 сентября 2009
Содержание |
Общие сведения
Статья предназначена для системных администраторов или опытных технических специалистов, и дает представления о возможности реализации и совмещения встроенной системы фильтрации спама хостинга 1Gb.ru со своей собственной, используя при этом только ресурсы хостинга.
Те, кто хоть раз озадачивался проблемой получения спама в свой почтовый ящик знают, что на хостинге 1Gb.ru существует спам-фильтр, включаемый персонально для каждого из ящиков в личном кабинете в разделе /Фильтрация нежелательной почты/
.
Из плюсов встроенного фильта можно отметить:
- управление через web-интерфейс;
- простота управления;
- белые/черные списки;
- настраиваемые простые контекстные фильтры.
Минусы:
- Отсутсвие "весов" при оценке заголовков, содержимого письма;
- Отсутсвие байесовой фильтрации.
Поэтому под эффективной фильтрацией мы будем понимать не хороший спам-фильтр на стороне сервера, а их совокупность или комплекс мер применяемых для отсеивания нежелательной почты.
В качестве дополнительного фильтра мы будем применять популярный пакет SpamAssassin.
Установка SA
- Через раздел кабинета /Расширенные IMAP ящики/ нужно переключить ящик в расширенный режим.
- Зайти в ящик по SSH.
- Создаем удобную структуру каталогов:
$ mkdir ~/opt ~/src/ && cd Mail && maildirmake .Junk_sa && maildirmake .sa-learn-ham && maildirmake .sa-learn-spam
В Junk_sa будут помещаться письма отфильтрованные SpamAssassin'ом, sa-learn-ham и sa-learn-spam будем складывать письма вручную для последующего обучения байесовского фильтра.
- Установка программ (ссылки для загрузки и версии программ могут отличаться):
$ cd ~/src/ && $ wget http://www.sai.msu.su/apache/spamassassin/source/Mail-SpamAssassin-3.2.5.tar.bz2 $ tar xvfj Mail-SpamAssassin-3.2.5.tar.bz2 $ cd Mail-SpamAssassin-3.2.5 $ perl Makefile.PL PREFIX=$HOME/opt/spamassassin/3.2.5 What email address or URL should be used in the suspected-spam report text for users who want more information on your filter installation? (In particular, ISPs should change this to a local Postmaster contact) default text: [the administrator of that system] (можно указать свой e-mail адрес)
- SA может написать, что не хватает некоторых модулей:
optional module missing: Mail::SPF optional module missing: Encode::Detect
установим их в свой домашний каталог:
$ perl -MCPAN -e shell cpan> install Mail::SPF cpan> install Encode::Detect
Можно еще раз запустить:
$ perl Makefile.PL PREFIX=$HOME/opt/spamassassin/3.2.5
и убедиться, что SA ничего "не скажет" про вышеуказанные модули.
- Компиляция и установка:
$ make && make install && make clean && cd ~/opt/spamassassin && ln -s 3.2.5 current && cd
Настройка
- Настройка окружения.
В конец файла ~/.bashrc
добавляем строки:
export PERL5LIB=${PERL5LIB}:${HOME}/opt/spamassassin/current/lib64/perl5/site_perl/5.8.8 alias sa-learn="$HOME/opt/spamassassin/current/bin/sa-learn" alias razor-client="$HOME/perl/bin/razor-client" alias razor-admin="$HOME/perl/bin/razor-admin"
- Активируем SA через файл
~/.procmailrc
(ваш файл может быть другим):
HOME=/home/virtmail/ВАШ_ЛОГИН_ОТ_ЯЩИКА ORGMAIL=$HOME/Mail/ MAILDIR=$ORGMAIL DEFAULT=$MAILDIR LOGFILE=procmail.log VERBOSE=yes :0 * ^X-Spam-Flag: YES ${MAILDIR}.Junk/ :0fw: spamassassin.lock | $HOME/opt/spamassassin/current/bin/spamassassin :0 * ^Subject: \*\*\*\*\*SPAM\*\*\*\*\* ${MAILDIR}.Junk_sa/
- Теперь можно отправить тестовое письмо на ящик, и убедиться что SA работает:
$ less ~/Mail/procmail.log ... procmail: Locking "spamassassin.lock" procmail: Executing ".../opt/spamassassin/current/bin/spamassassin" ...
Дополнительные настройки SA
SpamAssassin очень гибок в настройках и чтобы повысить качество фильтрации мы включим некоторые дополнительные модули.
$ cd ~/.spamassassin/ && ls -l
- Редактируем файл
user_prefs
# LANGUAGE OPTIONS ok_locales ru en # RAZOR2 use_razor2 1 razor_config /home/virtmail/ВАШ_ЛОГИН_ОТ_ЯЩИКА/.razor/razor-agent.conf # BLACK LISTS skip_rbl_checks 0 # AWL use_auto_whitelist 1 # BAYES use_bayes 1 bayes_auto_learn 1 bayes_auto_learn_threshold_spam 12.0 bayes_auto_learn_threshold_nonspam 0.1 # PYZOR use_pyzor 1 # DCC use_dcc 1 dcc_path /home/virtmail/ВАШ_ЛОГИН_ОТ_ЯЩИКА/opt/dcc/current/bin/dccproc
"LANGUAGE OPTIONS" - настройка языка. "RAZOR2" - настройка cетевой системы фильтрации, основанной на сравнении шаблонов писем. "BLACK LISTS" - включамем проверку отправителя в различных блок-листах. "AWL" - включение системы AutoWhitelist, ведущей трэкинг отправителей, IP адресов. "BAYES" - параметры автообучения фильтрации Байеса. "PYZOR" - еще одна система обнаружения спама, на основе сравнения идентификаторов письма. "DCC" - аналогично предыдущей.
Для работы с сетью Razor2, необходима регистрация:
$ razor-admin -register -user=ВАШ_E-MAIL_АДРЕС
В случае успешной регистрации, ответ будет примерно такой:
Register successful. Identity stored in /home ...
Простой пример файла ~/.razor/razor-agent.conf
debuglevel = 3 identity = identity ignorelist = 0 listfile_catalogue = servers.catalogue.lst listfile_discovery = servers.discovery.lst listfile_nomination = servers.nomination.lst logfile = $HOME/razor-agent.log logic_method = 4 min_cf = ac razordiscovery = discovery.razor.cloudmark.com rediscovery_wait = 172800 report_headers = 1 turn_off_discovery = 0 use_engines = 4,8 whitelist = razor-whitelist
- Для работы DCC необходимо установить клиент:
$ cd ~/src && wget http://www.dcc-servers.net/dcc/source/dcc-dccproc.tar.Z $ tar xfvz dcc-dccproc.tar.Z $ cd dcc-dccproc-* $ ./configure --disable-sys-inst --disable-server --disable-dccm --disable-dccifd --homedir=$HOME/opt/dcc/1.3.115 --bindir=$HOME/opt/dcc/1.3.115/bin $ make && make install && make clean && cd ~/opt/dcc && ln -s 1.3.115 current && cd
- Фильтр байеса начинает работать в том случае, если в его базе уже имеется какое-то количество проанализированных писем, по-умолчанию это 500.
Обучить его можно так. В папку .sa-learn-spam складываем письма, в .sa-learn-ham не спам. Тогда получается так:
- Для спама:
$ sa-learn --spam ~/Mail/.sa-learn-spam/cur/* && sa-learn --spam ~/Mail/.sa-learn-spam/new/*
- Для хороших писем:
$ sa-learn --ham ~/Mail/.sa-learn-ham/cur/* && sa-learn --ham ~/Mail/.sa-learn-ham/new/*