Эффективная борьба со спамом на хостинге 1Gb.ua

Материал из 1GbWiki.

Версия от 14:27, 24 марта 2010; Rin (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Содержание

[править] Общие сведения

Статья предназначена для системных администраторов или опытных технических специалистов, и дает представления о возможности реализации и совмещения встроенной системы фильтрации спама хостинга 1Gb.ua со своей собственной, используя при этом только ресурсы хостинга.

Те, кто хоть раз озадачивался проблемой получения спама в свой почтовый ящик знают, что на хостинге 1Gb.ua существует спам-фильтр, включаемый персонально для каждого из ящиков в личном кабинете в разделе /Фильтрация нежелательной почты/. Из плюсов встроенного фильта можно отметить:

  • управление через 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/*

[править] Статистика

Грубые подсчеты, на обычном, не ролевом (support, info, sale и т.п.) ящике дают примерно такие результаты на 300 писем:

  • фильтр 1Gb.ua - 269
  • собственный SA - 30
  • пропущенный спам - 1

[править] Ссылки

Личные инструменты