Установка и настойка spamassassion для фильтрации слов и выражений
Статья взята тут
Apache SpamAssassin - интеллектуальное программное приложение для фильтрации нежелательных писем от телемаркетеров и хакеров. Утилита работает поверх агента передачи почты (MTA), такого как Postfix, для классификации и блокировки нежелательных писем.
SpamAssassin является бесплатным и открытым исходным кодом и использует язык Perl для сканирования и идентификации заголовков сообщений, строк темы и текста, чтобы защитить сервер от спама.
В этом руководстве мы покажем вам, как установить SpamAssassin на ваш почтовый сервер, расположенный на сервере Ubuntu 18.04 ...
Считаем, что сервер Postfix уже установлен и настроен.
Содержание
- 1 Установка SpamAssassin
- 1.1 Шаг 1: Установка кода SpamAssassin
- 1.2 Шаг 2: Добавление пользователя системы SpamAssassin
- 1.3 Шаг 3: Редактирование файла конфигурации SpamAssassin
- 1.4 Шаг 4: Добавление SpamAssassin Правил для Спама
- 1.5 Шаг5: Редактирование Postfix
- 1.6 Шаг6: Перезапустите Postfix и SpamAssassin
- 1.7 Шаг7: Тестирование SpamAssassin
- 2 Фильтрация содержимого входящих сообщений в Postfix средствами Spamassassin с отправкой копии письма на нужный email
Установка SpamAssassin
Шаг 1: Установка кода SpamAssassin
Мы собираемся установить SpamAssassin с помощью команды apt-get. Перед этим давайте сначала обновим информацию о списке пакетов:
$ sudo apt update
Затем выполните команду ниже, чтобы установить SpamAssassin:
$ sudo apt install spamassassin spamc
Нажмите Y и нажмите Enter, когда будет предложено подтвердить установку.
Шаг 2: Добавление пользователя системы SpamAssassin
Для работы SpamAssassin требуется системный пользователь. Итак, мы собираемся добавить нового пользователя в систему, используя команду ниже:
$ sudo adduser spamd --disabled-login
Вам будет предложено ввести более подробную информацию о пользователе, просто нажмите клавишу Enter, чтобы пропустить детали. В конце приглашения вас попросят подтвердить, верны ли данные. Введите Y и нажмите Enter, чтобы продолжить
Шаг 3: Редактирование файла конфигурации SpamAssassin
После установки SpamAssassin, правим файл конфигурации, расположенный в /etc/default/spamassassin Мы собираемся отредактировать этот файл, используя нано-редактор, чтобы изменить несколько параметров.
$ sudo nano /etc/default/spamassassin
Сначала измените значение директивы ENABLED с 0 на 1:
Было:
ENABLED = 0
Стало:
ENABLED = 1
Далее вам нужно создать переменную с именем SAHOME со значением ниже:
Добавляем строку
SAHOME="/var/log/spamassassin/"
Найдите директиву OPTIONS и измените ее значение, как показано ниже:
Было:
OPTIONS="--create-prefs --max-children 5 --helper-home-dir"
Стало:
OPTIONS="--create-prefs --max-children 5 --username spamd --helper-home-dir /home/spamd/ -s /home/spamd/spamd.log"
Кроме того, чтобы SpamAssassin мог выбирать обновления, мы собираемся установить значение CRON в 1, чтобы утилита могла автоматически загружать новые правила.
Было:
CRON=0
Стало:
CRON=1
Нажмите CTRL + X, Y и Enter, чтобы сохранить файл
Шаг 4: Добавление SpamAssassin Правил для Спама
Далее мы добавляем некоторые правила для спама. Файл, который мы собираемся редактировать, находится по адресу /etc/spamassassin/local.cf. Итак, введите команду ниже, чтобы открыть файл с помощью редактора nano:
sudo nano /etc/spamassassin/local.cf
Раскомментируйте строки, показанные ниже, и измените значения, как указано
rewrite_header Subject [***** SPAM _SCORE_ *****] required_score 5.0 use_bayes 1 bayes_auto_learn 1 normalize_charset 1
И добавьте строку в начало файла
ok_locales ru en
Нажмите CTRL + X, Y и Enter, чтобы сохранить файл
Шаг5: Редактирование Postfix
Далее нам нужно настроить Postfix так, чтобы он мог направлять почту через SpamAssassin. Редактируем основной файл конфигурации Postfix:
$ sudo nano /etc/postfix/master.cf
Ищем строку:
smtp inet n - - - - smtpd
Меняем на:
smtp inet n - - - - smtpd -o content_filter=spamassassin
Пробел или табуляция перед -o - обязательны
Также вам нужно добавить строку ниже для настройки фильтра содержимого очереди:
spamassassin unix - n n - - pipe user=spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
Вторая и третья строки имеют обязательный отступ
Нажмите CTRL + X, Y и Enter, чтобы сохранить файл
Шаг6: Перезапустите Postfix и SpamAssassin
Чтобы изменения вступили в силу, вам нужно перезапустить Postfix и SpamAssassin, используя команды
sudo service postfix restart sudo service spamassassin restart
Шаг7: Тестирование SpamAssassin
Вы можете проверить, работает ли SpamAssassin, отправив электронное письмо на ваш сервер и изучив заголовки из почтового клиента.
В исходном коде письма в заголовках будет что то вроде этого
X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on ns1.volmed.org.ru X-Spam-Level: ** X-Spam-Status: No, score=2.0 required=5.0 tests=ADDRESS_FSB,HTML_MESSAGE, KHOP_HELO_FCRDNS,MIME_HTML_ONLY,SPF_HELO_NONE,TVD_SPACE_RATIO_MINFP, T_KAM_HTML_FONT_INVALID,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.2
Фильтрация содержимого входящих сообщений в Postfix средствами Spamassassin с отправкой копии письма на нужный email
Основа взята тут
В данной статье мы разберем, как в Postfix можно проверять содержимое письма на наличие определенных ключевых фраз. Если письмо не проходит проверку, то мы его будем дополнительно отправлять на нужный email. Предполагается, что на сервере используется Spamassassin. Он будет проверять вхождения ключевых слов и присваивать им метки. Затем Postfix будем проверять заголовки — если в заголовках будут метки от Spamassassin, то такие письма будем перенаправлять на нужный email адрес.
Настройка Spamassassin
Редактируем конфигурационный файл
$sudo nano /etc/mail/spamassassin/local.cf
Добавляем следующие строки:
include /usr/share/spamassassin/99_filter.cf
- в данном примере мы подгружаем файл 99_filter.cf, в котором будут наши ключевые фразы.
Создаем файл 99_filter.cf с ключевыми фразами:
$sudo nano /usr/share/spamassassin/99_filter.cf
И записываем туда код для примера
body FILTER_CONTROL /Bad Phrase|Sale|Бомба/i describe FILTER_CONTROL Bad Phrase description score FILTER_CONTROL 0.001
- в данном примере мы задали настройку для двух фраз — Bad Phrase, Sale и бомба. Если в контенте письма попадутся данные фразы, им будет добавлен заголовок X-Spam-Status, в который попадет метка FILTER_CONTROL. Также мы задаем небольшой бал СПАМа, без него метка добавляться не будет (если необходимо, чтобы письмо попадало в СПАМ, задаем большой бал).
Перезапускаем spamassassin:
systemctl restart spamassassin
Проверяем правильность наших правил
$spamassassin --lint
И если все ок, отправляем письмо на ящик, который обслуживается нашим почтовым сервером. В теле письма пишем одно из ключевых фраз. Открываем заголовки письма — среди них мы должны увидеть что-то на подобие:
X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,FILTER_CONTROL autolearn=no autolearn_force=no version=3.4.0
- как видим, в тексте есть наша метка FILTER_CONTROL.
Настройка Postfix
Открываем конфигурационный файл Postfix:
sudo nano /etc/postfix/main.cf
Правим строку или добавляем ее:
header_checks = regexp:/etc/postfix/header_checks
При чем я, данную строку добавил в основные настройки. При этом будет проверяться вся входящая и исходящая почта
Создаем или редактируем файл header_checks:
$sudo nano /etc/postfix/header_checks
И добавляем строку:
/^X-Spam-Status:.*FILTER_CONTROL.*/ BCC test@my_domain.ru * в данном примере мы ищем вхождения метки FILTER_CONTROL в заголовках письма, и если она есть, отправляем копию письма на адрес test@my_domain.ru.<br> Для работы действия '''BCC''' в '''header_checks''', необходим Postfix версии 3 и выше. Проверить версию установленного MTA можно командой <pre>$sudo postconf -d | grep mail_version
Проверяем настройку header_checks:
$sudo postmap -q "X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,FILTER_CONTROL" regexp:/etc/postfix/header_checks
Мы должны увидеть:
BCC security@dmosk.ru
Перезапускаем postfix:
$sudo systemctl restart postfix
Для проверки отправляем письмо с содержанием ключевой фразы — мы должны получить копию письма на другой ящик.
Как лучше проверять работу фильтров
1. Если фраз много, а это может случится, то для того, что бы понять, в какой фильтр попала фраза, например, при отладке, лучше все правила разбить на несколько. Например файл