<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Rspamd Changelog</title>
    <link>https://docs.rspamd.com/changelog</link>
    <description>Release notes and changelog for Rspamd spam filtering system</description>
    <language>en</language>
    <lastBuildDate>Mon, 23 Feb 2026 09:24:33 GMT</lastBuildDate>
    <atom:link href="https://docs.rspamd.com/rss/changelog.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>Rspamd 3.14.3 - Patch Release with PDF Text Extraction, Task Registry, and ClickHouse Extensibility</title>
      <link>https://docs.rspamd.com/changelog#version-3-14-3</link>
      <guid isPermaLink="false">https://docs.rspamd.com/changelog/3.14.3</guid>
      <pubDate>Thu, 08 Jan 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h2>Rspamd 3.14.3 - Patch Release with PDF Text Extraction, Task Registry, and ClickHouse Extensibility</h2><h3>Added</h3><ul><li>**PDF text extraction**: Extract text from PDF attachments for content analysis with text quality filtering, FlateDecode and ASCIIHexDecode filter support, UTF-16 detection and conversion, ligature support for Standard and MacRoman encodings, and new `rspamadm mime -r` flag for raw extraction ([#5762](https://github.com/rspamd/rspamd/pull/5762))</li><li>**Task registry for Lua**: New task registry prevents use-after-free bugs in async Lua callbacks using counter-based keys instead of raw pointers for safe validation ([#5803](https://github.com/rspamd/rspamd/pull/5803))</li><li>**ClickHouse extra tables API**: Plugins can dynamically register custom ClickHouse tables via `rspamd_plugins[&apos;clickhouse&apos;].register_extra_table()` with per-table schemas, row callbacks, and independent retention settings ([#5810](https://github.com/rspamd/rspamd/pull/5810))</li><li>**WebUI error log**: New error log modal tracking last 50 API errors with unseen error counter badge, copy-to-clipboard support with HTTP fallback, and color-coded error types with responsive column hiding ([#5821](https://github.com/rspamd/rspamd/pull/5821))</li></ul><h3>Fixed</h3><ul><li>**Neural symbol flags**: Include symbols with no flags by default instead of excluding them</li><li>**Symcache FINE propagation**: Make FINE propagation deterministic ([#5825](https://github.com/rspamd/rspamd/issues/5825))</li><li>**URL numeric IP**: Prevent false positives from numeric IP regeneration in mailto URLs ([#5823](https://github.com/rspamd/rspamd/issues/5823))</li><li>**Settings selector**: Allow spaces in selector regexps</li><li>**Thai language**: Prevent R_MIXED_CHARSET false positives by marking Thai as having diacritics ([#5817](https://github.com/rspamd/rspamd/pull/5817), [#5799](https://github.com/rspamd/rspamd/issues/5799))</li><li>**GPT plugin**: Improved output format instructions for more reliable responses ([#5815](https://github.com/rspamd/rspamd/pull/5815), [#5670](https://github.com/rspamd/rspamd/issues/5670))</li><li>**io_uring HTTP**: Handle connection errors properly in HTTP client backend</li><li>**MIME Lua stack**: Restore Lua stack properly in second-pass detection</li><li>**Redis stats**: Add null checks for task in callbacks</li><li>**Lua 5.4 compatibility**: Fixes in ClickHouse and Elastic plugins ([#5774](https://github.com/rspamd/rspamd/pull/5774))</li><li>**Task lifetime crashes**: Fix potential crashes when Redis is unavailable longer than task lifetime ([#5803](https://github.com/rspamd/rspamd/pull/5803))</li></ul><h3>Improved</h3><ul><li>**replxx build**: Fix build with LLVM 21+</li><li>**macOS build**: Add Homebrew LLVM libc++ library path</li><li>**fmt library**: Update to version 12.1.0</li><li>**SDK headers**: Avoid SDK headers in include path when package ROOT is specified</li></ul>]]></description>
      <category>patch</category>
    </item>
    <item>
      <title>Rspamd 3.14.2 - Patch Release with Metadata Exporter Enhancements and DMARC RUA Validation</title>
      <link>https://docs.rspamd.com/changelog#version-3-14-2</link>
      <guid isPermaLink="false">https://docs.rspamd.com/changelog/3.14.2</guid>
      <pubDate>Wed, 10 Dec 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[<h2>Rspamd 3.14.2 - Patch Release with Metadata Exporter Enhancements and DMARC RUA Validation</h2><h3>Added</h3><ul><li>**Metadata Exporter Formatters**: New formatters `multipart`, `msgpack`, and `json_with_message` for better message content handling including binary support and multipart uploads</li><li>**DMARC RUA Validation**: New `rspamadm dmarc_report --recheck-rua` flag to re-validate cached report addresses against exclusion maps (useful with RBLs)</li><li>**Selective AR Header Removal**: New `remove_ar_from` setting in milter_headers to selectively remove Authentication-Results headers from specific domains</li></ul><h3>Improved</h3><ul><li>**Metadata Exporter Docs**: Added comprehensive example for handling multipart metadata exports with Python/aiohttp</li></ul><h3>Deprecated</h3><ul><li>**Metadata Exporter**: `meta_headers` option is deprecated; use `multipart` or `msgpack` formatters instead</li></ul>]]></description>
      <category>patch</category>
    </item>
    <item>
      <title>Rspamd 3.14.1 - Minor Release with Composites Optimization, URL Deep Processing, and lua_shape Migration</title>
      <link>https://docs.rspamd.com/changelog#version-3-14-1</link>
      <guid isPermaLink="false">https://docs.rspamd.com/changelog/3.14.1</guid>
      <pubDate>Mon, 01 Dec 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[<h2>Rspamd 3.14.1 - Minor Release with Composites Optimization, URL Deep Processing, and lua_shape Migration</h2><h3>Added</h3><ul><li>**Composites optimization**: Inverted index with bloom filter for fast negative symbol lookups, precomputed atom types, and composites statistics with control protocol command ([#5764](https://github.com/rspamd/rspamd/pull/5764))</li><li>**Multimap combinators**: Support for combinator option in multimap selector rules for flexible matching logic ([#5766](https://github.com/rspamd/rspamd/pull/5766))</li><li>**SPF flattening tool**: New rspamadm utility for SPF record flattening with macro preservation ([#5757](https://github.com/rspamd/rspamd/pull/5757))</li><li>**URL deep processing**: Architecture for C-to-Lua URL filter consultation with async HTML URL processing ([#5748](https://github.com/rspamd/rspamd/pull/5748))</li><li>**Obfuscated URL detection**: Enhanced url_suspect plugin with rspamd_util.decode_html_entities for detecting obfuscated URLs ([#5761](https://github.com/rspamd/rspamd/pull/5761))</li><li>**lua_shape validation**: New validation library replacing tableshape with T.callable() type and callable defaults support ([#5754](https://github.com/rspamd/rspamd/pull/5754))</li><li>**Whitelist symbol flags**: Auto-mark whitelist symbols with SYMBOL_TYPE_FINE flag for better scoring granularity</li></ul><h3>Fixed</h3><ul><li>**url_suspect false positives**: Fix plugin causing massive false positives with high URL volume messages ([#5758](https://github.com/rspamd/rspamd/pull/5758))</li><li>**Network chunking loop**: Prevent infinite loop in split_networks_into_chunks() function ([#5763](https://github.com/rspamd/rspamd/pull/5763))</li><li>**Memory leak**: Fix leak in custom tokenizer result handling</li><li>**lua_shape compatibility**: Multiple fixes for transform logic, registry resolution, error safety, and tableshape compatibility ([#5754](https://github.com/rspamd/rspamd/pull/5754))</li><li>**Composites inverted index**: Fix group matchers handling and improve atom polarity detection ([#5764](https://github.com/rspamd/rspamd/pull/5764))</li><li>**Lua composites**: Copy expression string to memory pool to prevent use-after-free ([#5764](https://github.com/rspamd/rspamd/pull/5764))</li><li>**D3 libraries**: Update with bug fixes and validation improvements ([#5765](https://github.com/rspamd/rspamd/pull/5765))</li><li>**Settings processing**: Keep groups_*/symbols_* fields in settings for runtime processing</li><li>**Redirect URL encoding**: Properly encode URLs with unencoded spaces and special characters ([#5748](https://github.com/rspamd/rspamd/pull/5748))</li><li>**WebUI hover**: Restore hover colors for symbols and fix hover behavior outside status tables ([#5741](https://github.com/rspamd/rspamd/pull/5741), [#5742](https://github.com/rspamd/rspamd/pull/5742))</li><li>**External relay**: Fix mixins and confighelp for external_relay module ([#5754](https://github.com/rspamd/rspamd/pull/5754))</li></ul><h3>Improved</h3><ul><li>**url_suspect performance**: Optimize plugin for high URL volume messages with better deduplication ([#5758](https://github.com/rspamd/rspamd/pull/5758))</li><li>**tableshape migration**: Complete migration of all plugins and libraries from tableshape to lua_shape ([#5754](https://github.com/rspamd/rspamd/pull/5754))</li><li>**Configuration simplification**: Remove use_*_map flags and simplify URL processing configuration ([#5748](https://github.com/rspamd/rspamd/pull/5748))</li><li>**Whitelist maps**: Use contemporary API for maps in whitelist module ([#5746](https://github.com/rspamd/rspamd/pull/5746))</li><li>**WebUI symbols**: Improved hover colors and behavior for symbols display ([#5760](https://github.com/rspamd/rspamd/pull/5760))</li><li>**Plugins registry**: Centralized plugins registry with reworked mixins and documentation ([#5754](https://github.com/rspamd/rspamd/pull/5754))</li></ul>]]></description>
      <category>minor</category>
    </item>
    <item>
      <title>Rspamd 3.14.0 - Major Release with HTML Fuzzy Hashing, TCP Fuzzy Protocol, and Enhanced URL Processing</title>
      <link>https://docs.rspamd.com/changelog#version-3-14-0</link>
      <guid isPermaLink="false">https://docs.rspamd.com/changelog/3.14.0</guid>
      <pubDate>Mon, 10 Nov 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[<h2>Rspamd 3.14.0 - Major Release with HTML Fuzzy Hashing, TCP Fuzzy Protocol, and Enhanced URL Processing</h2><h3>Added</h3><ul><li>**HTML fuzzy hashing**: Structural similarity matching for HTML content with per-rule text_hashes toggle and dedicated shingles generation ([#5661](https://github.com/rspamd/rspamd/pull/5661), [#5720](https://github.com/rspamd/rspamd/pull/5720))</li><li>**Fuzzy TCP protocol**: Full TCP support in fuzzy storage and check with auto-switch, connection management, and proper framing ([#5669](https://github.com/rspamd/rspamd/pull/5669))</li><li>**CTA URL extraction**: New task:get_cta_urls() API and dedicated CTA module for proper call-to-action domain extraction ([#5732](https://github.com/rspamd/rspamd/pull/5732))</li><li>**Web search context**: LLM plugin integration with search API for domain context enrichment with Redis caching ([#5732](https://github.com/rspamd/rspamd/pull/5732))</li><li>**HTML URL rewriting**: Infrastructure for async HTML URL rewriting with Lua bindings and UTF-8 support ([#5676](https://github.com/rspamd/rspamd/pull/5676))</li><li>**Dark mode**: Full dark mode implementation in WebUI with theme toggle and auto detection ([#5725](https://github.com/rspamd/rspamd/pull/5725))</li><li>**Email aliases**: Advanced aliases resolution with loop detection for converging paths and expand_multiple mode ([#5655](https://github.com/rspamd/rspamd/pull/5655))</li><li>**ESMTP arguments**: Milter ESMTP argument parsing with Lua API access for per-recipient metadata ([#5663](https://github.com/rspamd/rspamd/pull/5663))</li><li>**URL hash method**: Exposed url:get_hash() method for efficient deduplication without string conversion overhead ([#5732](https://github.com/rspamd/rspamd/pull/5732))</li><li>**Postfix wizard**: Configwizard integration for automated Postfix setup using postconf utility ([#5667](https://github.com/rspamd/rspamd/pull/5667))</li><li>**BSD workflows**: Comprehensive GitHub Actions workflows for FreeBSD, NetBSD, and OpenBSD with Lua version selection ([#5726](https://github.com/rspamd/rspamd/pull/5726), [#5728](https://github.com/rspamd/rspamd/pull/5728), [#5729](https://github.com/rspamd/rspamd/pull/5729))</li><li>**Automated code review**: GitHub Actions workflow for Droid-powered code review with Rspamd-specific guidelines ([#5732](https://github.com/rspamd/rspamd/pull/5732))</li><li>**Multimap multisymbol**: Support for symbols with leading numerals in multimap plugin ([#5680](https://github.com/rspamd/rspamd/pull/5680))</li><li>**Remove headers array**: Support array of positions for milter remove_headers operations ([#5673](https://github.com/rspamd/rspamd/pull/5673))</li><li>**Client IP forwarding**: Proxy client IP preservation in message headers through chain ([#5671](https://github.com/rspamd/rspamd/pull/5671))</li><li>**Milter header support**: rspamc --mime support for milter.add_headers object format ([#5684](https://github.com/rspamd/rspamd/pull/5684))</li><li>**Public suffix automation**: Automatic synchronization of public suffix list via GitHub Actions ([#5718](https://github.com/rspamd/rspamd/pull/5718))</li><li>**Fuzzy migration utility**: Redis migration utility for fuzzy storage data ([#5692](https://github.com/rspamd/rspamd/pull/5692))</li><li>**Integration test suite**: Docker-based integration tests with ASAN, leak detection, and real corpus ([#5688](https://github.com/rspamd/rspamd/pull/5688))</li><li>**DMARC report headers**: Auto-Reply-To and Precedence headers to prevent out-of-office replies ([#5686](https://github.com/rspamd/rspamd/pull/5686))</li><li>**NetBSD memory support**: Memory usage tracking for NetBSD platform ([#5726](https://github.com/rspamd/rspamd/pull/5726))</li></ul><h3>Fixed</h3><ul><li>**DNS truncation**: Preserve req-&gt;pos during reply validation to prevent packet truncation on UDP-to-TCP retransmits ([#5739](https://github.com/rspamd/rspamd/pull/5739))</li><li>**DNS transaction ID**: Regenerate transaction ID before copying to TCP buffer to avoid collisions ([#5739](https://github.com/rspamd/rspamd/pull/5739))</li><li>**DMARC report batching**: Add batching and forced GC for Redis connections to prevent connection pool exhaustion ([#5737](https://github.com/rspamd/rspamd/pull/5737))</li><li>**Batch size validation**: Validate and normalize batch_size to prevent fractional indexing and loop errors ([#5737](https://github.com/rspamd/rspamd/pull/5737))</li><li>**Allocator mismatches**: Fix jemalloc/system malloc mixing in getline(), hiredis, and libucl to prevent crashes ([#5721](https://github.com/rspamd/rspamd/pull/5721), [#5724](https://github.com/rspamd/rspamd/pull/5724))</li><li>**Hyperscan version**: Use runtime version instead of compile-time for database validation and auto-recreate invalid cache files ([#5724](https://github.com/rspamd/rspamd/pull/5724))</li><li>**DNS round-robin**: Fix nameserver rotation from /etc/resolv.conf using ROUND_ROBIN instead of MASTER_SLAVE ([#5721](https://github.com/rspamd/rspamd/pull/5721))</li><li>**Memory leaks**: Fix leaks in fuzzy storage khash, upstream parsing, address parsing, OpenSSL providers, and UCL objects ([#5709](https://github.com/rspamd/rspamd/pull/5709))</li><li>**Fuzzy TCP bugs**: Fix double-release, timeout handling, buffer overflow, endianness mismatch, and race conditions ([#5669](https://github.com/rspamd/rspamd/pull/5669), [#5716](https://github.com/rspamd/rspamd/pull/5716))</li><li>**Shutdown tracking**: Keep srv events active during shutdown to track auxiliary processes via pipe notifications ([#5728](https://github.com/rspamd/rspamd/pull/5728))</li><li>**ARC signing**: Restore strict header ordering per RFC 8617 and add ed25519 key support ([#5684](https://github.com/rspamd/rspamd/pull/5684))</li><li>**Composite evaluation**: Implement two-phase evaluation for postfilter dependencies and fix symbol lookup ([#5681](https://github.com/rspamd/rspamd/pull/5681))</li><li>**URL extraction DoS**: Refactor to use hash-based deduplication with 50k URL limit to prevent string table exhaustion ([#5732](https://github.com/rspamd/rspamd/pull/5732))</li><li>**Bayes autolearn**: Allow skipping local/authenticated mail in default autolearn condition ([#5679](https://github.com/rspamd/rspamd/pull/5679))</li><li>**Bayes Redis discovery**: Improve Redis server discovery for Bayes storage ([#5714](https://github.com/rspamd/rspamd/pull/5714))</li><li>**ESMTP args parsing**: Robust per-recipient parsing in milter with safe cursor advance and refcount management ([#5663](https://github.com/rspamd/rspamd/pull/5663))</li><li>**HTML attribute offsets**: Correct offset calculation for URL rewriting in HTML attributes ([#5676](https://github.com/rspamd/rspamd/pull/5676))</li><li>**OpenBSD support**: Fix kinfo_proc member names and disable Hyperscan on OpenBSD ([#5729](https://github.com/rspamd/rspamd/pull/5729))</li><li>**FreeBSD packages**: Fix zstd package name and add IGNORE_OSVERSION for version mismatches ([#5729](https://github.com/rspamd/rspamd/pull/5729))</li><li>**NetBSD build**: Fix package installation with pkgin and correct dependency names ([#5726](https://github.com/rspamd/rspamd/pull/5726), [#5729](https://github.com/rspamd/rspamd/pull/5729))</li><li>**Bayes metadata leak**: Fix memory leak in stat metadata tokenization ([#5688](https://github.com/rspamd/rspamd/pull/5688))</li><li>**MIME anonymization**: Remove Authentication-Results and anonymize envelope-from in Received headers for LLM processing ([#5687](https://github.com/rspamd/rspamd/pull/5687))</li><li>**Multimap symbols**: Handle symbols with leading numerals in multimap ([#5680](https://github.com/rspamd/rspamd/pull/5680))</li><li>**Aliases validation**: Prevent creation of malformed email addresses in aliases module ([#5655](https://github.com/rspamd/rspamd/pull/5655))</li><li>**HTML fuzzy cache**: Fix cache key collision between text and HTML fuzzy hashes ([#5661](https://github.com/rspamd/rspamd/pull/5661))</li><li>**CSS normalization**: Fix CSS class normalization in HTML fuzzy token generation ([#5661](https://github.com/rspamd/rspamd/pull/5661))</li></ul><h3>Improved</h3><ul><li>**RBL configuration**: Refactored with new from selectors, content_urls checks, and lower_utf8 for hashed domains ([#5733](https://github.com/rspamd/rspamd/pull/5733))</li><li>**URL prioritization**: Prioritize CTA URLs in redirector and Lua helpers with proper phishing bonus preservation ([#5732](https://github.com/rspamd/rspamd/pull/5732))</li><li>**Fuzzy checks structure**: New structured checks configuration with backward-compatible legacy flags support ([#5720](https://github.com/rspamd/rspamd/pull/5720))</li><li>**Hash performance**: Replace GHashTable with khash in fuzzy_check and CTA URL extraction for better performance ([#5720](https://github.com/rspamd/rspamd/pull/5720), [#5732](https://github.com/rspamd/rspamd/pull/5732))</li><li>**WebUI icons**: Replace Glyphicons with FontAwesome SVG icons ([#5702](https://github.com/rspamd/rspamd/pull/5702))</li><li>**WebUI libraries**: Update CodeJar to 4.3.0, Node.js/ESLint, and D3-based visualization libs ([#5684](https://github.com/rspamd/rspamd/pull/5684), [#5717](https://github.com/rspamd/rspamd/pull/5717), [#5738](https://github.com/rspamd/rspamd/pull/5738))</li><li>**Bayes learn guards**: Make learn guards configurable instead of hardcoded ([#5701](https://github.com/rspamd/rspamd/pull/5701))</li><li>**Lua logger**: Add type specifiers support for better formatting ([#5668](https://github.com/rspamd/rspamd/pull/5668))</li><li>**DMARC reporting**: Refactor to use helper functions and async maps for better maintainability ([#5722](https://github.com/rspamd/rspamd/pull/5722))</li><li>**Config refcounting**: Add CFG_REF_* macros with debug logging for better lifecycle tracking ([#5709](https://github.com/rspamd/rspamd/pull/5709))</li><li>**Memory pool destructors**: Smart destructor preallocation based on pool type with specialized allocation strategies ([#5693](https://github.com/rspamd/rspamd/pull/5693))</li><li>**Heap implementation**: Convert to fully intrusive kvec-based implementation eliminating double allocation ([#5693](https://github.com/rspamd/rspamd/pull/5693))</li><li>**OpenSSL lifecycle**: Move providers from global to libs_ctx for clearer ownership ([#5709](https://github.com/rspamd/rspamd/pull/5709))</li><li>**Libucl stack management**: Automatic stack preservation for included files without outer braces ([#5717](https://github.com/rspamd/rspamd/pull/5717))</li><li>**Body rewriting**: Improve body rewriting support in rspamc and proxy ([#5675](https://github.com/rspamd/rspamd/pull/5675))</li><li>**AI assistant config**: Add Claude Code and Cursor AI configuration for development ([#5667](https://github.com/rspamd/rspamd/pull/5667))</li><li>**Fuzzy logging**: Add protocol logging and reduce dumb log verbosity ([#5669](https://github.com/rspamd/rspamd/pull/5669), [#5701](https://github.com/rspamd/rspamd/pull/5701))</li><li>**Docker configuration**: Add explicit console logging and runtime flags ([#5701](https://github.com/rspamd/rspamd/pull/5701))</li></ul>]]></description>
      <category>major</category>
    </item>
    <item>
      <title>Rspamd 3.13.2 - Feature Update with Enhanced Security and Performance</title>
      <link>https://docs.rspamd.com/changelog#version-3-13-2</link>
      <guid isPermaLink="false">https://docs.rspamd.com/changelog/3.13.2</guid>
      <pubDate>Sun, 05 Oct 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[<h2>Rspamd 3.13.2 - Feature Update with Enhanced Security and Performance</h2><h3>Added</h3><ul><li>**Fuzzy check encryption**: Separate encryption keys for read and write operations in fuzzy_check plugin ([#5665](https://github.com/rspamd/rspamd/pull/5665))</li><li>**DKIM ED25519 support**: Full ED25519 support for DKIM signing and verification with OpenSSL version checks ([#5664](https://github.com/rspamd/rspamd/pull/5664))</li><li>**Vault KV v2 support**: HashiCorp Vault KV version 2 support for DKIM key management with backward compatibility ([#5654](https://github.com/rspamd/rspamd/pull/5654))</li><li>**MetaDefender integration**: MetaDefender Cloud Lua module for SHA256 hash lookups as free-tier anti-malware scanning alternative ([#5656](https://github.com/rspamd/rspamd/pull/5656))</li><li>**LLM context support**: User/domain context support for LLM-based classification with Redis-based conversation context ([#5647](https://github.com/rspamd/rspamd/pull/5647))</li><li>**DMARC RUA exclusion**: Configuration option to exclude specific RUA addresses from DMARC report storage ([#5653](https://github.com/rspamd/rspamd/pull/5653))</li></ul><h3>Fixed</h3><ul><li>**DKIM bodyhash calculation**: Fixed relaxed bodyhash calculation for lines with only spaces to comply with RFC 6376 Section 3.4.4 ([#5662](https://github.com/rspamd/rspamd/pull/5662))</li><li>**DKIM key loading**: Fixed ED25519 key loading to prevent memory corruption in union handling ([#5664](https://github.com/rspamd/rspamd/pull/5664))</li><li>**HTTP map intervals**: Enforced server-controlled refresh intervals and prevented aggressive polling behavior ([#5660](https://github.com/rspamd/rspamd/pull/5660))</li><li>**HTTP map overflow**: Prevented time_t overflow in expires header processing ([#5660](https://github.com/rspamd/rspamd/pull/5660))</li><li>**Once received plugin**: Fixed duplicate symbol addition by changing break to return in check_quantity_received ([#5658](https://github.com/rspamd/rspamd/pull/5658))</li><li>**Redis Sentinel**: Properly propagate unused Sentinel options ([#5597](https://github.com/rspamd/rspamd/pull/5597))</li><li>**Fuzzy check decryption**: Fixed reply decryption when using separate read/write keys ([#5665](https://github.com/rspamd/rspamd/pull/5665))</li><li>**Fuzzy check fallback**: Added fallback when only one specific encryption key is set ([#5665](https://github.com/rspamd/rspamd/pull/5665))</li><li>**Fuzzy check filtering**: Fixed duplicate key filtering in reply decryption ([#5665](https://github.com/rspamd/rspamd/pull/5665))</li><li>**Fuzzy ping servers**: Allow read/write servers configuration ([#5665](https://github.com/rspamd/rspamd/pull/5665))</li></ul><h3>Improved</h3><ul><li>**Fuzzy check performance**: Refactored encryption key selection into helper functions for better maintainability ([#5665](https://github.com/rspamd/rspamd/pull/5665))</li><li>**Fuzzy check efficiency**: Stop early when found a correct key to improve performance ([#5665](https://github.com/rspamd/rspamd/pull/5665))</li><li>**Development workflow**: Added cursor rules for improved development experience ([#5665](https://github.com/rspamd/rspamd/pull/5665))</li></ul>]]></description>
      <category>minor</category>
    </item>
    <item>
      <title>Rspamd 3.13.1 - Feature Update with Stability and Security Improvements</title>
      <link>https://docs.rspamd.com/changelog#version-3-13-1</link>
      <guid isPermaLink="false">https://docs.rspamd.com/changelog/3.13.1</guid>
      <pubDate>Tue, 30 Sep 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[<h2>Rspamd 3.13.1 - Feature Update with Stability and Security Improvements</h2><h3>Added</h3><ul><li>**Archive module**: Full support for encrypted ZIP archives, including both ZipCrypto and AES encryption; both reading and writing of AES-encrypted ZIP archives is supported with updated Lua bindings using libarchive for flexible compatibility with all standard ZIP encryption schemes</li><li>**Encrypted maps**: Support for encrypted maps to enable new map distribution scenarios</li><li>**Redis TLS**: Configurable TLS connections in Redis backend for improved compatibility in secure environments</li></ul><h3>Improved</h3><ul><li>**MIME encoding refactoring**: Major overhauls and multiple fixes for MIME encoding logic, including improved handling and decoding of UTF-8 in MIME headers, resulting in more robust email processing and better compatibility</li><li>**Learning system**: Numerous fixes to learn checks and autolearn flag handling, prevention of duplicate message learning, and extended multiclass learning test coverage</li><li>**Map helpers alignment**: Map helpers now enforced to be aligned to 64 bytes to prevent unaligned memory access errors on certain platforms</li><li>**CLI enhancements**: Enhanced secretbox CLI and additional security test coverage</li><li>**Platform compatibility**: Improved compatibility with Lua versions above 5.1 and better support for 32-bit platforms</li></ul><h3>Fixed</h3><ul><li>**Critical fixes**: Fixed bug when converting zero-length strings to numbers</li><li>**XML parsing**: Fixed XML prolog detection in lua_magic module</li><li>**Build issues**: Fixed build issues on 32-bit platforms</li><li>**Empty input handling**: Addressed issues with empty input handling in lua_magic</li><li>**Test stability**: Improved stability of automated testing with multiple miscellaneous test fixes</li><li>**Compatibility**: Minor compatibility improvements and bugfixes (buffer allocation, missing cmath include, etc.)</li></ul>]]></description>
      <category>minor</category>
    </item>
    <item>
      <title>Rspamd 3.13.0 - Major Release with Breaking Changes</title>
      <link>https://docs.rspamd.com/changelog#version-3-13-0</link>
      <guid isPermaLink="false">https://docs.rspamd.com/changelog/3.13.0</guid>
      <pubDate>Wed, 17 Sep 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[<h2>Rspamd 3.13.0 - Major Release with Breaking Changes</h2><h3>Breaking Changes</h3><ul><li>Multiclass Bayes classification with named classes (2–20 classes), processed in a single Redis call per message. ([#5547](https://github.com/rspamd/rspamd/pull/5547))</li><li>Backward compatible with `is_spam`; new configuration supports labeled classes and autolearn.</li><li>Lua API and autolearn support multiclass workflows with class‑aware Redis caching.</li><li>CLI: `rspamc learn_class:transactional …`, `rspamc learn_class:newsletter …`.</li><li>Lua API: `task:get_multiclass_result()` returns class probabilities and confidence.</li></ul><h3>Added</h3><ul><li>Neural module overhaul to a provider‑based architecture (symbols, LLM embeddings), versioned and backward compatible. ([#5579](https://github.com/rspamd/rspamd/pull/5579))</li><li>Pluggable feature fusion with trained normalization (unit/zscore/none) applied at train and inference.</li><li>Redis‑backed caching for LLM embeddings to control cost and latency.</li><li>Multimap selectors: SA‑style selectors with dedicated `selector` field; integrated with Hyperscan and regex cache. ([#5615](https://github.com/rspamd/rspamd/pull/5615))</li><li>MIME parser automatically detects part types. ([#5619](https://github.com/rspamd/rspamd/pull/5619), [#5608](https://github.com/rspamd/rspamd/pull/5608))</li><li>HTML parser extracts more features for downstream modules.</li></ul><h3>Improved</h3><ul><li>HTTP timeouts configuration and handling. ([#5614](https://github.com/rspamd/rspamd/pull/5614), [#5603](https://github.com/rspamd/rspamd/pull/5603), [#5601](https://github.com/rspamd/rspamd/pull/5601))</li><li>Upstream reliability with probe mode; reduced need for forced revive.</li><li>DNS nameserver resolution switched to `getaddrinfo`.</li><li>Standardized on C++20; build, test, and CI improvements (including ARM support and modern fallback maps). ([#5592](https://github.com/rspamd/rspamd/pull/5592), [#5598](https://github.com/rspamd/rspamd/pull/5598), [#5580](https://github.com/rspamd/rspamd/pull/5580))</li><li>Regular code cleaning and RPM tweaks.</li><li>WebUI: E2E scan test flows; Bootstrap upgrade; Bayes class management from the web interface. ([#5606](https://github.com/rspamd/rspamd/pull/5606), [#5607](https://github.com/rspamd/rspamd/pull/5607))</li><li>GPT/LLM integrations: improved parameter/prompt handling; initial support for OpenAI GPT‑5 and other models. ([#5612](https://github.com/rspamd/rspamd/pull/5612), [#5572](https://github.com/rspamd/rspamd/pull/5572))</li></ul><h3>Fixed</h3><ul><li>DCC plugin rewritten and optimized. ([#5602](https://github.com/rspamd/rspamd/pull/5602))</li><li>DKIM relaxed body canonicalization; improved reliability in multimap, WebUI, and configuration. ([#5593](https://github.com/rspamd/rspamd/pull/5593))</li><li>Numerous minor bug fixes and CI/build improvements.</li></ul>]]></description>
      <category>major</category>
    </item>
    <item>
      <title>Rspamd 3.12.1 - Minor Release with Bug Fixes and Improvements</title>
      <link>https://docs.rspamd.com/changelog#version-3-12-1</link>
      <guid isPermaLink="false">https://docs.rspamd.com/changelog/3.12.1</guid>
      <pubDate>Tue, 17 Jun 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[<h2>Rspamd 3.12.1 - Minor Release with Bug Fixes and Improvements</h2><h3>Added</h3><ul><li>**Bayes Classifiers Endpoint**: Add `/bayes/classifiers` HTTP endpoint for better classifier management</li><li>**Enhanced Scheduling**: Further improvements in scheduling next checks for better performance</li><li>**AEAD Testing**: Add comprehensive tests for AEAD (Authenticated Encryption with Associated Data) used in Rspamd</li><li>**Improved Maps Consistency**: Better consistency in cached flag for maps and logging when dealing with Expires</li></ul><h3>Improved</h3><ul><li>**Maps Locking**: Eliminate maps locking for better performance and reduced contention</li><li>**Proxy Headers**: Fix proxy headers duplication and improve header handling</li><li>**Milter Logic**: Do not add log tag header in milter logic for cleaner output</li><li>**Connection Handling**: Do not explicitly add Connection header if it&apos;s already present</li><li>**Attachment Processing**: Treat *.library-ms and *.search-ms attachments as harmful (with proper application)</li><li>**Maps Concurrent Loading**: Fix race conditions in maps concurrent loading</li><li>**Write Operations**: Try to avoid incomplete writes for better data integrity</li></ul><h3>Fixed</h3><ul><li>**Maps Locking Issues**: Eliminate maps locking to prevent deadlocks and improve performance</li><li>**Proxy Headers Duplication**: Fix proxy headers duplication issue</li><li>**Milter Header Logic**: Fix logic error in milter_headers.lua: skip_wanted() function</li><li>**Connection Header**: Prevent duplicate Connection headers in proxy</li><li>**Maps Concurrent Access**: Fix race conditions in maps concurrent loading</li><li>**Incomplete Writes**: Prevent incomplete writes that could cause data corruption</li><li>**Attachment Security**: Properly apply security rules for *.library-ms and *.search-ms attachments</li><li>**Logging Consistency**: Improve consistency in logging when dealing with Expires and cached flags</li></ul><h3>Changed</h3><ul><li>**Maps Architecture**: Eliminate maps locking mechanism for better performance</li><li>**Header Processing**: Improve header processing to avoid duplicates</li><li>**Attachment Handling**: Enhanced security for Windows library and search attachments</li><li>**Scheduling Logic**: Improved scheduling algorithm for next checks</li><li>**Logging Format**: Better consistency in logging output and cached flag handling</li></ul><h3>Security</h3><ul><li>**Attachment Security**: Enhanced protection against potentially harmful Windows library and search attachments</li><li>**Header Validation**: Improved header validation to prevent duplication and injection</li><li>**Write Protection**: Better protection against incomplete writes that could lead to data corruption</li></ul><h3>Performance</h3><ul><li>**Maps Performance**: Eliminate maps locking for better concurrent access performance</li><li>**Scheduling**: Improved scheduling algorithm for better resource utilization</li><li>**Header Processing**: Optimized header processing to reduce overhead</li></ul><h3>Testing</h3><ul><li>**AEAD Testing**: Comprehensive tests for AEAD encryption used throughout Rspamd</li><li>**Maps Testing**: Improved testing for maps concurrent loading scenarios</li><li>**Header Testing**: Better testing for header processing and duplication scenarios</li></ul>]]></description>
      <category>minor</category>
    </item>
    <item>
      <title>Rspamd 3.12.0 - Major Release with Enhanced Features and Security Improvements</title>
      <link>https://docs.rspamd.com/changelog#version-3-12-0</link>
      <guid isPermaLink="false">https://docs.rspamd.com/changelog/3.12.0</guid>
      <pubDate>Tue, 10 Jun 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[<h2>Rspamd 3.12.0 - Major Release with Enhanced Features and Security Improvements</h2><h3>Added</h3><ul><li>**GPT Module Enhancements**: Add Ollama support and token usage logging for OpenAI-compatible APIs</li><li>**Fuzzy Storage Improvements**: Add support for separate read and write servers in fuzzy check</li><li>**CDB Maps Support**: Allow CDB files as external maps for improved performance</li><li>**Contextal Integration**: New plugin to integrate with Contextal platform for advanced threat detection</li><li>**Enhanced Logging**: Allow to specify max log tag length for all log messages and log tag in proxy</li><li>**Proxy Improvements**: Add keep-alive support, HTTPS backend connections, and extra headers specification</li><li>**Redis Version Support**: Allow to specify Redis version for compatibility</li><li>**HEIC File Support**: Add HEIC files patterns for better image analysis</li><li>**Enhanced Maps Management**: Show all maps status and output content for all maps</li><li>**File Upload in WebUI**: Add file upload functionality to Test Selectors</li><li>**Convenience Methods**: Add various convenience methods for Lua development</li><li>**Enhanced Fuzzy Operations**: Add deletion of specific fuzzy hashes in WebUI</li><li>**Improved Error Handling**: Better error messages for multimap invalid types</li></ul><h3>Improved</h3><ul><li>**Security Enhancements**: Critical fix to disable macros and file variables by default in lua-ucl</li><li>**Maps Loading**: Fix race condition in maps loading by unlocking backend on switch</li><li>**Greylisting**: Improve body hash calculations for better accuracy</li><li>**Replies Module**: Rework to consider all recipients and use SMTP ones</li><li>**WebUI Updates**: Update Bootstrap, D3 and PrismJS libraries to latest versions</li><li>**Lua Logging**: Major improvements to logging output format and complex table key support</li><li>**Fuzzy Storage**: Better handling of fuzzy lua callback when there are no shingles</li><li>**Milter Headers**: Fix logic error in skip_wanted() function</li><li>**Known Senders**: Improved recipients test logic and consistency with replies module</li><li>**Maps Management**: Grey out not loaded maps in the Maps table for better visibility</li><li>**Redis Integration**: Improve Redis script loading and caching framework usage</li><li>**Configuration**: Use safe parsers everywhere except configuration for security</li><li>**Build System**: Modernize cmake and improve sanitizers support</li><li>**Documentation**: Update API docs for multiple HTTP headers and various other improvements</li></ul><h3>Fixed</h3><ul><li>**Critical Security**: Disable macros and file variables by default in lua-ucl parser</li><li>**Race Conditions**: Fix race condition in maps loading by unlocking backend on switch</li><li>**Memory Issues**: Fix lua-bit stack buffer overflow vulnerability</li><li>**Proxy Crashes**: Prevent crashes when accessing upstream address in self-scan mode</li><li>**Maps Management**: Fix maps IDs and static maps description passing</li><li>**Fuzzy Storage**: Filter invalid domains in fuzzy extra data</li><li>**Redis Integration**: Fix various Redis-related issues and improve script loading</li><li>**WebUI Issues**: Fix Fuzzy hashes card close button alignment and map editor modal handling</li><li>**Build Issues**: Fix Debian package build and RPM log directory attributes</li><li>**Compiler Warnings**: Fix various compile warnings and compatibility issues</li><li>**Test Framework**: Fix various test issues and improve test configuration</li><li>**Documentation**: Fix writing rules tutorial link and various documentation issues</li><li>**URL Lists**: Update default URL for openphish and fix various URL-related issues</li><li>**Headers Processing**: Fix header processing in various modules</li><li>**Lua Integration**: Fix various Lua-related issues and improve error handling</li></ul><h3>Changed</h3><ul><li>**Configuration**: Use safe parsers everywhere except configuration for enhanced security</li><li>**Maps Architecture**: Rework to use locks/loaded per backend for all maps</li><li>**Replies Logic**: Consider all recipients and use SMTP ones instead of just From header</li><li>**Fuzzy Storage**: Remove servers completely and use `read_servers` for all compatibility</li><li>**Logging Format**: Improve format string processing and logging output</li><li>**Build System**: Modernize cmake and rework OSDep for better maintainability</li><li>**WebUI**: Rework file upload JS implementation and improve user interface</li><li>**Documentation**: Update various documentation files and improve API documentation</li><li>**Error Handling**: Improve error messages and handling throughout the codebase</li><li>**Performance**: Various performance improvements in maps, Redis, and fuzzy operations</li></ul><h3>Removed</h3><ul><li>**Deprecated Features**: Remove various deprecated and unused code paths</li><li>**Unused Helpers**: Remove unused cleanTextUpload helper and other obsolete code</li><li>**Legacy Support**: Remove compatibility code that is no longer needed</li></ul><h3>Security</h3><ul><li>**Critical Fix**: Disable macros and file variables by default in lua-ucl parser</li><li>**Memory Safety**: Fix lua-bit stack buffer overflow vulnerability</li><li>**Input Validation**: Improve input validation and error handling throughout</li><li>**Configuration Security**: Use safe parsers everywhere except configuration</li></ul><h3>Performance</h3><ul><li>**Maps Loading**: Optimize maps loading with better caching and race condition fixes</li><li>**Redis Operations**: Improve Redis script loading and caching framework usage</li><li>**Fuzzy Storage**: Better handling of fuzzy operations and storage management</li><li>**Memory Usage**: Various memory optimization improvements</li></ul><h3>Documentation</h3><ul><li>**API Documentation**: Update API docs for multiple HTTP headers and various modules</li><li>**Tutorial Links**: Fix writing rules tutorial link and other documentation references</li><li>**Examples**: Add more examples for Lua HTTP and other modules</li><li>**Configuration**: Improve configuration documentation and examples</li></ul><h3>Testing</h3><ul><li>**Test Framework**: Fix various test issues and improve test configuration</li><li>**Fuzzy Tests**: Add comprehensive tests for split, read-only, and write-only server modes</li><li>**CDB Maps**: Add tests for CDB maps functionality</li><li>**HEIC Recognition**: Add tests for HEIC file recognition</li></ul>]]></description>
      <category>major</category>
    </item>
    <item>
      <title>Rspamd 3.11.1 - Feature Update with Bug Fixes</title>
      <link>https://docs.rspamd.com/changelog#version-3-11-1</link>
      <guid isPermaLink="false">https://docs.rspamd.com/changelog/3.11.1</guid>
      <pubDate>Sun, 15 Dec 2024 00:00:00 GMT</pubDate>
      <description><![CDATA[<h2>Rspamd 3.11.1 - Feature Update with Bug Fixes</h2><h3>Added</h3><ul><li>GPT: Add ollama support</li><li>Allow to hash any Lua types</li><li>Allow to use LLM for anonymize</li><li>Add ability to not send response_format in gpt plugin to support gpt4all</li><li>Allow to store shingles as opaque Lua data</li><li>Add &apos;noop&apos; redis backend for scripts running</li><li>Allow multiple lua scripts for fuzzy storage</li><li>Support LLM models consensus</li><li>GPT: Support reason adding</li><li>Add Redis caching framework</li><li>Add ability to create timers from Lua</li></ul><h3>Improved</h3><ul><li>Expand Detection of Fake Reply Subjects Across Multiple Languages</li><li>Add another acceptable mime type for icon</li><li>Respect ipv4 and ipv6 configurations for rbl resolve_ip</li><li>Set RBL checks to bool true</li><li>Rules regexp url separated and fix no subdomain cases for Google urls</li><li>WebUI: Reset dropdown when clearing filters</li><li>Pass both the multimap and the rules descriptions for combined multimap on create</li><li>Some small fixes to statistics_dump</li><li>More features to GPT plugin</li><li>Better support for maps and IP-related fixes/improvements in settings</li><li>Use caching framework in gpt module</li><li>Try to check maps earlier if their expires is too long</li></ul><h3>Fixed</h3><ul><li>Fix transposed results in `rspamadm fuzzy_ping`</li><li>connIp is not correctly added to request</li><li>Fix Thunderbird for Android marked with FORGED_MUA_THUNDERBIRD_MSGID_UNKNOWN</li><li>Fix issue with synchronous Redis calls</li><li>Fix some broken links</li><li>rbl check_types was missing images</li><li>RBL: fix use of `content_urls` and `images` inside `checks`</li><li>Use sub_utf8 to strip headers value to not break utf8 strings</li><li>Properly close multipart/related boundary when adding text footer</li><li>Verify key type to match DKIM signature type</li><li>Avoid collision hacks in mempool variables hash</li><li>Add expiration for neural ham and spam sets</li><li>Properly expire neural ham and spam sets</li></ul><h3>Changed</h3><ul><li>Log queue id with cloudmark analysis string</li><li>Allow to disable RBLs via map</li><li>Prevent option duplicates in rspamd_stats.pl</li><li>Regenerate manpages with recent Pandoc version</li><li>Fix spelling errors in libserver</li><li>Update JavaScript linters</li></ul><h3>Removed</h3><ul><li>Remove nixspam</li></ul>]]></description>
      <category>minor</category>
    </item>
    <item>
      <title>Rspamd 3.11.0 - Major Release with Breaking Changes</title>
      <link>https://docs.rspamd.com/changelog#version-3-11-0</link>
      <guid isPermaLink="false">https://docs.rspamd.com/changelog/3.11.0</guid>
      <pubDate>Sun, 01 Dec 2024 00:00:00 GMT</pubDate>
      <description><![CDATA[<h2>Rspamd 3.11.0 - Major Release with Breaking Changes</h2><h3>Breaking Changes</h3><ul><li>**Elasticsearch/OpenSearch Plugin**: Major rework with breaking changes</li><li>Added support for Elasticsearch 8 &amp; OpenSearch 2</li><li>Added index policy with logs retention</li><li>Updated configuration format</li></ul><h3>Added</h3><ul><li>Added LRU cache for last filled ratelimit buckets</li><li>Added utilities to manage ratelimit buckets</li><li>Added include/exclude logic for headers processing</li><li>Added `rspamadm mime strip` command for attachments removal</li><li>Added new message anonymization capabilities</li><li>Added more ways to extend Rspamd configuration, including `lua.local.d` folder</li></ul><h3>Improved</h3><ul><li>Improved address rotation algorithm for upstream selection</li><li>Replaced fastutf with simdutf for better architecture support and performance</li><li>Reworked symbol description display on hover in WebUI</li><li>Improved keyboard accessibility in WebUI</li><li>Enhanced symbol rendering in WebUI</li><li>Improved handling of DNS limits in SPF module</li><li>Improved GPT module JSON parsing</li><li>Multiple performance optimizations</li></ul><h3>Fixed</h3><ul><li>Fixed ARC-Seal signing issues</li><li>Fixed RFC 2047 header encoding</li><li>Fixed issues with dynamic keys in fuzzy storage</li><li>Fixed TCP connection handling with cumulative timeouts</li><li>Fixed multiple phishing detection false positives</li><li>Fixed DMARC structured headers encoding</li></ul><h3>Changed</h3><ul><li>Skip extra RBL checks when Received IP matches From IP</li><li>Multimap now uses only distinct text parts for content matching</li><li>Various configuration and logging improvements</li></ul>]]></description>
      <category>major</category>
    </item>
  </channel>
</rss>