Rspamd Changelog

New in version 0.9.10

September 10th, 2015
  • Improved optimizations via abstract syntax tree for all expressions (my presentation describes some basic principles of optimizations.
  • Switched to luajit and pcre jit by default. JIT compilation allowed to improve the performance in the bottlenecks so now rspamd is significantly faster than 0.8 branch.
  • Added spamassassin rules support: you can now use the most of your spamassassin rules in rspamd natively. Of course, they are optimized with JIT and AST techniques.
  • Added encryption support: rspamd now can encrypt all traffic with extremely fast and low latency encryption based on public key cryptography and cryptobox construction.
  • New aho-corasic implementation has been imported. Now rspamd can search for hundreds thousands of search patterns in almost linear time.
  • New statistics architecture:
  • advanced tokenization techniques (secure or fast hashes);
  • improved UTF8 tokenization;
  • avoid multiple learning by the same message by maintaining learning cache;
  • improved features normalization to reduce false positives rate.

New in version 0.6.8 (February 4th, 2014)

  • This version fixes a bug when the controller was bound to by default instead of localhost.
  • Various fixes and improvements for the rbl module.
  • Allows custom configuration via .try_include macro in the default config file.
  • Fixes an issue with the random number generator in DNS code.
  • Optimizes the hfilter plugin. Fixes the whitelist module.
  • Some default weights and actions were tuned.

New in version 0.6.7 (January 11th, 2014)

  • This release fixes several important issues.
  • It binds on the both IPv6 and IPv4 wildcard addresses.
  • A serious calculation bug in statistic has been fixed (it was valid for some platforms, including FreeBSD).
  • The DNS ID generator now uses a more fast and secure ChaCha20 based permutator (the TEA permutator was used previously).
  • A number of minor bugs have been fixed, including setting zero weight for unknown symbols.
  • A new documentation project has been started.

New in version 0.6.6 (December 28th, 2013)

  • An issue with the BUFSIZ limitation in the controller output was fixed.
  • Escaping of logging symbols was simplified.
  • Weights were adjusted for several rules.
  • Spamhaus RBL support was improved.
  • PBL was removed from received header checks.
  • A hfilter module that performs various HELO and IP checks was added.
  • Rspamd can now be reloaded using the HUP signal.
  • Fuzzy storage should expire hashes properly.
  • The build system has been reworked for better support of pkg-config.
  • Various minor bugs were fixed.

New in version 0.6.5 (December 21st, 2013)

  • A critical bug in the DNS resolver was fixed. multimap and rbl plugins were improved to skip invalid IP addresses.
  • A dns_sockets option was added for tuning sockets per server in the DNS resolver.
  • Packages for rspamd were improved.

New in version 0.6.4 (December 19th, 2013)

  • This version added IO channels for DNS requests to balance load and reduce the chance of ID collisions.
  • A bug in the SPF filter that may have caused core dumps in specific circumstances was fixed.
  • The default config of the rbl module was fixed .
  • It is now possible to get a list of rspamc commands with their descriptions.
  • SORBS dnsbl was added to the default config.
  • The 2tld file for the surbl module has been significantly extended.
  • An issue in libucl when parsing macros was fixed.

New in version 0.5.6 (June 11th, 2013)

  • This version fixes bugs in the rolling history update and in UDP socket handling in the fuzzy storage code.
  • It adds an ability to scan input streams without Content-Length headers, making it possible to handle streaming clients.
  • It implements the counters output for controller and rspamc client to display statistics about rspamd symbols, their frequencies, and average execution times.
  • It improves the build system to work with lua 5.2 and to detect the mathematical functions required.

New in version 0.5.5 (June 6th, 2013)

  • The Bayes statistical module now uses the inverse chi-square distribution for normalizing, which increases accuracy of spam filtering.
  • Support for IPv6 was improved with the ability to listen on IPv6 addresses, address selection algorithms, and support for IPv6 DNS resolvers.
  • Fuzzy storage has been improved to support update requests only from specific IP addresses.
  • A number of bugs in the main code and Web UI were fixed.
  • A CentOS RPM spec file has been added.

New in version 0.5.4 (February 8th, 2013)

  • This is the first rspamd version with a user-friendly Web interface based on JS+HTML5.
  • Many cleanups and bugfixes have been done, oriented to maximum performance and stability.

New in version 0.5.2 (August 24th, 2012)

  • This version adds Lua bindings for basic MIME parts and a DNS resolver.
  • Existing Lua bindings now work without a task object, allowing you to use them in custom code.
  • The threads system was reworked to avoid global Lua interpreter lock.
  • The DKIM module now converts all line endings to CRLF as opendkim does.
  • The URL detector is now more accurate for text parts.
  • Several critical bugs and memory leaks were fixed.

New in version 0.5.0 (June 9th, 2012)

  • This version adds an SMTP lightweight balancing proxy with XCLIENT support, lua bindings for upstream objects and APIs, pre-filters which support initial checking for messages, a ratelimit plugin which uses the redis protocol to store data, ipv6 support to spf and some other modules, an "unbreak spf" plugin, the ability for options with the same name be treated as a list, a DKIM plugin and parsing code, separation of the build system to put logic in several shared libraries, and many bugfixes.

New in version 0.4.7 (February 22nd, 2012)

  • This version reworks the system of workers initialization, providing a more comfortable way to init and create new workers.
  • It adds threading support for parallel processing of stat files and regular expressions.
  • It makes many of the rspamd subsystems thread-safe.
  • It reworks the event system; several old and new bugs are fixed.

New in version 0.4.6 (December 21st, 2011)

  • A Lua API has been added to access a kvstorage or redis server.
  • The Lua API is heavily reworked to support local function callbacks in addition to global ones.
  • Rspamd asynchronous event handling was completely reworked, allowing execution of all network operations at the same time.
  • A new plugin, ip_score, can be used for scoring IP addresses based on the amount of spam/ham received from them.

New in version 0.4.5 (November 22nd, 2011)

  • This version has new key-value storage that is designed for storing data for spam filtering (like scores, hashes, etc).
  • Key-value storage has a memcached and redis compatible API (with a subset of commands) and supports bdb, SQLite, or file backends for persistent keys storage.
  • Rspamd now uses a thread-safe libevent API and can now work with libevent 2.
  • Network I/O operations were improved by vectorizing output.
  • Several gmime related bugs are also fixed.
  • Debian package information was added, including a multi-instances starting script.

New in version 0.4.4 (October 11th, 2011)

  • A Lua critical bug that caused memory leakage in all Lua modules was fixed.
  • Rspamd now supports IDN name resolution.
  • Librspamdclient is now thread safe.
  • Workers now can be initialized many times independently.
  • Several fixes to HTTP/JSON mode.
  • Many minor bugs are also fixed.

New in version 0.4.1 (July 26th, 2011)

  • Several important bugs were fixed, including memory leaking when a client incorrectly closes a connection.
  • Socket shutdown from a client is handled in the right way.
  • Events are now properly configured and added in several places.
  • It is now possible to specify "max_size" for the regexp module to limit regexp checks.
  • The "max_tokens" option was also added to the statistics module to limit checks of very long messages.
  • The "max_tasks" option is now available for workers to limit tasks per worker value.
  • A sample configuration file was updated according to the changes.

New in version 0.4.0 (July 25th, 2011)

  • This version focuses on stability and UTF mode for processing messages.
  • UTF-8 is now the default mode.
  • Statistics were rewritten for working with UTF.
  • Fuzzy hashes were optimized.
  • Stat file synchronization was repaired.
  • The ability to pre-select stat files based on message before classifying was added.
  • Many bugs were fixed and a couple of features were implemented.

New in version 0.3.14 (June 13th, 2011)

  • Write logbuf safely.
  • Fix trie text search.
  • Fix memory issues.
  • Improve performance of trie search.

New in version 0.3.13 (June 5th, 2011)

  • The build system was reworked and improved to be more fast.
  • Blacklists and whitelists have been added to the user's settings.
  • Key-value map storage has been added.
  • The maillist plugin can detect majordomo, Google, and Yahoo groups lists.
  • The rspamc client now has more tuning options.
  • Parsing of raw headers was optimized.

New in version 0.3.12 (April 26th, 2011)

  • A configuration parameter was added for setting up DNS servers from XML if using resolv.conf for rspamd is not a good idea.
  • Two strategies were added for selecting a DNS server: weighted and master/slave.
  • Several improvements were made to the phishing detector: nested HTML tags inside and tags are ignored.
  • Lua functions were added to get the date of a message and the date of a task.
  • Two rules were implemented: DATE_IN_FUTURE and DATE_IN_PAST.
  • The documentation was updated.

New in version 0.3.11 (April 1st, 2011)

  • Greatly improved support for non-MIME mode.
  • Rspamd now supports HTTP requests and may format the reply as JSON data.
  • This makes it easy to check any messages (like forum/blog comments or IM messages) from any application written in any language that supports HTTP and JSON.
  • rspamd can now be learned via worker, which also simplifies interaction with rspamd (must be turned on in the configuration).
  • Some performance issues are fixed: now statfiles are preloaded at rspamd start, and timeouts for all operations are moved from hardcoded ones to configuration options.

New in version 0.3.10 (March 24th, 2011)

  • Improved rspamd performance under high load: when rspamd cannot process all email (due to overload), it turns off several filters to process the queue faster.
  • The ability to specify individual domain lists for phishing checks has been added.
  • Improved logic of rspamd termination now has hard timeout from receiving the termination signal until forceful killing of all workers.
  • Now rspamd extracts URLs from mail subjects.
  • A bug with cdb handling in multimap, a bug in phishing detection, and a bug in received_rbl module configuration have been fixed.

New in version 0.3.8 (March 16th, 2011)

  • This version fixes several serious bugs leading to core dumps of rspamd in some situations.
  • It fixes several memory leaks.
  • It adds CDB lookup support to Lua plugins and rules.
  • It improves the multimap plugin to check recipients and senders in a comfortable way, and adds cdb lookups to the multimap plugin.

New in version 0.3.6 (February 8th, 2011)

  • This version adds a module for checking email in messages.
  • It adds manual pages for rspamd components.
  • It fixes several important bugs: fuzzy hashes were not actually stored due to early expiration, the rspamc client no longer does a double free of memory, The memory_pool library now properly aligns new pointers, and descriptors leakage in the controller is fixed.

New in version 0.2.7 (September 24th, 2009)

  • added settings support (for domains and users in json format)
  • new system of async events
  • lua API is now working, sample plugin for checking received headers via RBL is added
  • fixed lots of bugs

New in version 0.2.6 (August 27th, 2009)

  • fuzzy hash storage worker
  • received headers parser
  • fixed many bugs and leaks