Что такое Rspamd и как настроить антиспам-фильтр
Rspamd — это современный и высокопроизводительный антиспам-фильтр для почтовых серверов, работающий на основе машинного обучения, правил и множества проверок. Он заменяет или дополняет традиционные решения вроде SpamAssassin, обеспечивая более быструю обработку и точную фильтрацию спама.
Основные возможности Rspamd
- Высокая производительность: способен обрабатывать десятки тысяч писем в секунду.
- Модульная система: проверка DKIM, SPF, DMARC, URL, текстовых шаблонов, Bayesian-фильтров.
- Машинное обучение: позволяет фильтру адаптироваться под типичный трафик вашей почты.
- Интеграция с MTA: Postfix, Exim, OpenSMTPD и др.
- Веб-интерфейс: статистика, отчёты и ручное управление фильтрами через Rspamd Web UI.
Как Rspamd работает
- Приём письма: почтовый сервер передаёт сообщение на проверку Rspamd.
- Анализ письма:
- Проверка SPF/DKIM/DMARC.
- Анализ заголовков, текста и URL.
- Проверка по черным спискам и локальным правилам.
- Оценка риска: Rspamd присваивает письму скор (score), показывающий вероятность спама.
- Действие: в зависимости от настроек, письмо может быть:
- доставлено,
- помечено как спам (например, добавлением заголовка
X-Spam-Flag
), - отброшено или помещено в quarantine.
Установка Rspamd (Ubuntu/Debian)
sudo apt update
sudo apt install rspamd
sudo systemctl enable --now rspamd
После установки сервис будет слушать порт 11333 для веб-интерфейса и порт 11332 для локального MTA.
Интеграция с Postfix
Простейшая интеграция через milter:
- В
main.cf
добавляем:
smtpd_milters = inet:127.0.0.1:11332
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
milter_protocol = 6
- Перезапускаем Postfix:
sudo systemctl restart postfix
Теперь весь входящий и исходящий трафик проходит через Rspamd.
Настройка правил и порогов
- Score threshold — значение, при котором письмо считается спамом.
- Custom rules — свои фильтры на основе регулярных выражений, URL и заголовков.
- Bayesian learning — тренировка фильтра на вашей почте для уменьшения ложных срабатываний.
Стандартные правила RSPAMD:
actions {
reject = 15;
add_header = 6;
greylist = 4;
}
Это действия по умолчанию. Если Rspamd присвоит письму оценку 15 и выше, оно будет отклонено сразу при приёме (аналогично правилу Gtube из предыдущего примера).
Если оценка выше 6, то в заголовки письма будет добавлена строка:
X-Spam: Yes
Так почтовое ПО сможет распознать спам и, например, переместить письмо в отдельную папку.
Если оценка выше 4, сработает greylisting — механизм временного отклонения письма с кодом 4.x.x. Сервер-получатель ждёт, повторит ли отправитель попытку. Через несколько минут greylisting примет письмо. Идея в том, чтобы отсеять письма от систем без очереди отправки, которые не пытаются повторно доставить письмо.
Если вы хотите изменить эти значения по умолчанию, создайте новый файл /etc/rspamd/local.d/actions.conf
и впишите туда нужные вам значения.
Символы и заголовки Rspamd
Rspamd анализирует письмо и присваивает ему баллы (score) за различные проверки. Каждая проверка может добавлять символ (symbol) и соответствующий балл.
Как эти символы отображаются в письме
- Заголовок
X-Spam
илиX-Spam-Report
Rspamd может добавлять полное объяснение, например:
X-Spam-Flag: YES
X-Spam-Score: 16.00 / 15.00
X-Spam-Report:
* FROM_NO_DN(0.00)[]
* RCVD_COUNT_ZERO(0.00)[0]
* R_DKIM_NA(0.00)[]
* FUZZY_DENIED(12.00)[1:19305c7fdd:1.00:bin,1:35699594fd:0.91:txt]
* RBL_SENDERSCORE(2.00)[55.181.23.94.bl.score.senderscore.com]
- Использование в логах и интерфейсе
- В веб-интерфейсе Rspamd эти символы отображаются с подробной информацией о проверках.
- Логи Rspamd (
/var/log/rspamd/rspamd.log
) также содержат эти символы, чтобы можно было анализировать спам-поток.
Практический совет
- Символы помогают понять, почему письмо набрало высокий score.
- Можно настроить отдельные действия для конкретных символов, например:
- игнорировать низкоопасные;
- повышать вес для FUZZY_DENIED или RBL_SENDERSCORE.
- Это особенно полезно для обучения Bayesian-фильтра и тонкой настройки антиспам-политики.
Примеры символов
Символ | Пример балла | Описание | Рекомендация |
---|---|---|---|
FROM_NO_DN | 0.00 | Адрес отправителя без доменного имени | Обычно безопасно, можно игнорировать |
RCVD_COUNT_ZERO | 0.00 | Нет заголовков Received или их ноль | Часто спам, но иногда легитимные автоответы |
R_DKIM_NA | 0.00 | DKIM-подпись отсутствует | Усилить для критичных доменов, но не всегда спам |
FUZZY_DENIED | 12.00 | Письмо совпадает с известным спамом в Fuzzy DB | Высокий риск — обычно увеличивает score и ведёт к reject |
RBL_SENDERSCORE | 2.00 | IP-адрес отправителя в черном списке RBL | Средний/высокий риск — учитывайте при настройке порогов |
SPF_FAIL | 5.00 | SPF не пройден | Можно повышать score, особенно для внешних доменов |
BAYES_SPAM | 3.00 | Bayesian-анализ классифицировал как спам | Легко настраивается через обучение фильтра |
HTML_MIME_ONLY | 1.50 | Письмо только в HTML без текста | Дополняет другие правила, повышает score |
DKIM_SIGNED | -0.50 | Письмо корректно подписано DKIM | Снижает score, сигнал доверия |
SPF_PASS | -0.50 | SPF пройден успешно | Снижает score, сигнал доверия |
Веб-интерфейс Rspamd
Веб-интерфейс доступен по http://ваш-сервер:11334. Позволяет:
- просматривать статистику за день/неделю;
- вручную обучать Bayesian-фильтр;
- просматривать письма, помеченные как спам;
- настраивать правила и модули.
Мониторинг и логирование
- Логи Rspamd:
/var/log/rspamd/rspamd.log
- Метрики Prometheus: можно подключить к Grafana для визуализации активности антиспама.
- Mail notifications: отправка отчётов о заблокированных письмах.
Советы по эффективности
- Обязательно включите SPF, DKIM и DMARC — Rspamd использует их для оценки доверия отправителя.
- Тренируйте Bayesian-фильтр на вашей почте: это снижает false positives.
- Используйте greylisting аккуратно, чтобы не задерживать легитимные письма.
- Следите за нагрузкой и статистикой — корректируйте пороги под реальный поток.
Настроить мониторинг за 30 секунд
Надежные оповещения о даунтаймах. Без ложных срабатываний