Главная
Поиск
Новости Open Source
Новости железа
Новости софта
Новости безопасности
СТАТЬИ:______________
Безопасность
Интернет
Windows
Linux
Дистрибутивы Linux
FAQ:_________________
Linux начинающим
Общий доступ в Интернет
Электронная почта
Организация LAN
Карта сайта


Установка и настройка SpamAssassin
Написал Administrator   
29.08.2007

From: Алексей Цыбань <
 Этот адрес e-mail защищен от спам-ботов. Чтобы увидеть его, у Вас должен быть включен Java-Script
 
Newsgroups: email
Date: Mon, 23 May 2005 18:21:07 +0000 (UTC)
Subject: Установка и настройка SpamAssassin на сервере с sendmail и cyrus-imap.


Введение

Недавно один пользователь пожаловался мне, что получает в день 150-200
спамерских писем и 10-20 писем по работе. В таком случае без
работоспособной системы фильтрации спама обойтись невозможно.

В данной статье описывается установка системы   
на сервер, на котором уже работает связка sendmail + cyrus-imap.

Для связи sendmail и spamassassin будет использован 

SpamAssassin проделывает над полученным почтовым сообщением ряд тестов.
Каждый тест имеет свою весовую оценку. Оценки всех положительных тестов
складываются и результат сообщается пользователю. Перечень всех тестов и
оценок можно посмотреть здесь  

Список всех положительных тестов помещается в заголовок сообщения
X-Spam-Report.

Система настраивается так, чтобы пропускать всю почту, за исключением
вирусов. Спам только помечается и каждый пользователь сам решает, что с
ним делать дальше.


Установка

Рекомендуется sendmail 8.12.+. Sendmail должен быть собран с поддержкой milter.
Описанные команды и файлы конфигурации верны для SpamAssaissin 3.0.3

Я устанавливал SpamAssassin в Gentoo и в Slackware. Для Gentoo все просто:

       emerge -pv mail-filter/spamassassin


И поправим /etc/conf.d/spamd:

       SPAMD_OPTS="-m 30 -u nobody"
       PIDFILE="/etc/mail/spamassassin/spamd.pid"



И еще добавим spamd в автозапуск:

       rc-update add spamd default


Для Slackware воспользуемся CPAN:

      perl -MCPAN -e shell                    [as root]
      o conf prerequisites_policy ask
      install Digest::SHA1
      install HTML::Parser
      install Storable
      install MIME::Base64
      install DB_File
      install Net::DNS
      install Mail::SpamAssassin
      quit


И добавим в стартовые скрипты где-то перед sendmail: 

      /usr/bin/spamd -m 20 -u nobody -r /etc/mail/spamassassin/spamd.pid -d



Установка spamass-milter.

Для Gentoo все опять не сложно:

      emerge -pv spamass-milter
      rc-update add spamass-milter default


Файл конфигурации оставляем как есть.

Для Slackware скачаем spamass-milter отсюда 

      ./configure --prefix=/usr 
      make 
      su 
      make install


И в стартовые скрипты между spamd и sendmail добавляем.
  
      /usr/sbin/spamass-milter -p /var/run/spamass-milter.sock -f



Теперь правим /etc/spamassassin/local.cf. Рекомендую прочитать
документацию по нему. Мой вариант привожу ниже.

        trusted_networks 192.168/16 127/8
        trusted_networks 127.
        whitelist_from localhost

        #Добавляет строку к теме если письмо признано спамом.
        rewrite_header Subject ****SPAM*(_SCORE_)****

        #Добавляет развернутый рапорт в заголовок X-Spam-Report
        add_header all Report _REPORT_

        #Порог срабатывания для принятия решения спам - не спам. Для почтового
        #сервера разработчики рекомендуют 8.0 - 10.0. Для отдельных пользователей
        #можно использовать 5.0 и даже 4.0
        required_hits           8.0
        report_safe             0
        use_bayes               1
        bayes_auto_learn        1
        skip_rbl_checks         0
        #DCC Razor и прочие я пока не использую, и без них хорошо работает 
        use_razor2              0
        use_dcc                 0
        use_pyzor               0
        use_auto_whitelist              1
        auto_whitelist_path             /etc/mail/spamassassin/auto_whitelist
        bayes_path                              /etc/mail/spamassassin/bayes


Поправим права:

      chown nobody /etc/mail/spamassassin


В sendmail.mc добавляем:

INPUT_MAIL_FILTER(`clmilter',`S=local:/var/clamav/clmilter.sock, F=T, T=C:1m;S:5m;R:5m;E:1h')
INPUT_MAIL_FILTER(`spamassassin', `S=local:/var/run/spamass-milter.sock, F=T, T=C:15m;S:4m;R:4m;E:10m')
define(`confMILTER_MACROS_CONNECT',`b, j, _, {daemon_name}, {if_name}, {if_addr}')



Clmilter - это проверка на вирусы через Clamav.

Пересобираем sendmail.mc. 

Запускаем spamd, spamass-milter. Проверяем, что они запустились.
Рекомендую добавить к ключам spamd -D и внимательно прочитать его
отладочные логи. Логи его по умолчанию попадают в maillog.

Если все в порядке, перезапускаем sendmail. 

Внимательно смотрим в maillog, убеждаемся, что почта ходит. Убеждаемся,
что SpamAssassin работает.

Рекомендую проверить права на файлы bayes_* в /etc/mail/spamassassin.
Пользователь nobody должен иметь права на запись.


Cyrus

Для того, чтобы все желающие могли поучаствовать в обучении байесовского
фильтра создаем на IMAP сервере две общие папки. IS_Spam и NOT_Spam

      cyradm --user cyrus localhost
      cm IS_Spam
      sam IS_Spam anyone write
      cm NOT_Spam
      sam NOT_Spam anyone write


В файл /root/.fetchmailrc добавляем:
  
      poll localhost proto IMAP
      user nobody pass nobodypass


А в crontab пользователя root:

      20 * * * * /usr/bin/fetchmail -a -s -n --folder ForSpam -m '/usr/bin/sa-learn --spam' -u nobody localhost
      30 * * * * /usr/bin/fetchmail -a -s -n --folder NOT_Spam -m '/usr/bin/sa-learn --ham' -u nobody localhost



Для автоматического перемещения спама в папку SPAM каждому желающему
можно настроить sieve скрипт. Рекомендую воспользоваться SquirrelMail
веб-интерфейсом к почте и плугином для управления sieve к нему. Очень
удобный и понятный интерфейс. 

Сам sieve скрипт для выглядит примерно так:

      require ["fileinto"];
      if
      header :contains "X-Spam-Level" "******"
      {
      fileinto "INBOX.SPAM";
      stop;
      }


Фильтровать удобнее всего по заголовку X-Spam-Level. В нем количество
звездочек соответствует целой части спам-оценки.

В моем ведении оказались два почтовых сервера разных организаций,
которые являлись релеями друг для друга. SpamAssassin стоял на обоих и в
логах часто стали появляться строки типа этой:

      Milter change: header  X-Spam-Level: from ************* to *



Естественно, спам с сильно пониженной оценкой проходил через фильтры и
вызывал неудовольствие пользователей. Разбор логов показал, что
приходящий с нормального релея спам проходит проверки на DNSBL, из-за
чего общая спам-оценка может сильно понизится.

Пришлось добавить в команду запуска spamass-milter ключ -i <ip-addr>.
Теперь почтовый сервер не перепроверяет на спам почту, приходящую от
своего релея. 

      /usr/sbin/spamass-milter -p /var/run/spamass-milter.sock -f -i IP.OFF.2ND.REL


Для взаимной синхронизации баз байесовского фильтра между серверами я
использовал команды в crontab:

      20 1 * * * /usr/bin/fetchmail -a -s -n --folder ForSpam -m '/usr/bin/sa-learn --spam' -u nobody remote.server
      30 1 * * * /usr/bin/fetchmail -a -s -n --folder NOT_Spam -m '/usr/bin/sa-learn --ham' -u nobody remote.server


И запись в  файл /root/.fetchmailrc:

      poll remote.server proto IMAP
      user nobody pass nobodypass 
      keep



Хотя при большом количестве спама, а главное, при большой активности
пользователей, такой подход может привести к заметному росту трафика
между серверами.

В описанной конфигурации спам-оценку больше 5.0 получает около 80%
спама. Ложные срабатывания бывают очень редко.



 
< Пред.   След. >





Rambler's Top100 Рейтинг@Mail.ru



Все для системных администраторов © 2013

Dresses - md5 - Celebrity - fashion