Все о Linux. LinuxRSP.Ru


Cвежие новости Linux и BSD, анонсы статей и книг прямо в почтовый ящик!
Подписаться письмом


 Сегодняшние новости:

25 лет исполнилось ядру Linux

Релиз KDevelop 5.0

Oracle открывает код JDK9 для ARM

Выпущен Timewarrior 1.0.0

Релиз Android 7.0

Percona Memory Engine для MongoDB на базе WiredTiger

PowerShell открыт и доступен для Linux

Форк TrueCrypt: VeraCrypt 1.18

Релиз Snapcraft 2.14

Релиз Go 1.7

Стабильный выпуск рабочего стола Lumina

Вышла первая версия аналога OpenCV - DCV 0.1

Выпуск минималистичной программы для мониторинга jsonmon 3

В MIT разработали новый язык программирования

Первый релиз Qt5Gtk2

Godot 2.1 - новая версия открытого игрового движка

Свободная цифровая станция звукозаписи: Ardour 5.0

Обновление SkypeWeb Plugin for Pidgin

Вышла версия 3.0 Android File Transfer для Linux (и для OS X)

Программный аналог MIDI-контроллера для создания музыки: Launchpadd v1.3

Mozilla спонсирует поддержку Python 3.5 в PyPy

Ef 0.08 - программа для моделирования динамики заряженных частиц

Обновление текстового редактора TEA до версии 42.0.0

Релиз OpenOrienteering Mapper 0.6.4

Вышли Guix и GuixSD 0.11

Релиз Opera 39

Выпуск LibreOffice 5.2

В OpenSSH обнаружены и устранены некоторые уязвимости

Эмулятор FCEUX 2.2.3

Компания Билайн переходит на российскую СУБД с открытым исходным кодом Tarantool

Google

 Новые статьи :

Утилиты для восстановления потерянных данных в Linux

Лучшие файловые менеджеры для Android

20 лучших бесплатных книг о Linux

Как сгенерировать открытый/закрытый SSH-ключ в Linux

Grive - клиент Google Drive для Linux с открытым исходным кодом

Протокол IPv6: варианты подключения

Сервер из образа: DHCP + TFTP + Initrd + OpenVZ

Обзор веб-панелей управления хостингом

Приёмы работы с Vim

Nginx как Reverse Proxy для сайта, использующего SSL

Разработка модулей ядра Linux

Мониторинг нагрузки http-сервера Apache 2

Перевод комментариев к файлу конфигурации Squid

Решение проблем при использовании "1c предприятие" 8.2 в Linux

Advanced Bash-Scripting Guide Искусство программирования на языке сценариев командной оболочки







Rambler's Top100





 
 

From: Алексей Цыбань <leshats@od.anything3d.com.
Newsgroups: email
Date: Mon, 23 May 2005 18:21:07 +0000 (UTC)
Subject: Установка и настройка SpamAssassin на сервере с sendmail и cyrus-imap.


Введение

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

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

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

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

Список всех положительных тестов помещается в заголовок сообщения
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 отсюда http://savannah.nongnu.org/projects/spamass-milt/

      ./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%
спама. Ложные срабатывания бывают очень редко.


Источник

      

Связь | О проекте LinuxRSP | Реклама | О Linux
© 1999-2017 LinuxRSP