Установка почтового сервера iRedMail на CentOS 7. Часть 2. Боремся со спамом

Установка почтового сервера iRedMail. Боремся со спамом

Спам (англ. spam) — массовая рассылка корреспонденции рекламного характера лицам, не выражавшим желания её получать. Распространителей спама называют спамерами.


Настройка Dovecot

Подключаем плагин imap_sieve в Dovecot

[root@localhost]# nano /etc/dovecot/dovecot.conf
protocol imap {
    mail_plugins = $mail_plugins imap_quota imap_acl imap_sieve
    ...
}
plugin {
   ...
    # Antispam
    sieve_plugins = sieve_imapsieve sieve_extprograms

    # From elsewhere to Spam folder
    imapsieve_mailbox1_name = Junk
    imapsieve_mailbox1_causes = COPY
    imapsieve_mailbox1_before = file:/var/vmail/sieve/report-spam.sieve

    # From Spam folder to elsewhere
    imapsieve_mailbox2_name = *
    imapsieve_mailbox2_from = Junk
    imapsieve_mailbox2_causes = COPY
    imapsieve_mailbox2_before = file:/var/vmail/sieve/report-ham.sieve

    sieve_pipe_bin_dir = /var/vmail/sieve
    sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.environment +vnd.dovecot.debug
}

Создаем скрипт report-spam.sieve

[root@localhost]# nano /var/vmail/sieve/report-spam.sieve
require ["vnd.dovecot.debug", "vnd.dovecot.pipe", "copy", "imapsieve", "environment", "variables"];

debug_log "report_spam executed ${1}";

if environment :matches "imap.user" "*" {
  # to use a global user: 
  #set "username" “amavis”;
  set "username" "${1}";
}

pipe :copy "sa-learn-spam.sh" [ "${username}" ];

Создаем скрипт report-ham.sieve

[root@localhost]# nano /var/vmail/sieve/report-ham.sieve
require ["vnd.dovecot.debug", "vnd.dovecot.pipe", "copy", "imapsieve", "environment", "variables"];

debug_log "report_ham executed ${1}";

if environment :matches "imap.mailbox" "*" {
  set "mailbox" "${1}";
}

if string "${mailbox}" "Trash" {
  stop;
}

if environment :matches "imap.user" "*" {
  # to use a global user: 
  #set "username" “amavis”;
  set "username" "${1}";
}

pipe :copy "sa-learn-ham.sh" [ "${username}" ];

Создаем исполняемые sa-learn файлы

[root@localhost]# nano /var/vmail/sieve/sa-learn-spam.sh 
exec /usr/bin/sa-learn -u ${1} --spam
[root@localhost]# nano /var/vmail/sieve/sa-learn-ham.sh
exec /usr/bin/sa-learn -u ${1} --ham

Меняем владельца файлов на vmail и делаем файлы исполняемые

[root@localhost]# chown vmail:vmail /var/vmail/sieve/report-*
[root@localhost]# chown vmail:vmail /var/vmail/sieve/sa-learn-*
[root@localhost]# chmod +x /var/vmail/sieve/report-*
[root@localhost]# chmod +x /var/vmail/sieve/sa-learn-*

Настройка SpamAssassin

Настраиваем хранение базы SpamAssasin в MySQL, редактируем файл local.cf

[root@localhost]# nano /etc/mail/spamassassin/local.cf
use_bayes          1
bayes_auto_learn   1
bayes_auto_expire  1

# Store bayesian data in MySQL
bayes_store_module Mail::SpamAssassin::BayesStore::MySQL
bayes_sql_dsn      DBI:mysql:sa_bayes:127.0.0.1:3306

# Store bayesian data in MySQL
#bayes_store_module Mail::SpamAssassin::BayesStore::PgSQL
#bayes_sql_dsn      DBI:Pg:database:sql_server:sql_port
#
bayes_sql_username %user%
bayes_sql_password %password%

где:
%user% — имя пользователя, который имеет доступ к базе sa_bayes
%password% — пароль
Эти данные мы заведем чуть позже

Проверим версию SpamAssassin и скачаем схему базы spamassassin

[root@localhost]# spamassassin -V
SpamAssassin version 3.4.0
  running on Perl version 5.16.3
[root@localhost]# cd /home
[root@localhost]# wget http://svn.apache.org/repos/asf/spamassassin/tags/spamassassin_release_3_4_0/sql/bayes_mysql.sql

Отредактируем файл bayes_mysql.sql
В нем надо varchar(200) поменять на varchar(191), иначе при добавлении схемы в базу произойдет не полностью

Создадим базу sa_bayes, пользователя и пароль

[root@localhost]# mysql -uroot -p
mysql> CREATE DATABASE sa_bayes;
mysql> USE sa_bayes;
mysql> SOURCE /home/bayes_mysql.sql;
mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON sa_bayes.* TO %user%@localhost IDENTIFIED BY '%password%';
mysql> FLUSH PRIVILEGES;
mysql> EXIT;

Не забываем менять %user% и %password% на свои значения

Еще одна настройка Dovecot

Эта настройка нужна, чтобы письма, помеченные в Thunderbird меткой spam автоматически добавлялись в базу SpamAssassin

Редактируем файл dovecot.sieve

[root@localhost]# nano /var/vmail/sieve/dovecot.sieve
require ["fileinto", "vnd.dovecot.debug", "vnd.dovecot.pipe", "copy", "environment", "variables"];

# rule:[Move Spam to Junk Folder]
if header :is "X-Spam-Flag" "YES"
{
    fileinto "Junk";
    set "username" "amavis";
    pipe :copy "sa-learn-spam.sh" [ "${username}" ];
}

У нас в организации в основном используется pop3 протокол (с целью не загромождать свободное место на сервер), по-этому я отключил автоматическое перемещение писем, помеченных SPAM, в каталог почтового ящика Спам, т.к. pop3 не умеет работать с каталогами. Для отключения перемещения надо закомментировать строку:

#    fileinto "Junk";

Перезапускаем Dovecot и Amavis

[root@localhost]# systemctl restart  dovecot
[root@localhost]# systemctl restart amavisd

Дополнительные настройки

Так же. для того, что бы pop3-пользователи могли участвовать в процессе обучения на spam/ham было заведено 2 почтовых ящика:
spam@itdraft.ru — ящик для перенаправления спама
ham@itdraft.ru — ящик для писем, которые ошибочно были помечены как спам

Добавим в сrontab задания на обучение spamassassin и очистку почтовых ящиков, указанных выше:

[root@localhost]# nano /var/spool/cron/root
# SpamAssassin learn spam at 00:05 from mailbox spam@itdraft.ru
5   0   *   *   *   /usr/bin/sa-learn --spam /var/vmail/vmail1/itdraft.ru/s/p/a/spam-2019.02.01.13.15.26/Maildir/new/

# SpamAssassin learn ham at 00:06 from mailbox ham@itdraft.ru
6   0   *   *   *   /usr/bin/sa-learn --ham /var/vmail/vmail1/itdraft.ru/h/a/m/ham-2019.02.01.13.16.51/Maildir/new/

# Deleete messages from spam@itdraft.ru and ham@itdraft.ru
15  0   *   *   *   /bin/rm -rf /var/vmail/vmail1/itdraft.ru/s/p/a/spam-2019.02.01.13.15.26/Maildir/new/*
17  0   *   *   *   /bin/rm -rf /var/vmail/vmail1/itdraft.ru/h/a/m/ham-2019.02.01.13.16.51/Maildir/new/*

В данный момент механизм обучения через пересылки писем уже не используется, т.е. spamassasin обучается за счет того, что вся почта с несуществующих ящиков и с алиаса info@itdraft.ru перенаправляется в ящик postmaster@itdraft.ru, а этот почтовый ящик подключен в thunderbird по протоколу imap. Thunderbird сам автоматически помечает спам-письма соответствующей меткой, и благодаря этой пометки происходит обучение spamassassin

Настройки Amavis

Для того, чтобы Amavis не удалял письма помеченные в теме письма как spam, отредактируем файл amavisd.conf

[root@localhost]# nano /etc/amavisd/amavisd.conf
# SPAM
$final_spam_destiny = D_BOUNCE

Для того, чтобы активировать обучение SpamAssassin в Amavis, отредактируем файл amavisd.conf

[root@localhost]# nano /etc/amavisd/amavisd.conf
$sa_tag_level_deflt  = -999;
$sa_tag2_level_deflt = 5;
$sa_kill_level_deflt = 6.3;
$sa_dsn_cutoff_level = 10;

Перезапускаем Amavis

[root@localhost]# systemctl restart amavisd

Максим Макаров

У блога появился хостинг, его любезно предоставила компания Облакотека. Облакотека - облачные сервисы для создания и управления виртуальной ИТ-инфраструктурой.
Если вам понравился мой блог и вы хотели бы видеть на нем еще больше полезных статей, большая просьба поддержать этот ресурс.

Оцените автора
IT Draft
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.