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

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

(Различия между версиями)
Перейти к: навигация, поиск
Версия 22:33, 16 мая 2011 (править)
Dmih (Обсуждение | вклад)
м (Правки Dmih (обсуждение) откачены к версии 221.174.16.60)
← К предыдущему изменению
Текущая версия (22:33, 16 мая 2011) (править) (отменить)
Dmih (Обсуждение | вклад)

 
Строка 19: Строка 19:
-Hey, that post leaves me feleing foolish. Kudos to you!+== Установка 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
 + 
 +== Настройка ==
 + 
 +* Настройка окружения.
 +В конец файла <code>~/.bashrc</code> добавляем строки:
 + 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 через файл <code>~/.procmailrc</code> (ваш файл может быть другим):
 + 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
 + 
 +* Редактируем файл <code>user_prefs</code>
 + # 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" - настройка языка.<br />
 +"RAZOR2" - настройка cетевой системы фильтрации, основанной на сравнении шаблонов писем.<br />
 +"BLACK LISTS" - включамем проверку отправителя в различных блок-листах.<br />
 +"AWL" - включение системы AutoWhitelist, ведущей трэкинг отправителей, IP адресов.<br />
 +"BAYES" - параметры автообучения фильтрации Байеса.<br />
 +"PYZOR" - еще одна система обнаружения спама, на основе сравнения идентификаторов письма.<br />
 +"DCC" - аналогично предыдущей.<br />
 + 
 +* Для работы с сетью 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/*
== Статистика == == Статистика ==
Строка 28: Строка 171:
* пропущенный спам - 1 * пропущенный спам - 1
-That saves me. Tnhaks for being so sensible!+== Ссылки ==
 +* [http://spamassassin.apache.org/ http://spamassassin.apache.org/] - официальный сайт, документация, Wiki, советы, примеры (англ.)
 + 
 +[[Категория:Почта]]
 +[[Категория:Спам]]
 +[[Категория:UNIX]]

Текущая версия

Содержание

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

Статья предназначена для системных администраторов или опытных технических специалистов, и дает представления о возможности реализации и совмещения встроенной системы фильтрации спама хостинга 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/*

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

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

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

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

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