Защита почтового сервера от спама — одна из самых важных задач для любого администратора. Особенно, если вы настраиваете собственный mail-сервер на VPS. В этой статье я расскажу, как я внедрила мощную систему фильтрации спама с помощью Rspamd и Postfix, что учла по ходу настройки и какие нюансы могут подстерегать вас на практике.
Зачем нужен антиспам-фильтр?
Если у вас нет защиты, почтовый сервер моментально становится жертвой:
- рассылки спама с вашей стороны (если скомпрометирован аккаунт),
- приёма тысяч мусорных писем (если открыт вход),
- попадания в блэклисты, после чего письма вообще не доставляются.
Поэтому связка Postfix + Rspamd — это почти must-have. Особенно если вы хотите избежать сложностей со старыми решениями вроде SpamAssassin. Я пробовала оба варианта — разница в скорости, точности и гибкости просто колоссальная.
Почему Rspamd, а не SpamAssassin?
| Параметр | Rspamd | SpamAssassin |
|---|---|---|
| Скорость | Высокая, на C языке | Низкая, на Perl |
| Обновления | Активно поддерживается | Обновляется медленно |
| Расширяемость | Lua-скрипты, интеграция с Redis | Ограничена |
| UI/Панель управления | Есть (Web-интерфейс) | Нет |
| Поддержка DKIM/ARC | Встроена | Требует сторонние модули |
Что нужно для старта?
- VPS с Linux (у меня — Debian 12, подойдёт и Ubuntu 22.04)
- Установленный и настроенный Postfix (MTA)
- Доступ по SSH с root-доступом
- Желание копаться в конфигах 😉
Установка Rspamd
Я ставила Rspamd из официальных репозиториев:
# Добавим репозиторий Rspamd echo "deb [arch=amd64] http://rspamd.com/apt/debian bookworm main" | tee /etc/apt/sources.list.d/rspamd.list curl -1sLf 'https://rspamd.com/apt-stable/gpg.key' | apt-key add - # Установка apt update && apt install rspamd redis-server -y
Rspamd будет использовать Redis для кэширования. Без него часть функций просто не работает — имейте в виду.
Интеграция Rspamd с Postfix
Самое интересное начинается, когда мы “вшиваем” Rspamd в поток почты. Вот основные изменения, которые нужно внести в /etc/postfix/main.cf:
smtpd_milters = inet:localhost:11332 non_smtpd_milters = $smtpd_milters milter_default_action = accept milter_protocol = 6
Теперь письма, проходящие через Postfix, будут анализироваться Rspamd до приёма.
Настройка Rspamd
Файлы конфигурации Rspamd находятся в
/etc/rspamd/local.d/- — для DKIM-подписей
dkim_signing.conf - — управление заголовками
milter_headers.conf - и
surbl.conf— для работы с блэклистамиrbl.conf - — серый список
greylist.conf - — подключение ClamAV
antivirus.conf - — машинное обучение (!)
neural.conf
Советую включить Web-интерфейс, это очень помогает:
# Включение WebUI nano /etc/rspamd/local.d/worker-controller.inc
bind_socket = "127.0.0.1:11334"; password = "$2$randomsalt$hash"; enable_password = true;
Затем перезапуск:
systemctl restart rspamd
Теперь по адресу
http://127.0.0.1:11334Обучение антиспама
Rspamd может обучаться на письмах вручную. Я добавила в Roundcube возможность пометки письма как “спам” и “не спам”, и настроила
rspamcrspamc learn_spam < spam.eml rspamc learn_ham < notspam.eml
Важно делать это регулярно, особенно в первое время — тогда фильтр начнёт работать как надо.
DKIM, SPF и DMARC
Антиспам — это не только фильтрация входящих, но и защита репутации отправляемых писем.
- Для DKIM я использовала встроенный модуль Rspamd ().
dkim_signing.conf - SPF и DMARC настроены через DNS-записи.
- Можно добавить отчёты DMARC на почту и мониторить доменную репутацию.
Возможные ошибки
- Не работает веб-интерфейс? Проверь, правильный порт, нет ли firewall’а.
worker-controller.inc - Письма не проходят? Возможно, слишком агрессивные настройки (например, выставленвместо
reject).add header - Rspamd не запускается? Логи впомогут понять, что не так.
journalctl -u rspamd
Мой итог
Я протестировала связку Rspamd + Postfix на 3 VPS — работает стабильно. Ловит 95% спама, ложно положительных почти нет. Интерфейс понятный, управление гибкое, можно кастомизировать под любые нужды.
Если раньше я мучилась с настройками SpamAssassin и Amavis, то теперь честно не понимаю, зачем тратить время — Rspamd реально лучше.
[elementor-template id="3967"]