Rspamd
Rspamd — це сучасна система фільтрації спаму, яка використовується як альтернатива або доповнення до SpamAssassin. Вона створена з урахуванням високої продуктивності, масштабованості та підтримки сучасних методів фільтрації (наприклад, машинного навчання).
Основні особливості Rspamd
Написаний на C — працює значно швидше, ніж Perl-базований SpamAssassin.
Асинхронна обробка пошти — використовує event-driven модель.
Підтримка Redis, DKIM, SPF, DMARC, SURBL, RBL, fuzzy-хешування.
Інтеграція з Postfix, Exim, Sendmail через milter або proxy.
Можливість фільтрації за допомогою Lua-скриптів.
Гарний веб-інтерфейс для моніторингу та налаштування.
Bayesian-фільтрація + машинне навчання (інкрементальне, Redis).
Порівняння: Rspamd vs SpamAssassin
Характеристика
Rspamd
SpamAssassin
Мова реалізації
C + Lua
Perl
Швидкодія
Дуже висока
Повільніший (особливо при великому навантаженні)
Ресурси (RAM, CPU)
Оптимізований, економний
Може споживати багато ресурсів
Інтеграція
Через milter або proxy
Через spamd або procmail
Сучасні технології
DKIM, SPF, fuzzy, машинне навчання
Також, але менш ефективно і повільніше
Гнучкість / модульність
Висока, завдяки Lua
Висока, завдяки Perl-плагінам
Реальне використання
Часто використовується на великих інфраструктурах (включно з Mailcow)
Поширений на старих чи менш навантажених системах
Web-інтерфейс
Є (Rspamd UI)
Немає (тільки log/CLI)
Переваги Rspamd над SpamAssassin
Продуктивність — Rspamd здатний обробляти тисячі листів на хвилину.
Маштабованість — чудово підходить для великих інфраструктур.
Модульність — всі перевірки винесені в окремі Lua-модулі, легко вимикаються/вмикаються.
Інтеграція з Redis — для кешування, fuzzy-ідентифікації, статистики.
Інтерфейс керування — веб-інтерфейс для перегляду, зміни конфігурацій, навчання баєсів.
Активна розробка — проєкт активно підтримується.
Недоліки Rspamd
Більш складне первинне налаштування, особливо для новачків.
Якщо хочеш усе максимально вручну, треба вивчити Lua і конфігураційні схеми.
Для деяких фіч (як fuzzy або статистика) бажано мати Redis.
Висновок
Якщо в тебе обмежені ресурси, мале навантаження, знайома система — SpamAssassin підходить. Але якщо хочеш сучасну, ефективну, масштабовану антиспам-систему — Rspamd виграє майже в усіх аспектах.
Ні, веб-інтерфейс Rspamd не використовує PHP.
Технічна основа веб-інтерфейсу Rspamd:
Frontend (веб-інтерфейс): HTML + JavaScript (класичний, без фреймворків типу React/Vue) Працює як SPA (single page app), тобто клієнтська частина.
Backend: Це вбудований у сам процес Rspamd HTTP API сервер. Він слухає порт (зазвичай 11334 або 11333) і обробляє JSON-запити, в т.ч. для керування модулями, перегляду статистики, навчання баєсів тощо.
Авторизація: Через ключ або базову автентифікацію (
/etc/rspamd/worker-controller.inc
), окремо налаштовується доступ доcontroller
,normal
таworker-proxy
.
Немає Apache / Nginx / PHP
Rspamd веб-інтерфейс не потребує PHP, Apache чи Nginx. Але:
Якщо хочеш проксіювати його через Nginx, наприклад, для TLS/HTTPS — це стандартна практика.
Можна повісити веб-інтерфейс за
/rspamd
на сайті черезproxy_pass
.
Як виглядає типовий доступ:
http://localhost:11334/
або через HTTPS reverse proxy:
https://mail.example.com/rspamd/
тобто Rspamd поставить на сервер Lua?
Так, Rspamd використовує вбудований інтерпретатор Lua, але не ставить системний Lua як окремий пакет.
Як це виглядає технічно:
Rspamd вбудовує LuaJIT (швидку JIT-компіляцію Lua) прямо у свій двійковий файл (
rspamd
).Тобто, навіть якщо в системі немає
lua
,lua5.1
,lua5.4
тощо — Rspamd все одно працюватиме.Ти не побачиш
lua
у списку явно встановлених пакетів, якщо не поставиш його вручну.
Для чого використовується Lua в Rspamd:
Усі модулі фільтрації, аналізу заголовків, байєсів, fuzzy і т.д. — це Lua-скрипти.
Вони лежать в
/etc/rspamd/modules.d/
і/usr/share/rspamd/lua/
.
Перевага підходу Rspamd:
Немає залежності від системного Lua.
Завжди однакова, протестована версія Lua (через LuaJIT).
Можна писати/редагувати власні правила на Lua без потреби встановлювати нічого додаткового.
Якщо цікаво, можу показати приклад кастомного Lua-модуля або як відключити будь-який модуль (через .conf
або modules.d/*
).
Чи потрібні знання Lua, щоб почати використовувати Rspamd?
Ні, знання Lua не є обов’язковими, щоб почати користуватися Rspamd. Ти можеш повністю налаштувати і ефективно використовувати Rspamd без жодного рядка Lua.
Що можна робити без Lua:
✅ Увімкнути/вимкнути модулі через конфіги (
modules.d/*.conf
)✅ Налаштувати інтеграцію з Postfix (через milter або proxy)
✅ Увімкнути SPF, DKIM, DMARC, RBL, SURBL, Bayes — усе через
.conf
✅ Навчати байєс-фільтр через веб-інтерфейс або скриптами
✅ Дивитись логіку обробки листів у веб-інтерфейсі
✅ Встановити фільтри на рівні score (наприклад, що таке spam, що таке reject)
Де Lua може знадобитися (але пізніше, якщо буде потреба):
🔧 Якщо хочеш написати власне правило (наприклад, якщо в тілі є певна фраза — мінус бал)
🔧 Якщо потрібно тонке налаштування модулів або створення кастомних фільтрів
🔧 Якщо хочеш глибоко оптимізувати логіку фільтрації під себе
Навіть у таких випадках часто достатньо мінімального розуміння синтаксису Lua — і більшість модулів вже написані, треба лише змінити кілька параметрів.
Висновок
Lua — це не обов’язково. Rspamd має хорошу документацію, стандартні налаштування добре працюють із коробки, а конфігураційні файли — це просто
key = value;
, без кодування.
Хочеш — покажу, як почати з мінімальною конфігурацією для Postfix, без Lua взагалі.
Last updated