Эффективная борьба со спамом на хостинге 1Gb.ru
Материал из 1GbWiki.
Версия 22:33, 16 мая 2011 (править) Dmih (Обсуждение | вклад) м (Правки Dmih (обсуждение) откачены к версии 221.174.16.60) ← К предыдущему изменению |
Текущая версия (22:33, 16 мая 2011) (править) (отменить) Dmih (Обсуждение | вклад) |
||
Строка 19: | Строка 19: | ||
- | + | == Установка 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 | ||
- | + | == Ссылки == | |
+ | * [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
[править] Ссылки
- http://spamassassin.apache.org/ - официальный сайт, документация, Wiki, советы, примеры (англ.)