You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ChangeLog 42KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980
  1. 1.0.0:
  2. * Rework symbols processing:
  3. - Improve sorting logic for symbols
  4. - Organize processing into multiple stages
  5. - Added asynchronous watchers for symbols
  6. - Added ability to organize dependencies between symbols
  7. * Fixed URL redirector:
  8. - Use optimized POE loop
  9. - Organize dependencies
  10. - Fix startup
  11. * New sqlite3 backend:
  12. - Allow to have per-languages and per-user statistics
  13. - Allow sqlite3 to be used as statistics backend
  14. * Store tokenizer configuration within statfiles
  15. * Improve bayes statistics:
  16. - Use headers and images metainformation in bayes
  17. - Suggest using of pre-processed tokens for statistics
  18. - Fix tokens normalization for OSB algorithm
  19. * Rewrite url parsing:
  20. - Fix numerous issues with url extraction and normalization
  21. - Fix mailto urls
  22. * Fix settings plugin to allow custom actions scores
  23. * Improve rbl plugin
  24. * Allow capturing patterns in rspamd lua regexp library
  25. * Add GTUBE support
  26. * Fix spamc legacy support
  27. * Add DKIM support to RBL module
  28. * Fix issues with multiple DKIM signatures
  29. * Fix issue if rspamd cannot create statfiles (#331)
  30. * Rework parts and task structure:
  31. - Now text_parts, parts and received are arrays
  32. - Pre-allocate arrays with some reasonable defaults
  33. - Use arrays instead of lists in plugins and checks
  34. - Remove unused fields from task structure
  35. - Rework mime_foreach callback function
  36. - Remove deprecated scan_milliseconds field
  37. * Add ip_score plugin support (not enabled by default):
  38. - Can check for asn/country and network using DNS lookups
  39. - Can store and load reputation from redis server
  40. * Improve PARTS_DIFFER rule to count merely different words
  41. * New HTML parser:
  42. - Parses HTML parts using a set of state machines
  43. - Extracts useful data and exports it to lua functions:
  44. + Styles
  45. + Images
  46. + URLs
  47. + Colors
  48. + Structure elements
  49. - Added HTML rules for some checks
  50. * New version of LUA DNS API
  51. * Table versions of many functions in LUA API
  52. * Improve rspamc client:
  53. - Print execution time
  54. - Allow executing of external commands and passing output to them
  55. - Allow mime output mode when rspamc alters message according to rspamd
  56. checks and send it to an external command or stdout
  57. * Allow scanning of local files using HTTP requests
  58. * Rework configuration system:
  59. - Rules are now moved from the $CONFDIR to $RULESDIR to avoid ambiguity
  60. - All modules configurations are now split in $CONFDIR/modules.d/* to
  61. simplify upgrades
  62. - Move hfilter to plugins
  63. - Allow plugins and rules to define default scores to simplify metrics
  64. setup
  65. - Include overrides for all modules to honor local/automatic parameters
  66. - Tune scores for many modules
  67. * Rework and enable DMARC plugin
  68. * Add whitelist plugin for SPF/DKIM/DMARC based whitelisting
  69. * Add some common domains to whitelists shipped with rspamd
  70. * Rework logging:
  71. - Now each log entry supports module name and a `tag`. Tag is used to
  72. identify unique objects (such as tasks) when checking log files
  73. - It is possible to turn on debugging for the specific modules
  74. - Systemd logging is fixed
  75. * Improve spamassassin plugin.
  76. - Now headers are matched more like SA
  77. - Improve support of Message-ID
  78. - Add support of ToCc header type
  79. - Fix :addr and :name in headers regexps
  80. * Resurrect rrd support code
  81. * Save controller stats between restarts
  82. * Fixed tonns of bugs
  83. * Added tonns of minor improvements and features
  84. * Added more unit tests
  85. * Create functional tests framework
  86. * Added documentation for missing modules
  87. * Added rpm/deb repositories and scripts
  88. * Updated WebUI and libucl externals
  89. 0.9.10:
  90. * Do not dereference null pointer on learning.
  91. * Fix some extreme cases in BAYES.
  92. * Add a workaround to avoid bad HTML messages breaking.
  93. * Build with -O2 flags by default.
  94. * Add constraints to limit DNS requests count per task.
  95. * Add workaround for SURBL DNS flood.
  96. * Set error if rspamd cannot learn anything.
  97. 0.9.9:
  98. * Don't use RWL_SPAMHAUS_WL (unknown result) for whitelisting (by @fatalbanana)
  99. * Import updated public suffix list (by @fatalbanana)
  100. * Remove debug message
  101. * Fix settings (by @fatalbanana)
  102. * Remove duplicated symbol registration
  103. * Use WAL for fuzzy storage
  104. * RBL fixes (by @fatalbanana):
  105. - silence errors;
  106. - yield unknown results from RBLs;
  107. - fix scoring for DNSWL;
  108. - fix use of RBL name as symbol;
  109. - ignore RBL names that would not be yielded;
  110. * Support captures in regular expressions
  111. * Add captures support to lua_regexp
  112. * Support dist on FreeBSD and Darwin
  113. * Add RCVD_IN_DNSWL_NONE as whitelisting exclusion (by @fatalbanana)
  114. * Multiple fixes to URL detection:
  115. - support port definition;
  116. - fix query and path recognition;
  117. - fix parsing of multiple slashes in URL;
  118. - fix parsing query just after port;
  119. - fix path field in `url:to_table` method;
  120. - improve support of IP based URLs.
  121. * Set ignore_whitelists = true for RECEIVED_SPAMHAUS_XBL (by @fatalbanana)
  122. * Add GTUBE support
  123. * Ignore User header in SA mode
  124. 0.9.8:
  125. * Fix critical bug in bayes classifier (#305)
  126. * Fix critical bug in RBL module (by @fatalbanana)
  127. * Fix and rework settings plugin.
  128. * Fix get_all_opts for a case of non-iterable options.
  129. * Use tld for redirector's matching.
  130. 0.9.7:
  131. * Add whitelist_exception setting to RBL module (by @fatalbanana)
  132. * Don't use RWL_MAILSPIKE_POSSIBLE or DNSWL_BLOCKED for whitelisting (by
  133. @fatalbanana)
  134. * Fix extreme cases in bayes classifier.
  135. * Fix parsing of urls with '?' at the end of hostname.
  136. * Update interface.
  137. * Fix number of issues with webui interaction.
  138. * Fix saving maps.
  139. * Allow user@ and @domain matches in multimap.
  140. * Fix issues with bounces From processing.
  141. * Fix abs/fabs misuse.
  142. * Fix builds on suse and arch linux distributions.
  143. 0.9.6:
  144. * Fix memory leak if mime cannot be parsed.
  145. * Fix dkim cache expiration.
  146. * Fix issues with redirector HTTP response.
  147. * Fix abnormal connection closing with certains messages with a high score
  148. (issue #296)
  149. * Fix redirector installation.
  150. * Use specific POE loop for some systems.
  151. * Fix number of issues in URL redirector.
  152. * Fix selecting URLs for sending to redirector.
  153. 0.9.5:
  154. * Avoid double free when extending HTTP message.
  155. * Fix double free if multiple classifiers are defined.
  156. * Fix misprint in spamassassin plugin.
  157. * Fix cpuid invocation on i386.
  158. * Fix ownership issues for zero-copy decode.
  159. * Allow __len metamethod on rspamd{text}.
  160. * Add base64 decoding lua utility.
  161. * Fix build on FreeBSD
  162. * Skip spaces at the beginning of mime messages.
  163. * DBL_ABUSE_REDIR should not have significant weight.
  164. * Allow to split by lua_regexp rspamd{text} objects.
  165. * Allow to specify custom stop pattern for lua_tcp.
  166. 0.9.4:
  167. * Fix critical bugs in tokenization algorithm
  168. * Write unit tests for tokenization
  169. * Add documentation for lua_tcp
  170. * Switch off legacy tokenization by default.
  171. * Fix critical bugs in words normalization
  172. * Add lua bindings to tokenizer.
  173. * Implement storing of HTTP headers inside task
  174. * Add lua API to accerss HTTP headers data
  175. * Implemented base64 encoding suitable for MIME
  176. * Use caseless hash and equal functions for HTTP request headers.
  177. * Improve debian architectures support (by @dottedmag)
  178. 0.9.3:
  179. * Revert incorrect regexp change that broke the default rules
  180. * Fix lua_tcp module
  181. 0.9.2:
  182. * Fix error on spawning unique workers.
  183. * Add preliminary version of generic LUA TCP requests API.
  184. * Use lua 5.1 if luajit is not available (Arm64, PowerPC, s390x etc)
  185. * Fix fuzzy mime strings with only type.
  186. * Improve thunderbird sanity checks.
  187. * Fix critical bug on matching regular expressions.
  188. * Make hiredis optional dependency.
  189. * Fix multiple bugs in daemon reloading
  190. 0.9.1:
  191. * Restore utf8 validation for regular expressions to avoid crashes
  192. * Fix symbols displaying in the interface
  193. * Add symbol groups to the interface
  194. * Fix maps ID parsing in the controller
  195. * Add multimap and regexp modules documentation
  196. * Backport fixes from libucl
  197. * Fix debian package (by @dottedmag)
  198. * Rework XXH32 invocations
  199. 0.9.0:
  200. * Add support of the fast and secure protocol level encryption:
  201. - curve25519 is used for key exchange;
  202. - chacha20/poly1305 cryptobox construction for bulk encryption;
  203. - zero latency overhead;
  204. - encrypting and balancing HTTP proxy worker
  205. * Rework expressions and create new expressions library:
  206. - aggressive optimizations based on the abstract syntax tree;
  207. - abstract expressions support (regular expressions, functions, lua modules
  208. composites and so on)
  209. - New comparision and '+' operators support
  210. - New greedy algorithm to minimize execution time of expressions and
  211. all symbols
  212. - Dynamic expressions benchmark and reoptimizations
  213. * Many improvements to the LUA API:
  214. - reworked logger module allowing to do pretty print of the most of lua
  215. types (including tables and userdata classes)
  216. - reworked lua redis and lua HTTP to support more features
  217. - added opaque type for passing large text chunks without copying
  218. - new regexp module with many auxiliary functions (e.g. `re:split`)
  219. * LuaJIT is now the default requirement for rspamd allowing to speed up lua
  220. execution by a large margin (however, plain lua is still supported)
  221. * New plugins:
  222. - spamassassin rules plugin that allows to load and re-use the most of
  223. SA rules natively
  224. - DMARC plugin that evaluates SPF and DKIM policies to the domain policies
  225. - many old plugins has been reworked to implement new features and improve
  226. stability
  227. * New aho-corasic trie implementation from @mischasan that allows to load and
  228. use hundreds of thousands of patterns with no influence on load
  229. * Support of PCRE JIT and PCRE JIT fast path modes that significantly improves
  230. the performance of regular expressions if supported by PCRE
  231. * New URLs parser and extractor:
  232. - removed legacy code that was useless for url finding
  233. - reworked algorithms of URL parsing for more precise and accurate results
  234. - added top-level-domains tree from http://publicsuffix.org
  235. - improved emails parsing
  236. - removed many phishing false positives due to TLD tree check
  237. * New statistics infrastructure:
  238. - created a separate layer of statistic library
  239. - improved OSB-Bayes by re-weighting tokens according to the original
  240. academic paper and `crm114` implementation, which reduced false positives
  241. rate significantly
  242. - created learn cache to avoid double learning of statistics and providing
  243. an efficient way to re-learn class for a message
  244. - created abstract layers for different statistics backends
  245. - implemented new tokenization algorithms with fast or secure (siphash)
  246. hashes to generate statistics features
  247. * Reworked utf8 tokenization that previously corrupted all UTF8 words (minor
  248. incompatibility with old fuzzy hashes with utf-8 symbols)
  249. * SPF module has been completely rewritten to support complex cases of
  250. `include` and `redirect` within SPF records
  251. * DKIM module now supports multiple signatures
  252. * Controller passwords can now be stored encrypted by `PBKDF2-HMAC` in the
  253. configuration file
  254. * Many hand-written HTTP clients has been replaced with the common rspamd
  255. http module
  256. * New test framework:
  257. - import lua `telescope` test framework
  258. - add unit tests for many rspamd modules and routines
  259. - create a unit test for each possible bug found
  260. - use luajit ffi for testing C code
  261. - added preliminary support of functional testing by creating tasks from lua
  262. * Randomize hash seed to avoid certain hash tables vulnerabilities
  263. * Documentation improvements:
  264. - added documentation for the vast majority of rspamd modules
  265. - added documentation for rspamd protocol
  266. - added documentation for the most of rspamd LUA extensions
  267. * Fixed tonns of bugs and memory leaks
  268. * Added tonns of minor features
  269. 0.8.3:
  270. * Various critical fixes in distribution (by @dottedmag and @fatalbanana)
  271. * Fixed bugs in url detector to parse certain patterns
  272. * Add default host and helo for a client
  273. * Some sanity checks for tokenizer and classifier
  274. * Reiterate on systemd support
  275. * Fix missing symbol registration
  276. * Add support of spamc compatible output
  277. * Filter double-dots in rbl.lua validate_dns (by @fatalbanana)
  278. * Update ucl submodule due to critical bugfix
  279. 0.8.2:
  280. * Create fuzzy db if it does not exist
  281. * Fix: Centos init script: configtest() (by @AlexeySa)
  282. * Enable one_shot for RECEIVED_SPAMHAUS_XBL - Fixes #102 (by @fatalbanana)
  283. * Update Exim patch (by @fatalbanana)
  284. * Fix processing of unix sockets.
  285. * Allow applying settings to authenticated users (by @fatalbanana)
  286. * Make settings priorities work as documented (by @fatalbanana)
  287. * Fix race condition in symbols planner
  288. * Add DNSWL_BLOCKED symbol (by @fatalbanana)
  289. * Make Exim pass usernames to rspamd (by @fatalbanana)
  290. * Update RBL module (by @fatalbanana):
  291. - fix indentation;
  292. - collapse loops;
  293. - avoid calling for un-needed information;
  294. - allow disabling RBLs for authenticated users
  295. * once_received.lua: Fix indentation & add exclusion for authenticated users (by @fatalbanana)
  296. * hfilter.lua: Add exclusion for authenticated users (by @AlexeySa)
  297. * Updates to hfilter rules (by @AlexeySa)
  298. * Set empty <> user or addr for msgs without FROM (by @eneq123)
  299. * Fix: attempt to index field '?' (a nil value) (by @eneq123)
  300. * Fix: if not exist Date-header (by @AlexeySa)
  301. * Add task:get_content() method.
  302. * rbl.lua: Ignore private IP space (by @fatalbanana)
  303. * Allow to check radix maps from lua by rspamd{ip}
  304. * Make local exclusions configurable per-RBL (by @fatalbanana)
  305. * Add rspamd_config:radix_from_config() (by @fatalbanana)
  306. * Support emails dnsbl in rbl (by @fatalbanana)
  307. * Complete rework of url extraction logic
  308. * Allow customizations for unix sockets. (fixes #182)
  309. * Set lua path according to rspamd settings.
  310. * Import lua-functional for plugins stuff.
  311. * Completely rewrite multimap plugin in functional style.
  312. * Fix FORGED_MUA_THUNDERBIRD_MSGID (fixes #186)
  313. * Check IPv6 addresses at dnswl.org and Spamhaus whitelist (by @fatalbanana)
  314. * Add lowercase utility for utf8 strings.
  315. * Various fixes to build system
  316. * Updated debian configuration infrastructure (by @dottedmag)
  317. 0.8.1:
  318. * Add sqlite and perl as dependencies for RPM/Debian packages (by @fatalbanana)
  319. * Remove whitelist.lua from RPM file list (by @fatalbanana)
  320. * Make Exim pass hostnames to rspamd (by @fatalbanana)
  321. * Fix building on Fedora (by @fatalbanana)
  322. * Add toggle for disabling installation of systemd units on Linux (by @fatalbanana)
  323. * Fix double format rounding that caused output corruption (reported by @fatalbanana)
  324. * Revert broken change for destructors ordering that led to memory corruption
  325. * Do not reset symbols case of settings if parsed from lua (reported by @andrejzverev)
  326. * Fix build on SunOS (by @wiedi)
  327. * Fix multiple crashes on broken DKIM DNS records
  328. * Fix critical issue with composites weights removing
  329. * Fix memory corruption in composites processing code
  330. * Ignore non-SPF TXT records when parsing SPF includes
  331. 0.8.0:
  332. * New fuzzy check logic:
  333. - use shingles algorithm for fuzzy matching
  334. - use blake2 instead of md5 for larger output space
  335. - combine fuzzy and strict matching
  336. - allow to organize private storages by means of keys
  337. - preserve compatibility with previous versions
  338. * New fuzzy storage:
  339. - use sqlite instead of own memory based hash tables
  340. - rework commands interface
  341. - add conversion from the old format
  342. - add fuzzy match by shignles
  343. - support old rspamd versions
  344. * Add lemmatizing for words used in fuzzy hashes that allows to improve match
  345. quality by using of the first forms of all words
  346. * Rework language detection
  347. * Fix several critical bugs, memory leaks and deadlocks:
  348. - memory leak in HTML nodes parsing
  349. - deadlock in logger code
  350. - deadlock in signals processing
  351. - crashes in fuzzy_storage
  352. - crashes in tokenizers if the input was empty
  353. * Import new libucl with several bugfixes and improvements
  354. * Support listening on ipv6 addresses only
  355. * Fix macro expansion in SPF module
  356. * Several bugfixes in DKIM module
  357. * Add load headers support for mime parts to the lua API
  358. * Add documentation for:
  359. - workers in general
  360. - fuzzy_storage worker
  361. - fuzzy_check plugin
  362. - mimepart and textpart lua API modules
  363. 0.7.6:
  364. * Apply boundary fix for dkim simple canonization
  365. * Fix ping command
  366. * Return nil if header was not found in lua_task
  367. * Fix hang in upstreams revive logic
  368. * Decode entitles when normalizing HTML parts
  369. * Fix logic of finding URLs in HTML parts
  370. * Do not include \0 into length of text when performing conversion to utf8
  371. * Fix raw vs parsed reperesentations
  372. Raw parts are now:
  373. - decoded b64/qp, but *NOT* converted to utf-8
  374. Processed parts are now:
  375. - converted to UTF-8
  376. - normalized if needed (e.g. HTML tags are stripped)
  377. * Rework DKIM canonization to line based
  378. * Fix fuzzy hashes addding
  379. * Use more specific hash function for fuzzy
  380. * Fix leaking of iconv descriptors
  381. * Fix PTR resolving in lua resolver
  382. * Rework spf module.
  383. - Copy data to memory pool as cached record might be destroyed causing
  384. freed memory being passed to the protocol output (use after free)
  385. - Allow SPF_NEUTRAL policy to be handled separately
  386. - Add R_SPF_NEUTRAL to the default config
  387. * Rework `register_symbols` function
  388. * Allow to disable components of hfilter
  389. 0.7.5:
  390. * Fix owner when creating folder /run/rspamd (by @sfirmery)
  391. * Fix IP validity checks
  392. * Decode URLs obtained from HTML tags
  393. * Fix crash with unweighted upstreams
  394. * Stop processing headers in parts
  395. * Set sockaddr.sa_family properly when connectig to upstreams
  396. * Fix reload issues in surbl and fuzzy_check (reported by @citrin)
  397. * Fix timeouts in redirector
  398. * Improve lua errors reporting
  399. * Fix lua closures processing in libucl
  400. * Rework calling of lua functions from regexp module
  401. * Choose raw regexp for raw headers
  402. * Rework conversion to utf since glib one is broken
  403. * Ignore SGML style tags in html
  404. * Fix old bug with non-capturing https urls
  405. * Fix memory corruption on fuzzy reload (reported by @citrin)
  406. * Fix percents display in rspamc
  407. * Fix buffer update for DKIM
  408. * Do not validate utf for raw headers
  409. 0.7.4:
  410. * Fix build under *BSD
  411. * Detect HAN unicode script
  412. * Implement language detection heuristic for text parts
  413. * Fix time output in history
  414. * Improve piechart coloring
  415. * Fix \r\n conversion in DKIM module (reported by @citrin)
  416. * Try to detect systems with no IPv6 support
  417. * Fix multiple/single values in use settings (reported by @citrin)
  418. * Rework IP addresses in upstreams:
  419. - Select ipv4/unix addresses if they exist and use ipv6 for ipv6 only
  420. upstreams (since the support of ipv6 is poor in many OSes and
  421. environments)
  422. - Free IP list on upstream destruction
  423. - Add test cases for addresses selection
  424. - Allow adding of free form IP addresses to upstreams
  425. * Fix endiannes in lua_radix search (reported by @citrin)
  426. * Soft shutdown should also set wanna_die flag (reported by @citrin)
  427. * Stop use-after-free in event loop termination
  428. * Fix processing of very short messages in DKIM (reported by @citrin)
  429. * Detect systems without shared mutexes
  430. * Fix issues with PTR and MX elements in SPF parser (reported by @citrin)
  431. 0.7.3:
  432. * New upstreams code:
  433. - simplify upstreams API;
  434. - unify strings parsing in upstreams definition;
  435. - add configuration options for the upstreams;
  436. - for failed upstreams re-resolve their addresses;
  437. - use all resolved addresses for an upstream (round-robin);
  438. - implement stable hashing and use it by default for upstreams;
  439. - add unit test for upstreams module.
  440. * Rework signals processing in all rspamd workers:
  441. - signals are now processed in the event loop;
  442. - implement the most common signal handlers for all workers;
  443. - add callbacks for workers specific signal handlers
  444. * Fix critical issue with fuzzy storage:
  445. Fuzzy stroage could not save any hashes on termination due to bugged
  446. signals handling
  447. * Fix roll history IP storage
  448. * Rework ipv4/ipv6 handling in parsing addresses:
  449. - turn off support of IPV6_V6ONLY socket option;
  450. - create ipv6 socket prior to ipv4 one to handle systems with v6/v4
  451. sockets enabled (Linux)
  452. * Remove CBL as it's wholly included in Spamhaus XBL (by @fatalbanana)
  453. * Remove nszones.com fake RBL (by @citrin)
  454. * Fix upstreams interaction for fuzzy_check
  455. * Verify spf PTR records (reported by @citrin)
  456. * Fix spf MX records parsing
  457. * Add compatibility for old libevent (by @yellowman)
  458. * Sync bugfixes from libucl
  459. 0.7.2:
  460. * Convert all maps to the compressed radix trie
  461. * Allow IPv6 addresses in IP maps
  462. * Remove dynamic items support from symbols cache
  463. * Allow hex encoded output of strings
  464. * Fix bug with control connections count
  465. * Process fuzzy weight correctly (reported by @fatalbanana)
  466. * Remove extra reference retain of http connection on error
  467. * Remove deprecated options from the default config
  468. * Add `one_shot` attr to metric's symbols
  469. * Doc: add documentation for metrics
  470. * Add Upstart job to debian packaging (by @CameronNemo)
  471. * Config: improve SURBL symbols descriptions (by @citrin)
  472. * Config: reflect SURBL changes (by @citrin):
  473. - Outblaze removed, malware moved to separate list:
  474. http://www.surbl.org/news/internal/MW-malware-sublist-added-to-multi
  475. * Fix C modules initialization on restart
  476. * Treat single IP as a single IP in radix lists (reported by @citrin)
  477. * Do not touch file and core limits if not asked explicitly (reported by @citrin)
  478. * Improve logging for fuzzy errors
  479. * Block SIGPIPE for HTTP writing
  480. * Doc: update manual pages
  481. * Fix HTTP connection termination
  482. * Reduce default number of parallel requests to 8
  483. * Sync with libucl include features
  484. 0.7.1:
  485. * Fix typo in stat output.
  486. * Fix issues with includes crossing with the system includes
  487. * Restore testing framework
  488. * Add radix trie test suite
  489. * Implement new path-compressed radix trie.
  490. - The performance benefit over the old algorithm is about 1.5 times.
  491. - Memory usage is significantly lower as well.
  492. - Now radix trie can accept any IPv4/IPv6 values
  493. * Various improvements to the memory pools code
  494. * Fix writing reply to a client when no filters are defined
  495. * Write base32 encoded fuzzy
  496. * Fix 'soft reject' action
  497. * Fix rspamd reload and modules reconfiguration
  498. * Fix subject rewriting for the default subject
  499. * Fix states for processing task and pre-filters
  500. * Fix issues with connection closing
  501. * Fix crashes in rdns
  502. * Fix ratelimit pre-filter
  503. * Update exim patch.
  504. - Update to the recent exim version
  505. - Strip extra leading src/ from the patch
  506. - Remove sendfile since it was broken
  507. - Fix rspamd spam report for exim
  508. * Improve documentation
  509. 0.7.0:
  510. * Use HTTP protocol for all operatiosn
  511. * Webui worker is now removed and controller works as webui
  512. * Allow to serve static files via controller by option `static_dir`
  513. * Rspamd interface is now a part of rspamd
  514. * Rspamc client has been rewritten to use HTTP and non-blocking mode
  515. allowing to start multiple operations simultaneously (see `-n` option)
  516. * Lua API was completely reworked to satisfy modern standards of LUA:
  517. * Module `lua-message` was removed
  518. * Reduced number of superglobals registered by rspamd
  519. * Many functions has been redesigned
  520. * Symbols registration is now more convenient
  521. * Users settings has been rewritten as lua plugin
  522. * Reworked headers system as gmime's based one misses many headers and is
  523. very slow to get headers values
  524. * Reorganized code and removed embedded jannsson by using UCL for all json
  525. parsing
  526. * Migrated to `librdns` for DNS resolving that improves concurrency for
  527. DNS requests significantly
  528. * Fixed tonns of bugs in MIME processing
  529. * Improved metrcis and default symbol's weights
  530. * Added new RBL's
  531. * Fixed a number of issues in the modules
  532. * Removed several memory leaks found
  533. * Fix unicode processing
  534. * Fix fuzzy checking for unicode parts
  535. * Significantly improve documentation and especially LUA API docs
  536. * See migration notes at https://rspamd.com/doc/migration.html
  537. 0.6.8:
  538. * Controller now listen for localhost and not for 127.0.0.1 by default
  539. * Allow FCrDNS-style RBL lookups (by @fatalbanana)
  540. * Reduce threshold for parts_differ function.
  541. * Fix hostname lookup for rdns rbl (by @AlexeySa)
  542. * Fix HFILTER_URL_ONELINE to reduce false positive rate.
  543. * Fix whitelist module.
  544. * Allow override system predefined settings without touching system ones
  545. by .try_include macro (by @andrejzverev)
  546. * Check for [ip.address]-style HELO and suppress lookups. (by
  547. @fatalbanana)
  548. * Optimize hfilter (by @AlexeySa)
  549. * Fix issue with random numbers generator in dns.
  550. * Use more clever time values to setup entropy.
  551. * Synced with the recent libucl.
  552. 0.6.7:
  553. * Use ChaCha20 for DNS generator (more secure DNS id)
  554. * Unknown symbols now has zero weight and not 1.0
  555. * Fix fuzzy hashes expire time
  556. * Fix critical issue in statfiles on FreeBSD 9 (and some other platforms)
  557. * Add .include_map macro to ucl parser
  558. * Update libucl
  559. * Fix headers end detection for DKIM module
  560. * Fix a bug in received headers parser
  561. * Validate IP addresses before pushing them to lua
  562. * Start new documentation project
  563. * Fixed tonns of other minor bugs
  564. * Start to prepare for 0.7 with HTTP protocol and new settings
  565. 0.6.6:
  566. * Removed issue with BUFSIZ limitation in the controller output
  567. * Simplify logging symbols escaping
  568. * Adjusted weights for several rules
  569. * Improve spamhaus rbl support
  570. * Removed PBL for received headers checks
  571. * Added hfilter module that performs various HELO and IP checks.
  572. * Rspamd can now be reloaded by HUP signal
  573. * Fuzzy storage should expire hashes properly
  574. * Build system has been reworked for better supportof pkg-config
  575. * Various minor bugfixes
  576. 0.6.5:
  577. * Fixed critical bug in DNS resolver, introduced in 0.6.4
  578. * Improved multimap and rbl plugins to skip
  579. * Add dns_sockets option for tuning sockets per server in DNS resolver
  580. * Improved packages for rspamd
  581. 0.6.4:
  582. * Added io channels for DNS request to balance load and reduce id
  583. collisions chance
  584. * Fixed a bug in SPF filter that may cause core dump in specific
  585. circumstances
  586. * FIxed default config for rbl module
  587. * It is possible to get a list of rspamc commands with their descriptions
  588. * Added SORBS bl to the default config
  589. * 2tld file for surbl module has been significantly extended
  590. * Perl modules has been removed from the code.
  591. * Fixed an issue in libucl when parsing macros
  592. 0.6.3:
  593. * Fixed issues with DNS:
  594. - labels decompression algorithm was fixed;
  595. - added resolve_mx to lua API;
  596. - fixed modules that use DNS.
  597. * Lua modules once_received and emails reworked for new resolver API and UCL.
  598. * Debian package was polished.
  599. * Fixed a bug in fuzzy_check module that prevents correct processing messages
  600. without valid parts.
  601. 0.6.2:
  602. * Fuzzy check module has been reworked:
  603. - now fuzzy_check operates with a group of rules, that define which
  604. servers sre to be checked;
  605. - it is possible to specify read_only groups to avoid learning errors;
  606. - turn fuzzy_check to one_shot mode permanently;
  607. - fuzzy_check module configuration is now incompatible with the previous
  608. versions.
  609. * Imported bugfixes from libucl.
  610. * Fixed whitelist plugin.
  611. * Fixed statfiles resizing.
  612. * Improved logging initialization order.
  613. * Fixed race condition in the controller worker.
  614. 0.6.1:
  615. * Critical bugfixes:
  616. - fixed build system;
  617. - fixed in_class setting in bayes learning;
  618. 0.6.0:
  619. * Use UCL instead xml for configuration (https://github.com/vstakhov/libucl)
  620. * Fix statistics module normalization
  621. * Rework the many modules for the new configuration:
  622. - surbl has incompatible configuration;
  623. - fuzzy_check has incompatible configuration;
  624. - multimap has now new configuration;
  625. - received_rbl is removed and replaced by rbl module.
  626. * Removed deprecated options:
  627. - statfile_pool_size;
  628. - action and required/reject score for a metric.
  629. * Simplify build system and unify configuration for all platforms.
  630. * Improved URL detector (reduced false positive rate).
  631. * Lua 5.2 is now the default and fully supported version.
  632. * Tons of bugfixes and minor improvements.
  633. 0.5.6:
  634. * Fix bug with counters incrementing in rolling history
  635. * Detect expl and exp2l as some systems do not have it
  636. * Support input streams without Content-Length
  637. * Implement counters output via rspamc and controller interface
  638. * Fix bug with udp sockets in fuzzy storage
  639. 0.5.5:
  640. * New bayes normalizator based on inverse chi-square function
  641. * Various fixes to fuzzy storage
  642. * Allow update fuzzy storage only from specific IP addresses
  643. * Better support of IPv6 and address selection algorithms
  644. * Add CentOS spec file
  645. 0.5.4:
  646. * Fixed issues with diff algorithm
  647. * Added support of RRD statistics
  648. * Add webui worker for interface interaction
  649. * Fix a lot of issues with dynamic conf
  650. * Fix critical memory leak in settings code
  651. * Improve stability of the system
  652. 0.5.3:
  653. * Added dynamic options
  654. * Added advanced metaclassfication
  655. * Added RESTfull API for controller
  656. * Improved hashing algorithms
  657. * Various fixes for rspamc client:
  658. - allow interacting with unix sockets
  659. - librspamdclient major cleanup
  660. - bayes is now default classifier
  661. 0.5.2:
  662. * Added lua bindings for:
  663. - basic mime parts, that allows checkign attachements for example;
  664. - DNS resolver;
  665. * Existing lua bindings now works without task object allowing to use them
  666. in custom code.
  667. * Threads system was reworked to avoid global lua interpreter lock.
  668. * DKIM module now converts all line endings to CRLF how opendkim does.
  669. * URL detector is now more accurate for text parts.
  670. * Several critical bugs and memory leaks were fixed.
  671. 0.5.1:
  672. * Added lua worker type to handle network connections in lua.
  673. * Added lua bindings for async_session, IO dispatcher, memory_pool, and
  674. worker.
  675. * Composites can now uses other composites in expressions.
  676. * Fixes for debian package and for FreeBSD >= 9.1
  677. * Add support of gmime-2.6 if gmime-2.4 is not found.
  678. * Improve url detection and phishing detection.
  679. * Add lua mime_part library to get an access to all message part
  680. attributes (like filename, length, type).
  681. 0.5.0:
  682. * Added SMTP lightweight balancing proxy with XCLIENT support.
  683. * Added lua bindings for upstreams objects and API.
  684. * New pre-filters are implemented to support initial checking for messages.
  685. * Added ratelimit plugin that uses redis protocol to store data.
  686. * Added ipv6 support to spf and some other modules.
  687. * Unbreak spf plugin.
  688. * Allow options with the same name be threated as list.
  689. * DKIM plugin an parsing code was added.
  690. * Separate build system to put logic in several shared libraries.
  691. * Many bugfixes.
  692. 0.3.2:
  693. * Add error handling for regexps
  694. * Fix quit command in controller interface
  695. * Write symbols weights to rspamc output
  696. * Improve logic of selecting rspamc version
  697. * Do not try to parse broken DNS replies
  698. * Add 'raw' flag to FROM_EXCESS_BASE64 rule (requested by citrin)
  699. * Output message id in rspamc reply
  700. * Fix inserting composite symbol
  701. * Fix output of log line
  702. * Document composites
  703. * Add logging for fuzzy checks
  704. * Add logging for learning
  705. * Improve logic of learning messages - do not learn more than specific threshold
  706. * Fix inserting results for symbols that were incorrectly (for example more than 1 time) defined in config file
  707. * Do not output control characters if output is not terminal
  708. * Fix some logic errors in learning
  709. * Consider lua plugins errors as fatal configuration errors
  710. * Fix wirting message id during fuzzy_add command
  711. * Display weight of symbols correctly
  712. * Fixes to winnow learning
  713. * One more try to improve accuracy of winnow algorithm
  714. * Add bayesian classifier (initial version)
  715. * Remove normalizer as it is winnow specific thing, so all statistic algorithms now returns value from 0 to 1
  716. * Some fixes to fuzzy hashes expiration:
  717. * Fix assertion while look up value in NULL hash (found by cirtin)
  718. * Fix normalization for systems that have not tanhl function
  719. * Ignore rfc822 group addresses
  720. * Move images library to core rspamd
  721. * Add lua api to access images properties
  722. * Add post filters to lua API - filters that would be called after all message's processing
  723. * Add ability to check for specified symbol in task results from lua
  724. * Add ability to check for metric's results from lua
  725. * Add ability to learn specified statfile form lua
  726. * Add ability to extract filename and size of images from lua
  727. * Fix assertion while extracting internet address
  728. * Fix races in fuzzy storage
  729. * Make spf parser case insensitive
  730. * Add ability to check hashes of selected mime types
  731. * Add ability to set minimum size in bytes for mime types
  732. * Add ability to set minimum dimensions for images
  733. * Assume all text/* content types as text/plain
  734. * Fix getting data wrapper for gmime24
  735. * Many fixes to statfile syncronization system
  736. * Fixed statfile pool initialization and synchronization with disk
  737. * Prepare 0.3.2
  738. * Fix Mail::Rspamd::Config for new rspamd features
  739. * Use Mail::Rspamd::Config in rspamc client
  740. * Write user's name to rspamd log
  741. * Prepare rspamd build infrastructure for creating rpm and deb packages
  742. * Fix depends
  743. * Add start script for linux systems
  744. * Fix shared usage of statfiles
  745. * Add invalidation of statfiles in case of learning, so now statfiles
  746. * This should fix shared usage of statfile pool by several processes
  747. * Fix misprint (reported by az)
  748. * Fix stupid error when all checks can be done in a single pass
  749. * New trie based url scanner (based on libcamel)
  750. * Small fixes to rspamd perl client
  751. * Write fuzzy hashes info to log
  752. * Add trie interface to lua api
  753. * Explain sample config and cleanup it
  754. 0.3.1:
  755. * Add modules documentation
  756. * Continue implementing smtp proxy
  757. * Implement new learning system, now rspamd should be much more intelligent while learning messages
  758. * Convert statistic sums to use long double for counters
  759. * Use hyperbolic tangent for internal normalizer
  760. * In classify normalize result after comparing, not before
  761. * New symbols sorter
  762. * Fix strict aliasing while compiling with optimization
  763. * Fix tanhl detection for platforms that have not implementation of it
  764. * Remove several compile warnings
  765. * Add experimental support of dynamic rules to regexp module
  766. * Document views configuration
  767. * Several fixes to documentation
  768. * Add more logic for dynamic rules
  769. * Add documentation for dynamic rules
  770. * Add ability to make negations in networks in dynamic rules
  771. * Clean up cache items correctly
  772. * Implement basic SMTP dialog:
  773. * Implement interaction with smtp upstream (with support of XCLIENT)
  774. * Check messages received via smtp proxy
  775. * Add support for sendfile in io dispatcher
  776. * Fix issues with compatibility of worker_task and smtp proxy
  777. * Proxy DATA command
  778. * Fix SMTP
  779. * Change metric logic
  780. * Completely remove lex/yacc readers for config
  781. * Make common sense of metric/action and symbols
  782. * Sync changes with all plugins
  783. * Incorrectly removed in previous commit
  784. * Fix misprint (by Andrej Zverev)
  785. * announce the "password" keyword in usage list
  786. * Implement initial version of greylisting triplets storage
  787. * Fix issues with smtp worker
  788. * Fix QUIT command in SMTP worker
  789. * Some fixes about new metrics system (may be incomplete)
  790. * Get weights of symbol from default metric for symbols cache
  791. * Fix setting task->from/task->rctp in smtp client
  792. * Copy from and rcpt correctly
  793. * Some performance improvements to IO dispatcher (do not drain the whole buffer after a single line readed)
  794. * Fix smtp data input
  795. * Fix misprint
  796. * Add limit of maximum allowed smtp session errors
  797. * New logic of SURBL module:
  798. * Use system mkstemp(3) on systems where it is available as glib implementation
  799. * Try to fix memmove issues in io dispatcher
  800. * Remove debug from SURBL module
  801. * Rewrite buffered input for line policy (again)
  802. * Fix issue with links that are ip addresses in numeric form in surbl
  803. * On Darwin use BSD style sendfile definition
  804. * Reorganize platform specific knobs in CMakeLists
  805. * Use gettimeofday on systems that have not clock_getres
  806. * Use ftime for dns trans id generation on systems without clock_getres
  807. * Darwin sendfile(2) support
  808. * TIMEDB->TIMEB
  809. * More to previous commit
  810. * Pass env from main() arguments instead of platform specific global environ
  811. * Fix compatibility issues
  812. * Fix -lintl detection
  813. * Init some variables to avoid problems
  814. * Remove garbadge (gnome terminal sucks)
  815. * Add more information about why we drop smtp connection
  816. * Fix mkstemp call
  817. * Send to upstream QUIT command at the end of session
  818. * Check return value of each rspamd_dispatcher_write as in case of write errors sessions can be destroyed early
  819. * Fix states in smtp dialog
  820. * Use rspamd_snprintf instead of libc one
  821. * Fix URLS command
  822. * Fix reconfigure process of surbl module
  823. * Fix destroying smtp session (unmap memory and do not delete pool early)
  824. * Delete pool after using its variables
  825. * Delay timer must be registered in async session to correctly handle connection termination
  826. * Register dns requests in session too
  827. * Make session before registering events
  828. * Remove events in handlers
  829. * Add ability to set filters for smtp worker for each smtp stage
  830. * Add very initial version of DNS resolver (many things to be done)
  831. * Announce weights and sync
  832. * Fix few typo
  833. * Understand short names of facility in logging config
  834. * Add ability to make whitelist for spf checks
  835. * Misprint != -> ==
  836. * Handle lua tag in way that it is not required to write additional text:
  837. * Strip all starting whitespace symbols from xml texts
  838. * Fix stupid bug in calculating buffer length while reading file maps
  839. * Add resolv.conf parsing into dns.c
  840. * Fix microseconds<->milliseconds conversions
  841. * Take callback argument in Mail::Rspamd::Client for processing files and directories
  842. * Print results if rspamc is called for a directory
  843. * Fix stupid error with surbl module reconfig (another one, blame me)
  844. * Do not show duplicate urls in url header
  845. * Fix detection of numeric urls (reported by citrin)
  846. * Write real time of message's scan to log (not only virtual)
  847. * Fix chartable module in utf mode
  848. * Fix parsing of some broken urls
  849. * Add ability to test regexp with 'T' flag
  850. * Write more code for DNS resolver:
  851. * Make DNS resolver working
  852. * Many improvements to rspamd test suite: now it CAN be used for testing rspamd functionality
  853. * Write DNS resolver tests
  854. * Fix issues with memory_pool mutexes and with creating of statfiles
  855. * Forgotten in previous commit
  856. * Add support for parsing SPF and SRV records
  857. * Fix PTR parsing
  858. * Add tests
  859. * Make SURBL module to use rspamd dns module
  860. * Several fixes to DNS logic
  861. * Remove evdns and use only rspamd resolver
  862. * Very hard to detect problem with race among error in socket and destroying task while we are writing to socket and go through a hash table
  863. * Fix resolving in smtp module
  864. * Init events before configuring resolver in smtp worker
  865. * Set resolver inside task
  866. * Fix reload signal (reported by citrin)
  867. * Some improvements to redirector
  868. * Call has_forked method to inform POE about fork
  869. * Fix lua DNS code
  870. * Decompress labels in DNS packets more strictly
  871. * Fix some problems with TXT records
  872. * Try to fix removing of DNS events
  873. * Do not insert unparsed RR's into reply
  874. * Calling callbacks may cause destroying session from which we are calling callback so we MUST call callback as the latest action
  875. * Fix check_smtp_data function
  876. * Add ability to make views by recipient
  877. * Add ability to set metric's action from config file
  878. * Fix bug with writing garbadge if message has no urls or no messages
  879. * Fix bug with incorrect behaviour of compare_parts_distance function
  880. * Add ability to assign several actions to one metric
  881. * Report action in rspamc protocol
  882. * Mail::Rspamd::Client and rspamc can now understand Action header too
  883. * Write action to log as well
  884. * Make valgrind happy about comparing symbols
  885. * Add more debug to comparing parts distance function
  886. * Write action even if message has no symbols
  887. * Make improvements to HTML entites decoder: now it replaces entities with common characters and
  888. * Add -d option to force debug output
  889. * Assume 7bit as default transfer encoding
  890. * Do not overwrite lua plugins and configs if they already exists in target directory
  891. * Improve logging
  892. * Write queue id to log
  893. * Remove test messages from cmake
  894. * Reopen log file by USR1 signal
  895. * Add reopenlog method to FreeBSD rc script
  896. * Adopt foreach for cmake 2.6
  897. * Fix to rc script
  898. * Do not try to resolve names with several dots in a row
  899. * Fix surbl request formatting for ip addresses
  900. * Handle cases of broken requests
  901. * Fix problems with parsing compressed names
  902. * Fix TXT records parsing
  903. * Fix expanding spf macros that may fail in rare cases
  904. * Fix another error with early task destroying
  905. * Handle empty from header
  906. * Improve reopenlog command in rc script
  907. * Strip trailing whitespace characters in Mail::Rspamd::Client
  908. * Use ungreedy match to strip trailing whitespaces
  909. * Stupid error in calculation compressed label length
  910. * Some optimizations to client library
  911. * Do not compare empty parts
  912. * Empty and non-empty parts are allways different
  913. * Save in regexp cache the whole regexp with header name (if exists) and with flags
  914. * Add rspamd_log variable to lua plugins to access logging functions
  915. * Each part in rspamd task now can have parent part
  916. * Check for parts distance only for multipart/alternative subparts
  917. * Do not check attachements even if they are text (but attached as file)
  918. * Do not die if write (2) returned ENOSPACE while doing logging, turn on throttling mode instead (1 write try in a second)
  919. * Add ability to turn on debug for specific symbols
  920. * Add ability to configure dns timeouts and dns retransmits in config file
  921. * More debug
  922. * Fix extracting arguments in lua logger interface
  923. * Turn off debug_ip during reload if it was disabled by new config
  924. * Improve lua logging
  925. * Pre-init symbols cache when rereading config
  926. * Fix lua representing of invalid ip (nil, not 255.255.255.255)
  927. * Fix R_TO_SEEMS_AUTO rule (by citrin)
  928. * Add multimap lua plugin
  929. * Fix some multimap issues
  930. * Try to save images hashes to fuzzy storage to stop some annoying spammers
  931. * Allocate some more bytes for read buffer to avoid incorrect behavoiur
  932. * Add ability to check dns black lists by multimap module
  933. * Add multimap documentation
  934. * Fix labels parsing
  935. * Another try to save regexps in cache correctly
  936. * Improve test logs for regexps
  937. * Fix parsing txt records to avoid reading of uninitialized data
  938. * Fix error with writing symbols cache file
  939. * Fix error while working in utf mode when raw regexps was not created properly
  940. * Do not add extra byte while converting text to utf
  941. * Add error handling for regexps