Система фільтрації спаму Rspamd, яку активно використовують для поштових серверів і шлюзів безпеки, отримала велике оновлення до версії 4.0. Реліз приніс серйозні зміни в архітектурі, новий протокол обробки запитів і розширені можливості виявлення загроз.
Розбираємося, що саме змінилось і чому це важливо.
Новий протокол checkv3
Головне нововведення — протокол checkv3, який доступний через ендпоінт /checkv3. Він замінює попередній механізм обробки запитів і пропонує більш сучасний та гнучкий підхід до взаємодії з системою.
У новій версії змінено сам формат обміну даними. Запити передаються у форматі multipart/form-data, а відповіді — як multipart/mixed, що краще підходить для роботи зі складними структурами.
Для передачі метаданих можна використовувати JSON або Msgpack, залежно від того, що зручніше у вашому сценарії. Також передбачена підтримка стиснення zstd, що допомагає зменшити обсяг трафіку, і zero-copy обробка відповідей — для швидшої роботи без зайвого копіювання даних.
Щоб почати використовувати checkv3, його потрібно явно вказати під час роботи з клієнтом rspamc — через параметри --protocol-v3 або --msgpack.
Менше пам’яті — більше ефективності
Rspamd відмовився від зовнішньої бібліотеки libfasttext і перейшов на вбудовану реалізацію з mmap.
У результаті:
- моделі fastText зберігаються у спільній пам’яті;
- кілька воркерів використовують один і той самий набір моделей;
- загальне споживання ресурсів знижується.
При цьому старі моделі (.bin і .ftz) залишаються сумісними, тому нічого переробляти не доведеться.
Покращене виявлення спаму і фішингу
У версії 4.0 значно прокачали механізми детекції. Зокрема, з’явились multi-flag fuzzy hashes — тепер один хеш може відповідати одразу кільком правилам.
Окремо варто звернути увагу на HTML fuzzy phishing detection. Система аналізує структуру сторінки і може знайти фішингові шаблони навіть тоді, коли змінюється домен. Це особливо корисно проти масових кампаній з однаковими шаблонами.
Гнучкіша конфігурація
Налаштування стали більш адаптивними завдяки підтримці шаблонів у стилі Jinja2 (через Lupa engine).
Це спрощує роботу з великими конфігами через менше дублювання, більшу динаміку та легшу підтримку складних сценаріїв.
Зміни в інфраструктурі
У релізі також переглянули підхід до масштабування і балансування.
Основні моменти:
- Ring Hash (Ketama) замість Jump Hash — більш стабільний розподіл ключів;
- token bucket тепер використовується за замовчуванням замість round-robin;
- HTTPS працює прямо у воркерах без обов’язкового reverse proxy.
Якщо у вас використовується шардований Redis для Bayes-класифікації, перед оновленням варто виконати:
rspamadm statistics_dump migrate
Інакше можуть виникнути проблеми з мапінгом даних.
AI і класифікація
Neural subsystem отримала серйозне оновлення. З’явилась підтримка зовнішніх pretrained моделей і LLM embedding-провайдерів, а також розширені можливості навчання.
Bayes-класифікація теж еволюціонувала — тепер система працює не лише з spam/ham, а підтримує кілька класів, що підвищує точність фільтрації.
Ще кілька змін
У релізі є і менш помітні, але корисні покращення:
- асинхронна компіляція кешу Hyperscan — правила компілюються у фоновому режимі, без блокування основних процесів, тому система швидше реагує на зміни і не просідає під час оновлень;
- стиснення метаданих — дані, які передаються між компонентами, займають менше місця, що знижує навантаження на мережу і пришвидшує обробку
- генерація UUID v7 для кожного завдання — кожен запит отримує унікальний і більш впорядкований ідентифікатор, що спрощує логування, моніторинг і пошук проблем;
- покращений аналіз PDF і перевірка заголовків — система точніше розпізнає вкладення та підозрілі елементи в листах, що підвищує якість виявлення спаму і фішингу.
Що врахувати перед оновленням?
Перед оновленням варто врахувати кілька змін, які можуть вплинути на результати фільтрації та конфігурацію.
URL-адреси тепер автоматично включаються в аналіз, тому поведінка системи може трохи змінитися. Параметр ssl = true прибрали — HTTPS тепер працює інакше, без окремого налаштування для воркерів. Перевірка SenderScore вимкнена автоматично, тож за потреби її доведеться вмикати вручну.
Також DKIM обробляється суворіше відповідно до RFC, тому частина листів із некоректними підписами може не проходити перевірку.

