Инструменты пользователя

Инструменты сайта


Боковая панель

Связь

spamassassin

SpamAssassin

SpamAssassin – это написанный в Perl почтовый фильтр с открытым исходным кодом, предназначенный для выявления спама путем проведения эвристических проверок почтовых заголовков и текстов.

Установка

  • Установка в Ubuntu.
    # aptitude install spamassassin

    Редактируем файл /etc/default/spamassassin, разрешаем запуск spamd

    # Change to one to enable spamd
    ENABLED=1

    Чтобы получать новейшие правила фильтрации спама, можно включить автоматическое обновление правил

    CRON=1

    Запускаем и смотрим лог

    # /etc/init.d/spamassassin start
    # tail -f /var/log/mail.log | grep spam

Отладка

  • Отладка spamassassin. Проверить все ли модули загружены. Для того чтобы команда вывела только проблемные строки нужно запустить ее без -D (просто spamassassin –lint)
    $ spamassassin -D --lint
    ...
    
    dbg: diag: [...] module installed: IO::Zlib, version 1.10
    dbg: diag: [...] module not installed: Digest::SHA1 ('require' failed)
    dbg: diag: [...] module not installed: Geo::IP ('require' failed)
    dbg: diag: [...] module not installed: Razor2::Client::Agent ('require' failed)
    dbg: diag: [...] module not installed: IO::Socket::IP ('require' failed)
    dbg: diag: [...] module not installed: Encode::Detect ('require' failed)
    dbg: diag: [...] module not installed: Net::Patricia ('require' failed)
    ...

    Нужно установить недостающие модули (пример установки для Ubuntu 14.04.1 LTS)

    # aptitude install perl-doc libgeo-ip-perl libnet-patricia-perl
     razor pyzor libio-socket-ip-perl libencode-detect-perl

    Если искомого модуля нет в систему установим из CPAN, например модуль Digest::SHA1. И перегрузим

    # service spamassassin restart

    Пример поиска в отладочном выводе spamassassin

    # spamassassin -D --lint 2>&1 | grep -i failed

Настройка

  • Встроенная документация
    # perldoc Mail::SpamAssassin::Conf
  • Spamassassin автоматически определяет общие компоненты и использует их, если они присутствуют. Это означает, что нет необходимости настраивать pyzor и razor. Using Pyzor Welcome to Pyzor’s documentation!
    # su - amavis -c 'echo "test" | spamassassin -D pyzor 2>&1 | less'
    dbg: pyzor: network tests on, attempting Pyzor
    dbg: pyzor: pyzor is available: /usr/bin/pyzor
    dbg: pyzor: opening pipe: /usr/bin/pyzor check < /tmp/.spamassassin26391d9kBBgtmp
    dbg: pyzor: [26394] finished: exit 1
    dbg: pyzor: check failed: no response

    Строка check failed: no response говорит о том что проблем с письмом нет.

  • Для настройки используется только файл /etc/spamassassin/local.cf
    local.cf
    rewrite_header Subject *****SPAM*****
    # report_safe (0|1|2)(default: 1)
    report_safe 0
    # trusted_networks 212.17.35.
    # lock_method flock
    required_score 5.0
     
    use_bayes 1
    bayes_auto_learn 1
     
    # отключить проверку сообщений по блэклистам (1-отключить, 0- включить)
    skip_rbl_checks         1
    # pyzor 0- disable
    use_pyzor               1
    # razor2 0- disable
    use_razor2              0
     
    # Whitelist and blacklist addresses are now file-glob-style patterns, so
    # "friend@somewhere.com", "*@isp.com", or "*.domain.net" will all work.
    # whitelist_from        someone@somewhere.com
  • Проверить синтаксис файла local.cf можно командой
    # spamassassin --lint
  • Отключаем проверку SPF в файле /etc/spamassassin/init.pre, так как у меня Postfix проверяет SPF еще в момент SMTP диалога при помощи postfix-policyd-spf-python.
    #loadplugin Mail::SpamAssassin::Plugin::SPF

Обучение

  • Для обучения spamassassin применяется утилита sa-learn. Чтобы обучить программу письмами со спамом выполняется:
    sa-learn --spam путь к каталогу писем со спамом

    Для обучения программы нормальными письмами:

    sa-learn --ham путь к каталогу писем без спама
  • При использовании amavisd-new. Посмотреть количество изученных писем.
    # su - amavis -c 'sa-learn --dump magic'

    Обучение SPAM должен происходить с правами пользователя от имени которого запущен amavisd-new. Ключ –no-sync используется потому что amavis сам на cron синхронизирует

    # su - amavis -c 'sa-learn --no-sync --spam /tmp/.Spam/cur'
  • Пример скрипт для обучения spamassassin из папки пользователя.
    sa-learn_amavis.sh
    #!/bin/bash
     
    SPAMUSERDIR='/var/vmail/username/.Spam/cur/*'
    SPAMLEARNDIR='/tmp/SPAM'
     
    /bin/mkdir $SPAMLEARNDIR
    /bin/mv $SPAMUSERDIR $SPAMLEARNDIR
    /bin/chown -R amavis:amavis $SPAMLEARNDIR
     
    /bin/su - amavis -c 'sa-learn --dump magic'
    /bin/su - amavis -c "sa-learn --no-sync --spam $SPAMLEARNDIR"
    /bin/su - amavis -c 'sa-learn --dump magic'
     
    /bin/rm -rf /tmp/SPAM
     
    #service spamassassin reload

Проверка работы

В дистрибутив SpamAssassin входят типовые файлах, с помощью которых можно проверить работает ли программа. Тестируют SpamAssassin стандартной сигнатурой GTUBE.

# spamassassin -t < sample-spam.txt > spam.out

spamassassin.txt · Последние изменения: 2015/02/13 07:45 (внешнее изменение)