Установка и настройка rspamd в ispmanager 6
Rspamd является современной альтернативой SpamAssasssin: он более производительный, потребляет меньше оперативной памяти, поддерживает проверку наличия DKIM, SPF, DMARC, ARC, а также содержит встроенные модули для работы с черными списками (RBL), белыми списками и Байесовским обучением.
Подготовка
Перед установкой и настройкой Rspamd, необходимо удалить SpamAssassin.
Предварительно необходимо сделать резервную копию конфигурационных файлов SpamAssassin и Exim:
cp -ar /etc/spamassassin /root/backup/spamassassin_backup
cp -ar /etc/exim4 /root/backup/exim4_backup
cp -ar /etc/mail/spamassassin /root/backup/spamassassin_backup
cp -ar /etc/exim /root/backup/exim4_backup
Остановите и отключите автозапуск службы SpamAssassin:
systemctl stop spamassassin spamd
systemctl disable spamassassin spamd
Отключите SpamAssassin в панели в разделе Конфигурация ПО - Почтовый сервер.
Установка и настройка Rspamd
До установки необходимо добавить репозиторий Rspamd:
curl -fsSL https://rspamd.com/apt-stable/gpg.key | \
sudo gpg --dearmor -o /usr/share/keyrings/rspamd.gpg
echo "deb [signed-by=/usr/share/keyrings/rspamd.gpg] https://rspamd.com/apt-stable/ $(lsb_release -cs) main" | \
sudo tee /etc/apt/sources.list.d/rspamd.list
curl -sSL https://rspamd.com/rpm-stable/<centos-release>/rspamd.repo | \
sudo tee /etc/yum.repos.d/rspamd.repo
Вместо <centos-release> укажите значение для вашей ОС:
- centos-7 - для CentOS 7
- centos-8 - для AlmaLinux 8, CloudLinux 8, RockyLinux 8
- centos-9 - для AlmaLinux 9, CloudLinux 9
- centos-10 - для AlmaLinux 10, CloudLinux 10
Для работы Rspamd необходим Redis - установите Redis и Rspamd с помощью команды:
apt install rspamd redis-server -y
dnf install rspamd redis
Создаем файлы для локальных оверрайдов для Rspamd:
cd /etc/rspamd/local.d/
touch worker-normal.inc worker-proxy.inc redis.conf classifier-bayes.conf
В файл worker-normal.inc добавить строку:
bind_socket = "127.0.0.1:11333";
В файл worker-proxy.inc добавьте строки:
bind_socket = "127.0.0.1:11332";
milter = yes;
timeout = 120s;
upstream "local" {
default = yes;
self_scan = yes;
}
В файл redis.conf добавьте строку:
servers = "127.0.0.1";
В файл classifier-bayes.conf добавьте строки:
backend = "redis";
servers = "127.0.0.1";
autolearn = true;
Включите в автозагрузку и запустите Rspamd и сервер Redis:
systemctl enable --now rspamd redis-server
Убедитесь, что Rspamd прослушивает порт 11333:
ss -tlnp | grep 11333
Настройка Exim
Для Exim необходимо будет изменить параметры, отвечающие за интеграцию со SpamAssassin.
Первоначально убедитесь, что в конфигурационном файле Exim присутствует строка SA_ENABLE = yes:
cat /etc/exim4/exim4.conf.template | grep "SA_ENABLE = yes"
cat /etc/exim/exim.conf | grep "SA_ENABLE = yes"
Замените значение параметраspamd_address:
sed -i "s/spamd_address = 127.0.0.1 783/spamd_address = 127.0.0.1 11333 variant=rspamd/g" /etc/exim4/exim4.conf.template
sed -i "s/spamd_address = 127.0.0.1 783/spamd_address = 127.0.0.1 11333 variant=rspamd/g" /etc/exim/exim.conf
В конфигурационном файле замените полностью блок SA_ENABLE, который идет сразу после блока VIRUS_SCAN, на следующую конфигурацию:
.ifdef SA_ENABLE
warn
!authenticated = *
hosts = !+relay_from_hosts
spam = nobody:true/defer_ok
add_header = X-Spam-Score: $spam_score ($spam_bar)
add_header = X-Spam-Report: $spam_report
set acl_m4 = $spam_score_int
deny
condition = ${if and{{!eq{$acl_m4}{}}{>{$acl_m4}{SA_SCORE_REJECT}}}{yes}{no}}
message = Content analysis detected spam (from $sender_address to $recipients). Contact SA_ABUSE_ADDR.
.endif
Проверьте корректность синтаксиса конфигурации:
exim4 -C /etc/exim4/exim4.conf.template -bV
exim -C /etc/exim/exim.conf -bV
В случае вывода ошибок синтаксиса, проверьте конфигурационный на ошибки и исправьте их. Когда ошибок при проверке не будет, перезагрузите службу Exim:
systemctl restart exim4
systemctl restart exim
Байесовское обучение
Rspamd поддерживает байесовское обучение: оно позволяет Rspamd обучаться на реальных письмах, которые были определены и как спам (spam), и как проверенные письма (ham) - это улучшает и ускоряет фильтрацию спама.
Перед запуском обучения крайне рекомендуется накопить на хотя бы на одном из почтовых ящиков достаточно примеров разных писем для обучения.
Для запуска обучения на спаме используйте команду:
rspamc learn_spam /var/www/<имя_пользователя>/data/email/<почтовый_домен>/<имя_ящика>/.maildir/.Junk/cur/
Для запуска обучения на легитимных письмах используйте команду:
rspamc learn_spam /var/www/<имя_пользователя>/data/email/<почтовый_домен>/<имя_ящика>/.maildir/cur/
Чтобы проверить, были ли записаны данные в Redis, введите команду:
redis-cli keys 'RS*' | head -20
Посмотреть текущую статистику по обучению можно с помощью следующей команды:
rspamc stat | grep -A5 -i bayes