💥 Breaking Changes
- Multiclass Bayes classification with named classes (2–20 classes), processed in a single Redis call per message. (#5547)
- Backward compatible with
is_spam; new configuration supports labeled classes and autolearn. - Lua API and autolearn support multiclass workflows with class‑aware Redis caching.
- CLI:
rspamc learn_class:transactional …, rspamc learn_class:newsletter …. - Lua API:
task:get_multiclass_result() returns class probabilities and confidence.
✅ Added
- Neural module overhaul to a provider‑based architecture (symbols, LLM embeddings), versioned and backward compatible. (#5579)
- Pluggable feature fusion with trained normalization (unit/zscore/none) applied at train and inference.
- Redis‑backed caching for LLM embeddings to control cost and latency.
- Multimap selectors: SA‑style selectors with dedicated
selector field; integrated with Hyperscan and regex cache. (#5615) - MIME parser automatically detects part types. (#5619, #5608)
- HTML parser extracts more features for downstream modules.
🔄 Improved
- HTTP timeouts configuration and handling. (#5614, #5603, #5601)
- Upstream reliability with probe mode; reduced need for forced revive.
- DNS nameserver resolution switched to
getaddrinfo. - Standardized on C++20; build, test, and CI improvements (including ARM support and modern fallback maps). (#5592, #5598, #5580)
- Regular code cleaning and RPM tweaks.
- WebUI: E2E scan test flows; Bootstrap upgrade; Bayes class management from the web interface. (#5606, #5607)
- GPT/LLM integrations: improved parameter/prompt handling; initial support for OpenAI GPT‑5 and other models. (#5612, #5572)
🔧 Fixed
- DCC plugin rewritten and optimized. (#5602)
- DKIM relaxed body canonicalization; improved reliability in multimap, WebUI, and configuration. (#5593)
- Numerous minor bug fixes and CI/build improvements.