SpamAssassin
SpamAssassin – это написанный в perl (модуль Mail::SpamAssassin в CPAN) почтовый фильтр с открытым исходным кодом, предназначенный для выявления спама путем проведения эвристических проверок почтовых заголовков и текстов. Работа SpamAssassin основана на взаимодействии ключевых компонентов — оценочного сервиса, транспортного агента и базы шаблонов писем.
SpamAssassin может быть запущен как отдельное приложение, как часть другой программы, либо как клиент (spamc), который взаимодействует с демоном (spamd). Последний способ имеет более высокое быстродействие.
SpamAssassin поставляется с большим набором правил, которые определяют, какие письма являются спамом, а какие нет. Большинство правил основано на регулярных выражениях, которые сопоставляются телу или заголовку сообщения, но SpamAssassin также использует и другие методики. В документации SpamAssassin эти правила называются «tests».
Каждый тест имеет некоторую «стоимость». Если сообщение успешно проходит тест, эта «стоимость» добавляется к общему баллу. Стоимость может быть положительной или отрицательной, положительные значения называются «spam», отрицательные «ham». Сообщение проходит через все тесты, подсчитывается общий балл. Чем выше балл, тем больше вероятность, что сообщение является спамом.
У SpamAssassin'а есть настраиваемый порог, при превышении которого письмо будет классифицировано как спам. Обычно порог таков, что письмо должно подойти по нескольким критериям; срабатывания только одного теста недостаточно для превышения порога.
Установка
- Установка в 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 - универсальная 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
📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Китайский VPN Shadowsocks простая установка и настройка
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах