We have released Rspamd 2.2 today.
This release contains some new features and many bug fixes. There are no incompatible changes introduced with this release to our best knowledge.
This release includes the following features and important fixes.
Added virustotal support
Clickhouse collection rework
Rspamd now does Clickhouse data collection in a separate perioric event. It allows to do collections based on time, number of rows (as previously) or on amount of memory used. More details are in the GitHub issue.
Faster base64 decoding
We have applied number of optimizations to improve the performance of base64 decoding on the modern hardware (especially with AVX2 and/or SSE4.2 support).
Fast unicode validation library
Rspamd now uses number of techniques to improve utf8 validation by utilising modern CPU instructions, such as AVX2 and SSE4. This code is based on the work from Yibo Cai and achieves around 0.5 CPU cycles per byte speed when using AVX2 codec.
There are number of significant improvements in the upstreams library of Rspamd. Specifically, that includes better consistent hashing, better upstreams marking logic and improved logging.
Build system rework
The CMake based build system has been reworked to use more modern design practices provided by newer CMake versions (Rspamd now requires CMake 3.9 as minimum). New build system should improve multiple configurations support and simplify CMake build files.
Full list of the meaningful changes
- [Conf] Antivirus: Fix the default config
- [Feature] Add verdict library in lua
- [Feature] Allow exception when choosing upstream
- [Feature] Allow to disable symbols from the metric config
- [Feature] Allow to limit maps per specific worker
- [Feature] Always validate Rspamd protocol output
- [Feature] Antivirus: Add preliminary virustotal support
- [Feature] Clickhouse: Rework Clickhouse collection logic
- [Feature] Improve base64 usage
- [Feature] Shutdown timeout is now associated with task timeout
- [Fix] #3129 Multiple classifiers on redis working incorrectly
- [Fix] Allow real upstreams configuration
- [Fix] Another try to fix slow callbacks and timers
- [Fix] Check results of write message as SSL can bork them
- [Fix] Clickhouse: Avoid potential races in collection
- [Fix] Clickhouse: Fix periodic script
- [Fix] Fail DNS upstream on each retransmit attempt
- [Fix] Fix consistent hashing when upstreams are marked inactive
- [Fix] Fix issues found
- [Fix] Fix off-by-one in retries for the proxy
- [Fix] Fix termination
- [Fix] Fix upstreams exclusion logic
- [Fix] Fix utf8 validation for symbols options and empty strings
- [Fix] Oops, fix maps reload
- [Fix] Rbl: Allow utf8 lookups for IDN domains
- [Fix] Sigh, another try to fix brain-damaged openssl
- [Project] Add fast utf8 validation library
- [Project] Use own utf8 validation instead of glib
- [Rework] Another phase of finish actions rework
- [Rework] Further cmake system rework
- [Rework] Further isolation of the controller’s functions
- [Rework] Make cmake structure more modular
- [Rework] Move cmake modules to a dedicated path
- [Rework] Replace controller functions by any scanner worker if needed
- [Rework] Rework final scripts logic
- [Rework] Rewrite rspamd_str_make_utf_valid function