The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Проверка спама через Spamassassin в транзитрой почте (spam spamassassin mail filter sendmail milter)


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова: spam, spamassassin, mail, filter, sendmail, milter,  (найти похожие документы)
From: Bykov Victor <vt@bykoff.com.> Date: Mon, 22 Oct 2005 14:31:37 +0000 (UTC) Subject: Проверка спама через Spamassassin в транзитрой почте Оригинал: http://www.vtornik.com/ph/spamassassin.php принцип взаимодействия Постоянно крутится демон spamd (перловая программка), ожидая соединения на определенном порту (по умолчанию - на интерфейсе lo, порт 783). Этот демон работает от имени непривилигированного пользователя. Еще, работает связующая програмка-демон spamass-milter держащая открытый сокет, по умолчанию, в /var/run/spamass.sock . Sendmail при получении каждого письма согласно своей конфигурации передает spamass-milterу текст этого письма, а он - демону spamd. Этот демон меняет заголовки, ( и, иногда, BODY письма). Для каждого письма демон проверяет определенные параметры, ключевые слова, элементы заголовка и т.д. За каждый элемент начисляются определенные очки (как положительные, так и отрицательные). Если сумма очков превосходит порог (по умолчанию, 5), сообщение считается спамом. установка Нам понадобится последний дистрибутив spamassassin (брать отсюда), spamassassin-milter (брать отсюда) Разархивируем spamassassin в директорию, компилируем perl Makefile.PL make make install Нам понадобится (новый) пользователь, от имени которого будет работать spamd. У него желательно убрать шелл в /etc/passwd Создаем конфигурационную директорию mkdir /etc/mail/spamassassin На директорию необходимо дать права на запись пользователю от имени которого будет работать демон spamd (, а у остальных - желательно отнять эти права), то есть chown spamduser /etc/mail/spamassassin chmod 755 /etc/mail/spamassassin Создаем конфигурационный файл /etc/mail/spamassassin/local.cf (полная документация - см. perldoc Mail::SpamAssassin::Conf) Пример: auto_learn 1 use_bayes 1 bayes_path /etc/mail/spamassassin/bayes bayes_file_mode 0666 bayes_learn_to_journal 1 bayes_min_ham_num 1 bayes_min_spam_num 1 score SUBJ_FULL_OF_8BITS 0.00 score HTML_COMMENT_8BITS 0.01 score HEADER_8BITS 0.00 score TO_NO_USER 0.01 score FORGED_MUA_OUTLOOK 0.5 score X_AUTH_WARNING 0.01 score SUBJ_HAS_UNIQ_ID 9.99 score HTTP_USERNAME_USED 9.99 score FORGED_YAHOO_RCVD 9.99 score FORGED_JUNO_RCVD 16 score UNWANTED_LANGUAGE_BODY 1.02 score MLM 5.55 score RCVD_NUMERIC_HELO 4.95 ok_languages en ru ok_locales en ru subject_tag MESSAGE_MARKED_AS_SPAM whitelist_to vt@bykoff.ru whitelist_from root@localhost whitelist_from root@localhost.localhost auto_whitelist_path /etc/mail/spamassassin/auto-whitelist auto_whitelist_file_mode 0666 auto_learn_threshold_nonspam -2 auto_learn_threshold_spam 9 blacklist_from *@888.com blacklist_from *@msn.com blacklist_from *@cat.es blacklist_from *@pmail.gen.nz blacklist_from *@femenino.com blacklist_from *@infonium.com blacklist_from *@outblaze.com Примечание - bayes_path /etc/mail/spamassassin/bayes указывает что демон создаст три файла базы данных Bayesian фильтра для хранения создаваемых образчиков писем: /etc/mail/spamassassin/bayes_seen /etc/mail/spamassassin/bayes_journal /etc/mail/spamassassin/bayes_toks Параметры bayes_min_ham_num 1 bayes_min_spam_num 1 указывают, сколько чистых писем и писем со спамом должно накопится в Bayesian базе прежде чем демон будет пользоваться этой базой (по умолчания - 200 чистых и спама) Посмотреть базу можно командой sa-learn -dump auto_whitelist_path /etc/mail/spamassassin/auto-whitelist - Если Вы запустили демон с опцией -a то есть автообучения адресов, указывает, что демон создаст два файла базы данных адресов /etc/mail/spamassassin/auto-whitelist.dir /etc/mail/spamassassin/auto-whitelist.pag auto whitelisting вычисляет средний уровень оценки для каждого отправителя и прибавляет его к оценке очередного письма. Это позволяет не блокировать "благонадежных" отправителей если оценка отдельного письма вдруг превысит предел. Кстати, посмотреть базу адресов можно из директории с распакованным дистрибутивом командой ./tools/check_whitelist /etc/mail/spamassassin/auto-whitelist Создаем Bayes-базу sa-learn --rebuild Затем следует убедится, что владелец файлов в директории /etc/mail/spamassassin/ - это наш новый пользователь. Запускаем демон perl /usr/local/bin/spamd -d -a -u spamduser в почтовом логфайле должны появится соответствующие строки о запуске демона Проверка демона: spamassassin -D --lint необходимо внимательно изучить вывод этой команды. Если в Perl не установлен модуль DB_File, то мы не сможем пользоваться обучением фильтра, так что этот модуль стоит доставить. Если мы захотим пользоваться lookup-ом в централизованых спам-базах, нам так же понадобится модуль Net::DNS, качать [3]отсюда Запускаем связующий сервис spamass-milter Распаковываем, и компилируем и устанавливаем spamass-milter, затем, запускаем его spamass-milter -p /var/run/spamass.sock -f В почтовом логе должна появится соответствующая строка Обучение фильтра Образцы спама и благонадежных писем могут попадать в Bayesian базу двумя способами: * автоматически, с помощью Autolearn - когда очки письма (без учета очков за AWL, BAYES_XX, BLACKLIST и WHITELIST) выходят за пределы между auto_learn_threshold_nonspam и auto_learn_threshold_spam. Это можно узнать если в заголовке письма в поле X-Spam-Status: присутствует запись autolearn=spam или autolearn=ham. * вручную (или при помощи скрипта) командой sa-learn Для этого необходимо скормить письмо или целый ящик писем с помощью команы sa-learn: cat spam_letter | sa-learn -spam /usr/local/bin/sa-learn --spam --mbox /var/spool/mail/spam для спама, или cat good_letter | sa-learn -ham /usr/local/bin/sa-learn --ham --mbox /var/spool/mail/good для благонадежных писем. Примечание: если у Вас есть ящики пользователей, которые ушли из организации, в которые теперь падает лишь спам, очень удобно, например, по расписанию, скармливать их содержание в Bayesian базу Sendmail должен быть скомпилирован с поддержкой MILTER Проверяем командой echo a|sendmail -d | grep MILTER Если это не так, необходимо его перекомпилировать, добавив в файл соответствующий Вашей ОС (например, devtools/OS/Linux) строчку APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER') Конфигурация sendmail: Добавляем .mc файл INPUT_MAIL_FILTER(`spamassassin', `S=local:/var/run/spamass.sock, F=, T=C:15m;S:4m;R:4m;E:10m')dnl define(`confMILTER_MACROS_CONNECT',`b, j, _, {daemon_name}, {if_name},{if_addr}')dnl Sendmail откажется запуститься, если у all есть права записи на директорию, в которой находится сокет spamass-milter_а, то есть, на всякий случай chmod a-w /var chmod a-w /var/run Что дальше? Сам по себе spamassassin меняет текст писем, которые он считает спамом, на предупреждение и прикладывает оригинальное письмо в виде аттачмента. Пользователь волен воспользоваться фильтром в своем почтовом клиенте, например, чтобы автоматически переложить подозрительные письма в отдельную папку для дальнейшего изучения. Если мы хотим отфутболить эти письма, необходимо установить параметр spamass-milter -r NN при котором будет происходить отлуп Пример .mc файла: VERSIONID(`$Id: generic-linux.mc,v 8.1 1999/09/24 22:48:05 gshapiro Exp $') OSTYPE(linux)dnl INPUT_MAIL_FILTER(`spamassassin', `S=local:/var/run/spamass.sock, F=, T=C:15m;S:4m;R:4m;E:10m')dnl define(`confMILTER_MACROS_CONNECT',`b, j, _, {daemon_name}, {if_name}, {if_addr}')dnl . . MAILER(smtp)dnl . . Примечание: в третьей строке примера конфигурации параметр S - задает сокет для соединения с spamass-milter Параметр F - задает поведение sendmail когда ему не удается присоединится к сокету мильтера: отсутствие означает "игнорировать" (то есть сообщение обрабатывается sendmail-ом дальше), F=T - означает выдать ошибку 471 (временно недоступен) и обработка письма прекращается, F=R - отвергнуть письмо окончательно Параметр T - разные таймауты.. Пример скрипта для автозапуска /etc/rc.d/init.d/spamd #!/bin/sh # RETVAL=0 case "$1" in start) echo "Starting SPAMASSASSIN-MILTER connector: " /usr/local/sbin/spamass-milter -p /var/run/spamass.sock -f -r 5 # опция -r 5 задает уровень спама в сообщении # при превышении которого будет происходить отлуп echo -n $"Starting SPAMASSASSIN server: " perl /usr/local/bin/spamd -d -a -u spamduser echo ;; stop) echo "Stopping SPAMASSASSIN server: " i=`ps auxw | grep spamd | grep -v grep | grep usr | awk '{print $2}'` if [ `ps auxw | grep spamd | grep -v grep | grep -c usr` -ne 0 ]; then kill $i fi echo "Stopping SPAMASSASSIN-MILTER connector: " i=`ps auxw | grep spamass-milter | grep -v grep | awk '{print $2}'` if [ `ps auxw | grep spamass-milter | grep -v grep | grep -c milter` -ne 0 ]; then kill $i fi echo "10 seconds..." sleep 10 i=`ps auxw | grep spamass-milter | grep -v grep | awk '{print $2}'` if [ `ps auxw | grep spamass-milter | grep -v grep | grep -c milter` -ne 0 ]; then kill -9 $i fi echo ;; restart) $0 stop sleep 3 $0 start RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|restart}" exit 1 esac exit $RETVAL Plz замечания и вопросы сюда <vt@bykoff.com.> V b03 от 09.08.2005 FAQ > Большое спасибо, у меня вопросик, можно ли письма спамовые сохранять > где-нибудь как это делает amavis, а то бывает хорошее важное письмо > отлупывается. amavis'ом пользовался, не нравится, мильтером удобнее. У spamass-milter есть удобная опция -b somemailbox, вся спамерская почта идет в ящик somamailbox. Только ее нельзя использовать совместно с -r а также рекомендуется в /etc/mail/spamassassin/local.cf поставить опции "rewrite_subject 0" и "report_safe 1", чтобы спамовые сообщения не коверкались. А вообще, есть интересный набор скриптов, см. здесь: http://www.numbski.net/softs/quarantine.html

<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>

Обсуждение [ RSS ]
  • 1, iogan18tm (?), 13:25, 30/10/2005 [ответить]  
  • +/
    также есть статья по настройке этого дела без milter. Ибо большие они глюкало.
    http://www.brandonhutchinson.com/Using_SpamAssassin_on_a_Sendmail_relay.html
     
     
  • 2, Oleg (??), 20:00, 25/11/2005 [^] [^^] [^^^] [ответить]  
  • +/
    >также есть статья по настройке этого дела без milter. Ибо большие они
    >глюкало.
    spamass-milter - точно глюкодром...
    заменил на smf-spamd, полегчало :)


     

  • 3, Мария (?), 00:26, 05/10/2006 [ответить]  
  • +/
    Здравствуйте!
    Подскажите, пожалуйста, почему могут не работать прописанные для конкретного пользователя правила фильтрации почты (путь: /каталог пользователя/Maildir/~.spamassassin/user_prefs, пример правил: blacklist_from maria_h@tut.by
    whitelist_from *@mail.ru)? То есть при отправки письма с адреса maria_h@tut.by, например, оно принимается и доставляется получателю, не смотря на то, что данный адрес прописан в blacklist   Заранее спасибо.
     

    игнорирование участников | лог модерирования

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру