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 66KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584
  1. 1.2.3:
  2. * New DCC module (by @smfreegard)
  3. * Rework whitelist module:
  4. - Now we check different elements for different checks
  5. - MIME from for DMARC
  6. - DKIM signature domain for DKIM
  7. - SMTP from or HELO for SPF
  8. * Fix regexps results combination (*critical*)
  9. * Fix issue with expressions processing (*critical*)
  10. * Optimize strlcpy for aligned input
  11. * Add support of half-closed connection in lua_tcp
  12. * Allow to print compact json in client
  13. * Save required score in history (#581)
  14. * Allow to attach file descriptors to control commands
  15. * Allow to send descriptors from workers to main
  16. * Allow to attach fd when broadcasting to workers
  17. * Implement log pipe feature for rspamd logs analysis
  18. * Add `log_helper` worker
  19. * Add `URIBL_SBL_CSS` (by @smfreegard)
  20. * Add worker scripts functionality
  21. * Add on load hooks for rspamd_config
  22. * Add lua scripts for log_helper worker
  23. * Add generic maillist detector (#584)
  24. * Implement FANN autolearn using log_helper worker
  25. * Rework metrics configuration to allow includes
  26. * Change default value of forced removal in composite rules
  27. * Allow to use assembly version of blake2b on x86 cpu
  28. * Use less precise (but faster) clock if possible
  29. * Insert redirected URL to the urls list
  30. * Allow to get and set callback data for rspamd symbols
  31. * Add binary heap implementation
  32. * Use binary heap for expire algorithms in the hash
  33. * Use `least frequent used` expiration strategy
  34. * Allow to get mime headers from a task
  35. * Add support for mime headers in `regexp` module
  36. * Update Exim patches (by @fatalbanana)
  37. * Allow building rspamd with jemalloc
  38. * Save multipart boundaries
  39. * SA plugin changes:
  40. - Properly handle MIME headers
  41. - Fix eval:check_for_missing_to_header rule
  42. - Implement SA compatible body regexps
  43. - Use sabody rules in SA plugin
  44. * LUA API changes:
  45. - Add util.get_ticks function
  46. - Add util.stat function
  47. - Add task:get_symbols_numeric method
  48. - Add method to get number of symbols in the cache
  49. - Add lua methods to get redirected urls
  50. - Allow to get callbacks for lua symbols
  51. - Add config:set_symbol_callback function
  52. 1.2.2:
  53. * Use HTTP Content-Type on non mime input if possible
  54. * Save log level when compressing log messages
  55. * Further rework of composite rules (add '^' prefix)
  56. * Add tracking for rspamd expressions
  57. * Store actions limits in metric result
  58. * Fix parsing of include/redirect with many records in SPF
  59. * Add method to disable symbols execution in the cache
  60. * Allow to disable checks from settings
  61. * Allow to select settings by id in HTTP query
  62. * Find URLs with '\r' and '\n' inside href attribute
  63. * Implement vectored mode for hyperscan (experimental)
  64. * Improve client connection errors diagnostics
  65. * Allow to edit new files with signtool
  66. * Improve hashes performance on 32 bit platforms
  67. * Fix sorting of limits
  68. * Remove slow and unused rules `INVALID_EXIM_RECEIVED*`
  69. * Add expression:process_traced lua method
  70. * Allow tables in task:insert_result
  71. * Save trace for SA metas
  72. * Do not parse broken TLD parts in URLs
  73. * Investigate many border cases in URLs parser
  74. 1.2.1:
  75. * Add list support to `mime types` module configuration (by @moisseev)
  76. * Allow symbols params to be printed in logs
  77. * Fix `MIME_BAD_ATTACHMENT` false positives for MDN/DSN
  78. * Fix crashes on arm32
  79. * Do not classify message if some class is missing
  80. * Fix cryptobox cleanup
  81. * Remove multipart/report from bad mime types (#569)
  82. * Improve logging for fuzzy hashes
  83. * Show map URLs in webui
  84. * Sort symbols in webui
  85. 1.2.0:
  86. * New dynamic updates plugin
  87. * Regular expressions map support
  88. * Faster radix trie algorithm
  89. * Faster siphash for AVX2 supporing CPUs (used in fuzzy hashes)
  90. * PCRE2 support
  91. * Allow quoted and slashed keys in map
  92. * Add proper support of DNS resolvers balancing (#552)
  93. * Rework includes and configuration system for better local changes support
  94. * New keypairs framework for signing and encryption
  95. * Added support for dynamic modules and workers
  96. * Allow to dump configuration with help comments
  97. * Rework once_received module
  98. - Fix priority for `good_hosts`
  99. - If a good host has been found do not add once_received symbols
  100. - Fix priorities for strict once_received
  101. - Add ability to whitelist IP addresses
  102. * Implement support of signed maps for HTTP and file maps
  103. * Add command to sync fuzzy storage (#533)
  104. * Rework system of symbols and actions registration
  105. It is possible now to use priorities when adding symbols to metrics and
  106. override scores for symbols with lower priority with the scores with
  107. high priority.
  108. * Add auth support and db selection for redis stats
  109. * Improve composite rules application
  110. * Add ignore_received option
  111. * Fix critical issue with inconsistent resorting
  112. * Fix `all` in spf redirects
  113. * Add punycoded versions for IDN domains (#554)
  114. * Improve sorting order for symbols cache
  115. * Add lockless logging for processes management
  116. * Allow to specify flags for metric symbols
  117. * Load images height and width from style attribute (#538)
  118. * Override DNS requests limits for SPF and DKIM
  119. * Fix resetting symbols to their default values in WebUI
  120. * Improve configuration agility for redis stats
  121. * Allow to set db and password for redis in stat_convert
  122. * Import the latest libucl
  123. * LUA API changes:
  124. - Add rspamd_version function to LUA API
  125. - Add lua_cryptobox module
  126. - Add lua_map module
  127. - Add task:set_metric_action lua API method
  128. - Fix race condition in lua_tcp module
  129. - Fix a lot of issues in lua_redis module
  130. - Rework and abstract lua maps API
  131. - Add util.strlen_utf8 lua function
  132. - Add lua functions for caseless comparison
  133. - Allow optional symbols registration
  134. - Add config:add_map table form method, add regexp maps
  135. - Add task:has_urls method
  136. - Add task:has_flag method
  137. - Add html tags methods to lua_html
  138. - Add task:get_dns_req
  139. * Plugins changes:
  140. - Add support for WLBLEval SA plugin
  141. - Use caseless comparison in SA and DMARC plugins
  142. - Allow SA plugin to set scores for rspamd symbols
  143. - Add regexp maps support to multimap
  144. - Allow filenames match in multimap
  145. - Add more filters for the existing map types
  146. - Fix html images rules to reduce FP rates
  147. * New rules:
  148. - LONG_SUBJ - too long subject
  149. - MIME_BAD_ATTACHMENT - bad attachement type
  150. - RDNS_NONE - no reverse DNS record for sender's IP
  151. - Fix MISSING_MIMEOLE rule for modern OE
  152. * Many other bugfixes, memory leaks plugs thanks to:
  153. - Coverity scan
  154. - New gcc-6 warnings
  155. - valgrind manual iterations
  156. * Documentation improvements:
  157. - FAQ list: https://rspamd.com/doc/faq.html
  158. - Reworked quick start guide
  159. - Added documentation for all active modules
  160. * Other changes:
  161. - Dropped Ubuntu Vivid support
  162. - Added Ubuntu Xenial support
  163. - Rework build system for rspamd and rmilter
  164. 1.1.4:
  165. * Print traceback on lua errors in lua config
  166. * Fix leaks in lua error paths
  167. * Improve 'R_EMPTY_IMAGE' rule
  168. * Fix metas memoization in SA plugin
  169. * Properly set `flag` in fuzzy replies
  170. * Fix arguments order
  171. * Fix issue with out-of-boundary reading
  172. * Fix issues found by coverity
  173. * Same result checking error found by coverity
  174. * Fix varargs processing (found by coverity)
  175. * Fix error in printing hex
  176. * Reduce weights for some hfilter patterns
  177. * Add aliases for task:get_from_ip:
  178. - task:get_addr
  179. - task:get_from_addr
  180. - task:get_ip
  181. * Rework once_received module
  182. - Fix priority for `good_hosts`
  183. - If a good host has been found do not add once_received symbols
  184. - Fix priorities for strict once_received
  185. - Add ability to whitelist IP addresses
  186. * Fix `MISSING_MIMEOLE` rule for modern OE
  187. * Treat meta tags as embedded tags (#501)
  188. 1.1.3:
  189. * Fix DSN rules when SMTP from is unavailable
  190. * Fix statconvert routine to avoid lua module usage
  191. * Set a sane quark for configtest to avoid NULL to be printed in logs
  192. * Support c11 if available
  193. * Fix parsing of ip:port strings
  194. * Add more diagnostic for lua subr errors
  195. * Fix task:set_from_ip lua method
  196. * Add basic routines for digital signatures
  197. * Add tool for digital signatures
  198. * Add plain open file API method for atomic open
  199. * Fix parsing nested braces inside logger vars
  200. * Pre filters now actually skip processing
  201. * Add pre-filter mode for multimap
  202. * Switch to apache 2 license
  203. 1.1.2:
  204. * Fix stat_cache closing
  205. * Add checkpoints to sqlite3 learn cache
  206. * Do not recompile lua generated headers all the time
  207. * Increase number of messages learned
  208. * Fix issues with dual stack and hfilter
  209. * Disable MID checks for hfilter by default
  210. * Fix cache definitions in multiple classifier and no type
  211. * Don't crash if learn cache failed to initialize
  212. * Fix googlegroups support in maillist plugin
  213. * Rework flags LUA API:
  214. - Allow to check for a specific flag
  215. - Add `learn_spam`, `learn_ham` and `broken_headers` flags
  216. - Unify internal functions
  217. * Add `BROKEN_HEADERS` rule
  218. * Add support for forged confirmation headers (by @AdUser)
  219. * Allow `any`, `mime` and `smtp` for get_from/get_recipients
  220. * Add mime types checking plugin
  221. * Add rule to detect spammers attempts to cheat mime parsing
  222. * Rework parsing of IP addresses in configuration (better IPv6 support)
  223. * Add `util.parse_mail_address` function to LUA API
  224. * Add lua sqlite3 module
  225. * Implement synchronous redis call
  226. * Ratelimit: avoid possible indexing of nil value (Fixes #498) (by @fatalbanana)
  227. * Add stat_convert command to convert stats tokens from sqlite3 to redis
  228. * Implement redis advanced lua api with pipelining
  229. * Fix memory leak on redis stat (#500)
  230. * Fix user/language learn count in sqlite statistics (#496) (by @fatalbanana)
  231. * Fix build with custom pcre
  232. * Fix fuzzy relearning (#498)
  233. * Improve planning of asynchronous tasks
  234. * Show slow rules in log
  235. * Add warning for slow regexps
  236. * Add base32 decode/encode routines to lua util
  237. * Allow converting of learn cache from sqlite to redis
  238. * Add methods to check if a messages has from/rcpts
  239. * Improve and fix multimap plugin:
  240. - Restore 'header' maps
  241. - Add filters for headers
  242. - Add 'email:addr', 'email:user', 'email:domain' and 'email:name' filters
  243. - Add generic regexp filters
  244. * Disable reload command in rc scripts
  245. * Improve runtime CPU dispatcher for libcryptobox
  246. * Add preliminary support of digital signatures via ed25519
  247. * Add detection for RDRAND support
  248. * Print configuration of crypto on start
  249. * A in SPF presumes AAAA lookup as well
  250. 1.1.1:
  251. * Fix duplicated XBL symbol
  252. * Reduce log severity for ratelimit missing servers
  253. * Fix XBL composite to avoid duplicate symbols
  254. * Reduce weight of URL_ONLY rule due to FP rate
  255. * Disable fuzzy hashes from the metadata for now
  256. * Fix processing of empty messages (#486)
  257. * Always treat DNS timeouts as temporary fail for SPF
  258. * Fix issue with SPF double IP stack (#483)
  259. * Use X-Forwarded-For when checking secure_ip (#488)
  260. * Fix hash calculation for sqlite stats
  261. * Fix memory corruption on punycode
  262. * Fix strings allocation in punycode
  263. * Fix error message (#491)
  264. 1.1.0:
  265. * Incompatible change: sqlite3 and per_user behaviour:
  266. Now both redis and sqlite3 follows the common principles for per-user
  267. statistics:
  268. 1) If per-user statistics is enabled check per-user tokens ONLY
  269. 2) If per-user statistics is not enabled then check common tokens ONLY
  270. If you need old behaviour, then you'd need to use separate classifier
  271. for per-user statistics.
  272. * Implement redis statistics backend and cache
  273. * Implement autolearning for statistics
  274. * Reworked statistics architecture from scratch
  275. * Add hyperscan (https://github.com/01org/hyperscan) engine for regular
  276. expressions:
  277. - add lazy loader for hyperscan databases
  278. - rework regexp cache to have joint pcre/hyperscan scanning
  279. - implement hyperscan pre-filter support
  280. - add compilation guards for bad expressions
  281. - implement `rspamadm control recompile` command
  282. - implement hyperscan cache monitoring
  283. - slides: <https://highsecure.ru/rspamd-hyperscan.pdf>
  284. * Implement flexible task logging
  285. * Rework fuzzy worker:
  286. - it is now possible to run multiple fuzzy workers;
  287. - implement lazy writing as sqlite3 is bad at concurrent writing;
  288. - add retries for simple sql commands in fuzzy backend;
  289. - use fine-grained transactions for fuzzy;
  290. - implement new multi-pubkeys mode;
  291. - allow encrypted only storages;
  292. - rework statistics for fuzzy;
  293. - add `rspamadm control fuzzystat` command for extended statistics;
  294. - implement human readable output for the previous command;
  295. - add condition script for learning fuzzy storage;
  296. * Various fixes to SPF:
  297. - fix `redirect` records;
  298. - fix domains when parsing mx/ptr/a records in includes/redirects;
  299. - fix issues with multiple addresses in SPF records;
  300. - ignore SPF results in case of DNS failure;
  301. - adjust TTL of records when resolving subelements of SPF records;
  302. - always select `v=spf1` line if it is available
  303. - do not cache records with DNS failure in subrequests;
  304. - ignore records with temporary fails during subrequests resolving;
  305. - fix `RDNS_RC_NOREC` support;
  306. * Add clang plugin for static analysis:
  307. - implement static checks for `rspamd_printf` format strings;
  308. * Add 'allow_raw_input' option for non-mime messages
  309. * Recognize types using libmagic
  310. * Fix parsing of IPv6 received headers
  311. * Add new interface of communication between workers in rspamd
  312. * Add support for named socketpairs
  313. * Don't write URLs by default as it is too verbose
  314. * Set status for HTTP replies
  315. * Try load `rspamd.conf.override`
  316. * Implement words decaying for text parts to limit many checks
  317. * Improve support of SA rules and plugins:
  318. - add check_for_shifted_date and check_for_missing_to_header eval rules;
  319. - add 'check_relays_unparseable' support;
  320. - add `check_for_mime('mime_attachement')` function;
  321. - use new re_cache interface for all SA rules;
  322. - add support for `Mail::SpamAssassin::Plugin::MIMEHeader`;
  323. - add support of 'special' SA headers to `exists` function;
  324. - fix issue when SA metas contain other metas;
  325. - fix freemail rules;
  326. * Many fixes to the URL parser
  327. * Match any newline character in regexps
  328. * Fix resolving of upstreams and detection of poor IPv6 configurations
  329. * Parse upstreams selection algorithm from the configuration line
  330. * Add `reresolve` command to the control interface
  331. * Generate fuzzy hashes from task metadata (URLs and headers)
  332. * Add method to check if IP is local and `local_addrs` option
  333. * Implement forced timeout for delayed filters
  334. * Disable fast path of pcre-jit as it seems to be broken
  335. * Bayes fixes:
  336. - new normalizer function;
  337. - really use weights of tokens from the OSB algorithm;
  338. - restore multiple classifiers support;
  339. * Rules changes:
  340. - add `R_SUSPICIOUS_URL` rule that detects obfuscated URL's;
  341. - improve empty image rule;
  342. - rework `FORGED_RECIPIENTS` rule;
  343. - reduce weight of `SUSPICIOUS_RECIPS`;
  344. - fix `*_NORESOLVE_MX` symbols in hfilter;
  345. - add `SUBJ_ALL_CAPS` rule with support of UTF8
  346. - add spamhaus SBL to uribl
  347. - fix `SUSPICIOUS_RECIPS` and `SORTED_RECIPS` rules
  348. - remove `R_TO_SEEMS_AUTO` as it generates a lot of FP;
  349. - add new Message-ID regexp for Thunderbird (by @moisseev);
  350. * Plugins changes:
  351. - allow ratelimit plugin to set symbol instead of pre-result
  352. - support IP DNS black lists for URIBL (e.g spamhaus SBL);
  353. - drop deprecated SURBL bits (by @fatalbanana)
  354. - rename `JP_SURBL_MULTI` to `ABUSE_SURBL` (by @fatalbanana)
  355. - add `SURBL_BLOCKED` (by @fatalbanana)
  356. - add `CR_SURBL`
  357. - SURBL: allow fallthrough to default symbol (by @fatalbanana)
  358. - Settings: fix IP match (by @fatalbanana)
  359. - SURBL: add missing symbols to metric (by @fatalbanana)
  360. - allow processing images urls for SURBL
  361. - unconditionally disable SPF for authenticated users and local networks
  362. * Rework ratelimit plugin
  363. - switch to `rates` instead of old and stupid strings to setup;
  364. - check if a bucket is zero and disable the corresponding limits'
  365. - turn off all buckets by default;
  366. - check either `rcpt` or `user` buckets, not all together'
  367. - document new `rates` and `symbol` options;
  368. - inform user about what buckets are used in the configuration;
  369. * Add neural network **experimental** plugin
  370. * Add a sample script to learn neural network from rspamd logs
  371. * Add documentation strings support to rspamd:
  372. - add strings for the main configuration options;
  373. - document workers options;
  374. - add internal plugin options;
  375. - create `rspamadm confighelp` routine;
  376. - implement human readable output for the previous command;
  377. - add subtree search support;
  378. - add keyword search support;
  379. * Documentation improvements, tutorials section, statistics description
  380. * Many other minor and major bugfixes not noted here
  381. 1.0.11:
  382. * Fix spf redirects
  383. * Fix domains when parsing mx/ptr/a records in includes/redirects
  384. * Fix unfolded base64 encoding
  385. * Fix GError use-after-free
  386. * Do not rewrite the original url when using redirector
  387. * Fix parsing of fragment in urls
  388. * Fix processing of HTML tags
  389. * Improve empty image rule
  390. * Avoid long double type
  391. * Fix tokens weights in OSB algorithm
  392. * Improve debugging for bayes
  393. 1.0.10:
  394. * Fix settings application (#416)
  395. * Fix another issue with fixed strings
  396. * Fix hash function invocation
  397. * Use the proper string for make_dns_request in lua_http
  398. * Fix scan time output
  399. * Update webui:
  400. - fix labels for greylisting
  401. - fix dimension of scan time
  402. 1.0.9:
  403. * Emergency fix in keyed blake2 to fix fuzzy hashes and encrypted password
  404. * Support passwords longer than 64 symbols
  405. 1.0.8:
  406. * Add function to traverse AST atoms
  407. * Allow dependencies on rspamd symbols for SA metas
  408. * Fix memory corruption when timeout is removed in fuzzy check
  409. * Fix encrypted fuzzy add processing
  410. * Avoid use-after-free in controller session destructor
  411. * Use session pool instead of task pool in fuzzy check
  412. * Fix assembly in i386 mode (#413, #412)
  413. 1.0.7:
  414. * Plugged memory leaks in internet address object & html parser
  415. * Fixed static build
  416. * Fixed multiple sigchld processing
  417. * Fixed deletion of signal events after event processing loop
  418. * Fixed build on ARM (#404 - reported by @Gottox)
  419. * Fixed setting the default mask for SPF.
  420. * Fixed sanitisation of HTTP query values
  421. * Fixed parsing of the last header in encrypted HTTP messages
  422. * Additions and fixes for test suite & benchmarks
  423. * Added openssl aes-256-gcm support to libcryptobox & HTTP server
  424. * Implemented support for starting multiple HTTP servers
  425. * Implemented batch accept in HTTP server
  426. * Added module to get data from HTTP headers (#285 - reported by @msimerson)
  427. * Added `rspamadm control` command
  428. * Added ability to sort counters output.
  429. * Added ability to specify custom headers for rspamc client
  430. * Fix architecture detection
  431. * Converted history storage to the UCL format
  432. * Allow flexible number of rows in history
  433. * Fix action badges in WebUI
  434. * Add universal cryptobox hash API
  435. * Migrated to the optimized blake2b implementation adopted from Andrew Moon
  436. * Allow explicit loading of specific modules
  437. * Always load settings module
  438. * Allow to add symbols from settings
  439. * Fix double free in the controller fuzzy learn command
  440. * Avoid endless loop when cannot open sqlite db
  441. * Updated libucl
  442. 1.0.6:
  443. * Fix build on i386
  444. * Update CentOS7 service file patch (by @fatalbanana)
  445. * Fix path to rspamadm in Debian init script (by @fatalbanana)
  446. * Fix broken '_SC_GETPW_R_SIZE_MAX' on FreeBSD
  447. * Fix portability issues
  448. * Use cryptobox chacha for libottery
  449. * Better support of 32 bit builds
  450. * Fix header name tokens setup
  451. * Fix levenstein distance method for words
  452. * Add workaround for old libevent (#400)
  453. * Fix microseconds in termination timer
  454. * Fix some more issues with fixed strings
  455. * Explicitly test CPU instructions even after CPUID call
  456. * Do not check out of boundary memory
  457. * Do not output broken emails
  458. * Fix unknown symbols registration
  459. * Handle SIGILL using longjmp
  460. * Block signals when exiting event loop
  461. * Fix incorrect allocation size
  462. * Slightly optimize alignment
  463. * Restore rspamd -t for compatibility
  464. * Add more sanity checks for emails
  465. 1.0.5:
  466. * Add rspamd control interface:
  467. - support `stat` command to get runtime stats of rspamd workers
  468. - support `reload` command to reload runtime elements (e.g. sqlite3 databases)
  469. * Rework curve25519 library for modular design:
  470. - add Sandy2x implementation by Tung Chou
  471. - fix CPU detection for variables loading assembly
  472. - add testing for curve25519 ECDH
  473. * New fixed strings library
  474. * Add `R_SUSPICIOUS_IMAGES` rule
  475. * Enable mmap in sqlite3
  476. * Use new strings in the HTTP code
  477. * Improve google perftools invocation
  478. * Improve performance profiling in http test
  479. * Reorganize includes to reduce namespace pollution
  480. * Allow specific sections printing in configdump command
  481. * Rework workers signals handlers to be chained if needed
  482. * Update socketpair utility function
  483. * Add control_path option for rspamd control protocol
  484. * Fix ownership when listening on UNIX sockets
  485. * Rework signals processing in main
  486. * Remove extra tools from rspamd (they live in rspamadm now)
  487. * Remove global rspamd_main
  488. * Add global timeout for the overall task processing (8 seconds by default)
  489. * Sanitize NULL values for fuzzy backend
  490. * Store NM between encrypt/decrypt
  491. * Add textpart:get_words_count method
  492. * Fix generic DNS request in lua
  493. * Tune hfilter weights
  494. * Add support of IPv6 in hfilter
  495. * Fix parsing of HTTP headers with IP addresses
  496. * Sync with the recent libucl
  497. * Various minor bugfixes
  498. 1.0.4:
  499. * Add configdump routine to rspamadm
  500. * Implement retransmits for fuzzy_check plugin
  501. * Fix events processing for learning anf checking fuzzy hashes
  502. * Avoid dependency on unneeded and uncompatible glib include
  503. * Add `historyreset` command to the controller
  504. * Fix loading of tokenizer config from dump (#389)
  505. * Add sorting hints for the history
  506. * Allow custom lua scripts for users/languages extraction (#388)
  507. * Do not add FORGED_RECIPIENTS when 'To' is missing (#387)
  508. * Do not add R_UNDISC_RCPT when 'To' is missing (#387)
  509. * Add encryption to fuzzy check plugin
  510. * Add encryption for fuzzy storage
  511. * Add new epoch for encrypted fuzzy request
  512. * Add encryption for `rspamd.com` storage
  513. * Remove gmime processing for LDA mode as it is deadly broken
  514. * Add routine to find end of headers position in mime messages
  515. * Fix LDA headers folding
  516. * Init libraries in rspamc client as well to avoid locale issues
  517. * Avoid collision with locally installed includes
  518. * Allocate and free memory with the same allocator in rspamadm (#385)
  519. * Preserve expired fuzzy hashes counter
  520. * Improvements in webui:
  521. - Add favicon.ico
  522. - Rework history table
  523. - Fix sorting for the history
  524. - Migrate to bootstrap 3 and jquery 2
  525. - Fix css bugs
  526. - Add glyphicons
  527. - Add reset history
  528. - Improve history buttons
  529. - Redraw graph to avoid display issues
  530. - Webui is now MIT licensed to match licensing policy of rspamd
  531. 1.0.3:
  532. * Fix piechart clean slice (#380)
  533. * Fix controller crashes when GString is reallocated (#381)
  534. * Correctly set locale before start
  535. * Set C locale for numeric values
  536. * Add rspamadm routine:
  537. - add `pw` command to manage passwords
  538. - add `help` command for displaying help
  539. - add `configtest` command to check configuration files
  540. - add `keypair` command for generating encryption keys
  541. - add `fuzzy_merge` routine to merge fuzzy sqlite databases
  542. - add a simple manual page for rspamadm
  543. * Allow metric registration for composite expressions
  544. * Add strict mode for configtest
  545. * Add logger counters
  546. * Save and show learned messages count (#383)
  547. * Add `no_stat` flag
  548. * Add `task:set_flag` and `task:get_flags` (#382)
  549. * Enable foreign keys in sqlite3
  550. * Remove orphaned shingles from fuzzy storage
  551. * Optimize synchronization steps for fuzzy storage
  552. * Allow delayed conditions registration
  553. * Add lua API for conditions registering
  554. 1.0.2:
  555. * Fix critical bug in webui that prevents password from being sent
  556. * Rework webui view:
  557. - Switch to d3.js for graphs
  558. - Improve piechart look
  559. - Rework colors for piechart
  560. - Fix layout for symbols
  561. - Fix refresh button
  562. * Add descriptions for whitelist maps
  563. * Fix build on arm (#379)
  564. * Fix issue with the last element in the radix trie
  565. * Add more tests for radix trie algorithm
  566. * Allow to extract URLs from query strings of other URLs (#361)
  567. * Initialize rrd fields before writing to file
  568. * Fix double free if no password has been specified
  569. 1.0.1:
  570. * Add writing to rrd from the controller
  571. * Fixed lots of bugs in rrd code
  572. * Adopt new DNS API in hfilter plugin (by @AlexeySa)
  573. * Allow only one controller process to manage rrd file
  574. * Set event base for fuzzy calls
  575. * Improve fuzzy IO errors logging
  576. * Add rra extraction function to rrd library
  577. * Add graph handler to the controller
  578. * Cache correct passwords to avoid too high CPU usage when working with webui
  579. * Controller sockets are owned by router do not export them to task
  580. * Optimize logging by skipping hash table search if it's empty
  581. * Fix loading issue whith broken statfiles
  582. * Print assertions from glib to rspamd logger
  583. * Load legacy `lua/rspamd.local.lua`
  584. * Update webui with some fixes to learning and scanning
  585. 1.0.0:
  586. * Rework symbols processing:
  587. - Improve sorting logic for symbols
  588. - Organize processing into multiple stages
  589. - Added asynchronous watchers for symbols
  590. - Added ability to organize dependencies between symbols
  591. * Fixed URL redirector:
  592. - Use optimized POE loop
  593. - Organize dependencies
  594. - Fix startup
  595. * New sqlite3 backend:
  596. - Allow to have per-languages and per-user statistics
  597. - Allow sqlite3 to be used as statistics backend
  598. * Store tokenizer configuration within statfiles
  599. * Improve bayes statistics:
  600. - Use headers and images metainformation in bayes
  601. - Suggest using of pre-processed tokens for statistics
  602. - Fix tokens normalization for OSB algorithm
  603. * Rewrite url parsing:
  604. - Fix numerous issues with url extraction and normalization
  605. - Fix mailto urls
  606. * Fix settings plugin to allow custom actions scores
  607. * Improve rbl plugin
  608. * Allow capturing patterns in rspamd lua regexp library
  609. * Add GTUBE support
  610. * Fix spamc legacy support
  611. * Add DKIM support to RBL module
  612. * Fix issues with multiple DKIM signatures
  613. * Fix issue if rspamd cannot create statfiles (#331)
  614. * Rework parts and task structure:
  615. - Now text_parts, parts and received are arrays
  616. - Pre-allocate arrays with some reasonable defaults
  617. - Use arrays instead of lists in plugins and checks
  618. - Remove unused fields from task structure
  619. - Rework mime_foreach callback function
  620. - Remove deprecated scan_milliseconds field
  621. * Add ip_score plugin support (not enabled by default):
  622. - Can check for asn/country and network using DNS lookups
  623. - Can store and load reputation from redis server
  624. * Improve PARTS_DIFFER rule to count merely different words
  625. * New HTML parser:
  626. - Parses HTML parts using a set of state machines
  627. - Extracts useful data and exports it to lua functions:
  628. + Styles
  629. + Images
  630. + URLs
  631. + Colors
  632. + Structure elements
  633. - Added HTML rules for some checks
  634. * New version of LUA DNS API
  635. * Table versions of many functions in LUA API
  636. * Improve rspamc client:
  637. - Print execution time
  638. - Allow executing of external commands and passing output to them
  639. - Allow mime output mode when rspamc alters message according to rspamd
  640. checks and send it to an external command or stdout
  641. * Allow scanning of local files using HTTP requests
  642. * Rework configuration system:
  643. - Rules are now moved from the $CONFDIR to $RULESDIR to avoid ambiguity
  644. - All modules configurations are now split in $CONFDIR/modules.d/* to
  645. simplify upgrades
  646. - Move hfilter to plugins
  647. - Allow plugins and rules to define default scores to simplify metrics
  648. setup
  649. - Include overrides for all modules to honor local/automatic parameters
  650. - Tune scores for many modules
  651. * Rework and enable DMARC plugin
  652. * Add whitelist plugin for SPF/DKIM/DMARC based whitelisting
  653. * Add some common domains to whitelists shipped with rspamd
  654. * Rework logging:
  655. - Now each log entry supports module name and a `tag`. Tag is used to
  656. identify unique objects (such as tasks) when checking log files
  657. - It is possible to turn on debugging for the specific modules
  658. - Systemd logging is fixed
  659. * Improve spamassassin plugin.
  660. - Now headers are matched more like SA
  661. - Improve support of Message-ID
  662. - Add support of ToCc header type
  663. - Fix :addr and :name in headers regexps
  664. * Resurrect rrd support code
  665. * Save controller stats between restarts
  666. * Fixed tonns of bugs
  667. * Added tonns of minor improvements and features
  668. * Added more unit tests
  669. * Create functional tests framework
  670. * Added documentation for missing modules
  671. * Added rpm/deb repositories and scripts
  672. * Updated WebUI and libucl externals
  673. 0.9.10:
  674. * Do not dereference null pointer on learning.
  675. * Fix some extreme cases in BAYES.
  676. * Add a workaround to avoid bad HTML messages breaking.
  677. * Build with -O2 flags by default.
  678. * Add constraints to limit DNS requests count per task.
  679. * Add workaround for SURBL DNS flood.
  680. * Set error if rspamd cannot learn anything.
  681. 0.9.9:
  682. * Don't use RWL_SPAMHAUS_WL (unknown result) for whitelisting (by @fatalbanana)
  683. * Import updated public suffix list (by @fatalbanana)
  684. * Remove debug message
  685. * Fix settings (by @fatalbanana)
  686. * Remove duplicated symbol registration
  687. * Use WAL for fuzzy storage
  688. * RBL fixes (by @fatalbanana):
  689. - silence errors;
  690. - yield unknown results from RBLs;
  691. - fix scoring for DNSWL;
  692. - fix use of RBL name as symbol;
  693. - ignore RBL names that would not be yielded;
  694. * Support captures in regular expressions
  695. * Add captures support to lua_regexp
  696. * Support dist on FreeBSD and Darwin
  697. * Add RCVD_IN_DNSWL_NONE as whitelisting exclusion (by @fatalbanana)
  698. * Multiple fixes to URL detection:
  699. - support port definition;
  700. - fix query and path recognition;
  701. - fix parsing of multiple slashes in URL;
  702. - fix parsing query just after port;
  703. - fix path field in `url:to_table` method;
  704. - improve support of IP based URLs.
  705. * Set ignore_whitelists = true for RECEIVED_SPAMHAUS_XBL (by @fatalbanana)
  706. * Add GTUBE support
  707. * Ignore User header in SA mode
  708. 0.9.8:
  709. * Fix critical bug in bayes classifier (#305)
  710. * Fix critical bug in RBL module (by @fatalbanana)
  711. * Fix and rework settings plugin.
  712. * Fix get_all_opts for a case of non-iterable options.
  713. * Use tld for redirector's matching.
  714. 0.9.7:
  715. * Add whitelist_exception setting to RBL module (by @fatalbanana)
  716. * Don't use RWL_MAILSPIKE_POSSIBLE or DNSWL_BLOCKED for whitelisting (by
  717. @fatalbanana)
  718. * Fix extreme cases in bayes classifier.
  719. * Fix parsing of urls with '?' at the end of hostname.
  720. * Update interface.
  721. * Fix number of issues with webui interaction.
  722. * Fix saving maps.
  723. * Allow user@ and @domain matches in multimap.
  724. * Fix issues with bounces From processing.
  725. * Fix abs/fabs misuse.
  726. * Fix builds on suse and arch linux distributions.
  727. 0.9.6:
  728. * Fix memory leak if mime cannot be parsed.
  729. * Fix dkim cache expiration.
  730. * Fix issues with redirector HTTP response.
  731. * Fix abnormal connection closing with certains messages with a high score
  732. (issue #296)
  733. * Fix redirector installation.
  734. * Use specific POE loop for some systems.
  735. * Fix number of issues in URL redirector.
  736. * Fix selecting URLs for sending to redirector.
  737. 0.9.5:
  738. * Avoid double free when extending HTTP message.
  739. * Fix double free if multiple classifiers are defined.
  740. * Fix misprint in spamassassin plugin.
  741. * Fix cpuid invocation on i386.
  742. * Fix ownership issues for zero-copy decode.
  743. * Allow __len metamethod on rspamd{text}.
  744. * Add base64 decoding lua utility.
  745. * Fix build on FreeBSD
  746. * Skip spaces at the beginning of mime messages.
  747. * DBL_ABUSE_REDIR should not have significant weight.
  748. * Allow to split by lua_regexp rspamd{text} objects.
  749. * Allow to specify custom stop pattern for lua_tcp.
  750. 0.9.4:
  751. * Fix critical bugs in tokenization algorithm
  752. * Write unit tests for tokenization
  753. * Add documentation for lua_tcp
  754. * Switch off legacy tokenization by default.
  755. * Fix critical bugs in words normalization
  756. * Add lua bindings to tokenizer.
  757. * Implement storing of HTTP headers inside task
  758. * Add lua API to accerss HTTP headers data
  759. * Implemented base64 encoding suitable for MIME
  760. * Use caseless hash and equal functions for HTTP request headers.
  761. * Improve debian architectures support (by @dottedmag)
  762. 0.9.3:
  763. * Revert incorrect regexp change that broke the default rules
  764. * Fix lua_tcp module
  765. 0.9.2:
  766. * Fix error on spawning unique workers.
  767. * Add preliminary version of generic LUA TCP requests API.
  768. * Use lua 5.1 if luajit is not available (Arm64, PowerPC, s390x etc)
  769. * Fix fuzzy mime strings with only type.
  770. * Improve thunderbird sanity checks.
  771. * Fix critical bug on matching regular expressions.
  772. * Make hiredis optional dependency.
  773. * Fix multiple bugs in daemon reloading
  774. 0.9.1:
  775. * Restore utf8 validation for regular expressions to avoid crashes
  776. * Fix symbols displaying in the interface
  777. * Add symbol groups to the interface
  778. * Fix maps ID parsing in the controller
  779. * Add multimap and regexp modules documentation
  780. * Backport fixes from libucl
  781. * Fix debian package (by @dottedmag)
  782. * Rework XXH32 invocations
  783. 0.9.0:
  784. * Add support of the fast and secure protocol level encryption:
  785. - curve25519 is used for key exchange;
  786. - chacha20/poly1305 cryptobox construction for bulk encryption;
  787. - zero latency overhead;
  788. - encrypting and balancing HTTP proxy worker
  789. * Rework expressions and create new expressions library:
  790. - aggressive optimizations based on the abstract syntax tree;
  791. - abstract expressions support (regular expressions, functions, lua modules
  792. composites and so on)
  793. - New comparision and '+' operators support
  794. - New greedy algorithm to minimize execution time of expressions and
  795. all symbols
  796. - Dynamic expressions benchmark and reoptimizations
  797. * Many improvements to the LUA API:
  798. - reworked logger module allowing to do pretty print of the most of lua
  799. types (including tables and userdata classes)
  800. - reworked lua redis and lua HTTP to support more features
  801. - added opaque type for passing large text chunks without copying
  802. - new regexp module with many auxiliary functions (e.g. `re:split`)
  803. * LuaJIT is now the default requirement for rspamd allowing to speed up lua
  804. execution by a large margin (however, plain lua is still supported)
  805. * New plugins:
  806. - spamassassin rules plugin that allows to load and re-use the most of
  807. SA rules natively
  808. - DMARC plugin that evaluates SPF and DKIM policies to the domain policies
  809. - many old plugins has been reworked to implement new features and improve
  810. stability
  811. * New aho-corasic trie implementation from @mischasan that allows to load and
  812. use hundreds of thousands of patterns with no influence on load
  813. * Support of PCRE JIT and PCRE JIT fast path modes that significantly improves
  814. the performance of regular expressions if supported by PCRE
  815. * New URLs parser and extractor:
  816. - removed legacy code that was useless for url finding
  817. - reworked algorithms of URL parsing for more precise and accurate results
  818. - added top-level-domains tree from http://publicsuffix.org
  819. - improved emails parsing
  820. - removed many phishing false positives due to TLD tree check
  821. * New statistics infrastructure:
  822. - created a separate layer of statistic library
  823. - improved OSB-Bayes by re-weighting tokens according to the original
  824. academic paper and `crm114` implementation, which reduced false positives
  825. rate significantly
  826. - created learn cache to avoid double learning of statistics and providing
  827. an efficient way to re-learn class for a message
  828. - created abstract layers for different statistics backends
  829. - implemented new tokenization algorithms with fast or secure (siphash)
  830. hashes to generate statistics features
  831. * Reworked utf8 tokenization that previously corrupted all UTF8 words (minor
  832. incompatibility with old fuzzy hashes with utf-8 symbols)
  833. * SPF module has been completely rewritten to support complex cases of
  834. `include` and `redirect` within SPF records
  835. * DKIM module now supports multiple signatures
  836. * Controller passwords can now be stored encrypted by `PBKDF2-HMAC` in the
  837. configuration file
  838. * Many hand-written HTTP clients has been replaced with the common rspamd
  839. http module
  840. * New test framework:
  841. - import lua `telescope` test framework
  842. - add unit tests for many rspamd modules and routines
  843. - create a unit test for each possible bug found
  844. - use luajit ffi for testing C code
  845. - added preliminary support of functional testing by creating tasks from lua
  846. * Randomize hash seed to avoid certain hash tables vulnerabilities
  847. * Documentation improvements:
  848. - added documentation for the vast majority of rspamd modules
  849. - added documentation for rspamd protocol
  850. - added documentation for the most of rspamd LUA extensions
  851. * Fixed tonns of bugs and memory leaks
  852. * Added tonns of minor features
  853. 0.8.3:
  854. * Various critical fixes in distribution (by @dottedmag and @fatalbanana)
  855. * Fixed bugs in url detector to parse certain patterns
  856. * Add default host and helo for a client
  857. * Some sanity checks for tokenizer and classifier
  858. * Reiterate on systemd support
  859. * Fix missing symbol registration
  860. * Add support of spamc compatible output
  861. * Filter double-dots in rbl.lua validate_dns (by @fatalbanana)
  862. * Update ucl submodule due to critical bugfix
  863. 0.8.2:
  864. * Create fuzzy db if it does not exist
  865. * Fix: Centos init script: configtest() (by @AlexeySa)
  866. * Enable one_shot for RECEIVED_SPAMHAUS_XBL - Fixes #102 (by @fatalbanana)
  867. * Update Exim patch (by @fatalbanana)
  868. * Fix processing of unix sockets.
  869. * Allow applying settings to authenticated users (by @fatalbanana)
  870. * Make settings priorities work as documented (by @fatalbanana)
  871. * Fix race condition in symbols planner
  872. * Add DNSWL_BLOCKED symbol (by @fatalbanana)
  873. * Make Exim pass usernames to rspamd (by @fatalbanana)
  874. * Update RBL module (by @fatalbanana):
  875. - fix indentation;
  876. - collapse loops;
  877. - avoid calling for un-needed information;
  878. - allow disabling RBLs for authenticated users
  879. * once_received.lua: Fix indentation & add exclusion for authenticated users (by @fatalbanana)
  880. * hfilter.lua: Add exclusion for authenticated users (by @AlexeySa)
  881. * Updates to hfilter rules (by @AlexeySa)
  882. * Set empty <> user or addr for msgs without FROM (by @eneq123)
  883. * Fix: attempt to index field '?' (a nil value) (by @eneq123)
  884. * Fix: if not exist Date-header (by @AlexeySa)
  885. * Add task:get_content() method.
  886. * rbl.lua: Ignore private IP space (by @fatalbanana)
  887. * Allow to check radix maps from lua by rspamd{ip}
  888. * Make local exclusions configurable per-RBL (by @fatalbanana)
  889. * Add rspamd_config:radix_from_config() (by @fatalbanana)
  890. * Support emails dnsbl in rbl (by @fatalbanana)
  891. * Complete rework of url extraction logic
  892. * Allow customizations for unix sockets. (fixes #182)
  893. * Set lua path according to rspamd settings.
  894. * Import lua-functional for plugins stuff.
  895. * Completely rewrite multimap plugin in functional style.
  896. * Fix FORGED_MUA_THUNDERBIRD_MSGID (fixes #186)
  897. * Check IPv6 addresses at dnswl.org and Spamhaus whitelist (by @fatalbanana)
  898. * Add lowercase utility for utf8 strings.
  899. * Various fixes to build system
  900. * Updated debian configuration infrastructure (by @dottedmag)
  901. 0.8.1:
  902. * Add sqlite and perl as dependencies for RPM/Debian packages (by @fatalbanana)
  903. * Remove whitelist.lua from RPM file list (by @fatalbanana)
  904. * Make Exim pass hostnames to rspamd (by @fatalbanana)
  905. * Fix building on Fedora (by @fatalbanana)
  906. * Add toggle for disabling installation of systemd units on Linux (by @fatalbanana)
  907. * Fix double format rounding that caused output corruption (reported by @fatalbanana)
  908. * Revert broken change for destructors ordering that led to memory corruption
  909. * Do not reset symbols case of settings if parsed from lua (reported by @andrejzverev)
  910. * Fix build on SunOS (by @wiedi)
  911. * Fix multiple crashes on broken DKIM DNS records
  912. * Fix critical issue with composites weights removing
  913. * Fix memory corruption in composites processing code
  914. * Ignore non-SPF TXT records when parsing SPF includes
  915. 0.8.0:
  916. * New fuzzy check logic:
  917. - use shingles algorithm for fuzzy matching
  918. - use blake2 instead of md5 for larger output space
  919. - combine fuzzy and strict matching
  920. - allow to organize private storages by means of keys
  921. - preserve compatibility with previous versions
  922. * New fuzzy storage:
  923. - use sqlite instead of own memory based hash tables
  924. - rework commands interface
  925. - add conversion from the old format
  926. - add fuzzy match by shignles
  927. - support old rspamd versions
  928. * Add lemmatizing for words used in fuzzy hashes that allows to improve match
  929. quality by using of the first forms of all words
  930. * Rework language detection
  931. * Fix several critical bugs, memory leaks and deadlocks:
  932. - memory leak in HTML nodes parsing
  933. - deadlock in logger code
  934. - deadlock in signals processing
  935. - crashes in fuzzy_storage
  936. - crashes in tokenizers if the input was empty
  937. * Import new libucl with several bugfixes and improvements
  938. * Support listening on ipv6 addresses only
  939. * Fix macro expansion in SPF module
  940. * Several bugfixes in DKIM module
  941. * Add load headers support for mime parts to the lua API
  942. * Add documentation for:
  943. - workers in general
  944. - fuzzy_storage worker
  945. - fuzzy_check plugin
  946. - mimepart and textpart lua API modules
  947. 0.7.6:
  948. * Apply boundary fix for dkim simple canonization
  949. * Fix ping command
  950. * Return nil if header was not found in lua_task
  951. * Fix hang in upstreams revive logic
  952. * Decode entitles when normalizing HTML parts
  953. * Fix logic of finding URLs in HTML parts
  954. * Do not include \0 into length of text when performing conversion to utf8
  955. * Fix raw vs parsed reperesentations
  956. Raw parts are now:
  957. - decoded b64/qp, but *NOT* converted to utf-8
  958. Processed parts are now:
  959. - converted to UTF-8
  960. - normalized if needed (e.g. HTML tags are stripped)
  961. * Rework DKIM canonization to line based
  962. * Fix fuzzy hashes addding
  963. * Use more specific hash function for fuzzy
  964. * Fix leaking of iconv descriptors
  965. * Fix PTR resolving in lua resolver
  966. * Rework spf module.
  967. - Copy data to memory pool as cached record might be destroyed causing
  968. freed memory being passed to the protocol output (use after free)
  969. - Allow SPF_NEUTRAL policy to be handled separately
  970. - Add R_SPF_NEUTRAL to the default config
  971. * Rework `register_symbols` function
  972. * Allow to disable components of hfilter
  973. 0.7.5:
  974. * Fix owner when creating folder /run/rspamd (by @sfirmery)
  975. * Fix IP validity checks
  976. * Decode URLs obtained from HTML tags
  977. * Fix crash with unweighted upstreams
  978. * Stop processing headers in parts
  979. * Set sockaddr.sa_family properly when connectig to upstreams
  980. * Fix reload issues in surbl and fuzzy_check (reported by @citrin)
  981. * Fix timeouts in redirector
  982. * Improve lua errors reporting
  983. * Fix lua closures processing in libucl
  984. * Rework calling of lua functions from regexp module
  985. * Choose raw regexp for raw headers
  986. * Rework conversion to utf since glib one is broken
  987. * Ignore SGML style tags in html
  988. * Fix old bug with non-capturing https urls
  989. * Fix memory corruption on fuzzy reload (reported by @citrin)
  990. * Fix percents display in rspamc
  991. * Fix buffer update for DKIM
  992. * Do not validate utf for raw headers
  993. 0.7.4:
  994. * Fix build under *BSD
  995. * Detect HAN unicode script
  996. * Implement language detection heuristic for text parts
  997. * Fix time output in history
  998. * Improve piechart coloring
  999. * Fix \r\n conversion in DKIM module (reported by @citrin)
  1000. * Try to detect systems with no IPv6 support
  1001. * Fix multiple/single values in use settings (reported by @citrin)
  1002. * Rework IP addresses in upstreams:
  1003. - Select ipv4/unix addresses if they exist and use ipv6 for ipv6 only
  1004. upstreams (since the support of ipv6 is poor in many OSes and
  1005. environments)
  1006. - Free IP list on upstream destruction
  1007. - Add test cases for addresses selection
  1008. - Allow adding of free form IP addresses to upstreams
  1009. * Fix endiannes in lua_radix search (reported by @citrin)
  1010. * Soft shutdown should also set wanna_die flag (reported by @citrin)
  1011. * Stop use-after-free in event loop termination
  1012. * Fix processing of very short messages in DKIM (reported by @citrin)
  1013. * Detect systems without shared mutexes
  1014. * Fix issues with PTR and MX elements in SPF parser (reported by @citrin)
  1015. 0.7.3:
  1016. * New upstreams code:
  1017. - simplify upstreams API;
  1018. - unify strings parsing in upstreams definition;
  1019. - add configuration options for the upstreams;
  1020. - for failed upstreams re-resolve their addresses;
  1021. - use all resolved addresses for an upstream (round-robin);
  1022. - implement stable hashing and use it by default for upstreams;
  1023. - add unit test for upstreams module.
  1024. * Rework signals processing in all rspamd workers:
  1025. - signals are now processed in the event loop;
  1026. - implement the most common signal handlers for all workers;
  1027. - add callbacks for workers specific signal handlers
  1028. * Fix critical issue with fuzzy storage:
  1029. Fuzzy stroage could not save any hashes on termination due to bugged
  1030. signals handling
  1031. * Fix roll history IP storage
  1032. * Rework ipv4/ipv6 handling in parsing addresses:
  1033. - turn off support of IPV6_V6ONLY socket option;
  1034. - create ipv6 socket prior to ipv4 one to handle systems with v6/v4
  1035. sockets enabled (Linux)
  1036. * Remove CBL as it's wholly included in Spamhaus XBL (by @fatalbanana)
  1037. * Remove nszones.com fake RBL (by @citrin)
  1038. * Fix upstreams interaction for fuzzy_check
  1039. * Verify spf PTR records (reported by @citrin)
  1040. * Fix spf MX records parsing
  1041. * Add compatibility for old libevent (by @yellowman)
  1042. * Sync bugfixes from libucl
  1043. 0.7.2:
  1044. * Convert all maps to the compressed radix trie
  1045. * Allow IPv6 addresses in IP maps
  1046. * Remove dynamic items support from symbols cache
  1047. * Allow hex encoded output of strings
  1048. * Fix bug with control connections count
  1049. * Process fuzzy weight correctly (reported by @fatalbanana)
  1050. * Remove extra reference retain of http connection on error
  1051. * Remove deprecated options from the default config
  1052. * Add `one_shot` attr to metric's symbols
  1053. * Doc: add documentation for metrics
  1054. * Add Upstart job to debian packaging (by @CameronNemo)
  1055. * Config: improve SURBL symbols descriptions (by @citrin)
  1056. * Config: reflect SURBL changes (by @citrin):
  1057. - Outblaze removed, malware moved to separate list:
  1058. http://www.surbl.org/news/internal/MW-malware-sublist-added-to-multi
  1059. * Fix C modules initialization on restart
  1060. * Treat single IP as a single IP in radix lists (reported by @citrin)
  1061. * Do not touch file and core limits if not asked explicitly (reported by @citrin)
  1062. * Improve logging for fuzzy errors
  1063. * Block SIGPIPE for HTTP writing
  1064. * Doc: update manual pages
  1065. * Fix HTTP connection termination
  1066. * Reduce default number of parallel requests to 8
  1067. * Sync with libucl include features
  1068. 0.7.1:
  1069. * Fix typo in stat output.
  1070. * Fix issues with includes crossing with the system includes
  1071. * Restore testing framework
  1072. * Add radix trie test suite
  1073. * Implement new path-compressed radix trie.
  1074. - The performance benefit over the old algorithm is about 1.5 times.
  1075. - Memory usage is significantly lower as well.
  1076. - Now radix trie can accept any IPv4/IPv6 values
  1077. * Various improvements to the memory pools code
  1078. * Fix writing reply to a client when no filters are defined
  1079. * Write base32 encoded fuzzy
  1080. * Fix 'soft reject' action
  1081. * Fix rspamd reload and modules reconfiguration
  1082. * Fix subject rewriting for the default subject
  1083. * Fix states for processing task and pre-filters
  1084. * Fix issues with connection closing
  1085. * Fix crashes in rdns
  1086. * Fix ratelimit pre-filter
  1087. * Update exim patch.
  1088. - Update to the recent exim version
  1089. - Strip extra leading src/ from the patch
  1090. - Remove sendfile since it was broken
  1091. - Fix rspamd spam report for exim
  1092. * Improve documentation
  1093. 0.7.0:
  1094. * Use HTTP protocol for all operatiosn
  1095. * Webui worker is now removed and controller works as webui
  1096. * Allow to serve static files via controller by option `static_dir`
  1097. * Rspamd interface is now a part of rspamd
  1098. * Rspamc client has been rewritten to use HTTP and non-blocking mode
  1099. allowing to start multiple operations simultaneously (see `-n` option)
  1100. * Lua API was completely reworked to satisfy modern standards of LUA:
  1101. * Module `lua-message` was removed
  1102. * Reduced number of superglobals registered by rspamd
  1103. * Many functions has been redesigned
  1104. * Symbols registration is now more convenient
  1105. * Users settings has been rewritten as lua plugin
  1106. * Reworked headers system as gmime's based one misses many headers and is
  1107. very slow to get headers values
  1108. * Reorganized code and removed embedded jannsson by using UCL for all json
  1109. parsing
  1110. * Migrated to `librdns` for DNS resolving that improves concurrency for
  1111. DNS requests significantly
  1112. * Fixed tonns of bugs in MIME processing
  1113. * Improved metrcis and default symbol's weights
  1114. * Added new RBL's
  1115. * Fixed a number of issues in the modules
  1116. * Removed several memory leaks found
  1117. * Fix unicode processing
  1118. * Fix fuzzy checking for unicode parts
  1119. * Significantly improve documentation and especially LUA API docs
  1120. * See migration notes at https://rspamd.com/doc/migration.html
  1121. 0.6.8:
  1122. * Controller now listen for localhost and not for 127.0.0.1 by default
  1123. * Allow FCrDNS-style RBL lookups (by @fatalbanana)
  1124. * Reduce threshold for parts_differ function.
  1125. * Fix hostname lookup for rdns rbl (by @AlexeySa)
  1126. * Fix HFILTER_URL_ONELINE to reduce false positive rate.
  1127. * Fix whitelist module.
  1128. * Allow override system predefined settings without touching system ones
  1129. by .try_include macro (by @andrejzverev)
  1130. * Check for [ip.address]-style HELO and suppress lookups. (by
  1131. @fatalbanana)
  1132. * Optimize hfilter (by @AlexeySa)
  1133. * Fix issue with random numbers generator in dns.
  1134. * Use more clever time values to setup entropy.
  1135. * Synced with the recent libucl.
  1136. 0.6.7:
  1137. * Use ChaCha20 for DNS generator (more secure DNS id)
  1138. * Unknown symbols now has zero weight and not 1.0
  1139. * Fix fuzzy hashes expire time
  1140. * Fix critical issue in statfiles on FreeBSD 9 (and some other platforms)
  1141. * Add .include_map macro to ucl parser
  1142. * Update libucl
  1143. * Fix headers end detection for DKIM module
  1144. * Fix a bug in received headers parser
  1145. * Validate IP addresses before pushing them to lua
  1146. * Start new documentation project
  1147. * Fixed tonns of other minor bugs
  1148. * Start to prepare for 0.7 with HTTP protocol and new settings
  1149. 0.6.6:
  1150. * Removed issue with BUFSIZ limitation in the controller output
  1151. * Simplify logging symbols escaping
  1152. * Adjusted weights for several rules
  1153. * Improve spamhaus rbl support
  1154. * Removed PBL for received headers checks
  1155. * Added hfilter module that performs various HELO and IP checks.
  1156. * Rspamd can now be reloaded by HUP signal
  1157. * Fuzzy storage should expire hashes properly
  1158. * Build system has been reworked for better supportof pkg-config
  1159. * Various minor bugfixes
  1160. 0.6.5:
  1161. * Fixed critical bug in DNS resolver, introduced in 0.6.4
  1162. * Improved multimap and rbl plugins to skip
  1163. * Add dns_sockets option for tuning sockets per server in DNS resolver
  1164. * Improved packages for rspamd
  1165. 0.6.4:
  1166. * Added io channels for DNS request to balance load and reduce id
  1167. collisions chance
  1168. * Fixed a bug in SPF filter that may cause core dump in specific
  1169. circumstances
  1170. * FIxed default config for rbl module
  1171. * It is possible to get a list of rspamc commands with their descriptions
  1172. * Added SORBS bl to the default config
  1173. * 2tld file for surbl module has been significantly extended
  1174. * Perl modules has been removed from the code.
  1175. * Fixed an issue in libucl when parsing macros
  1176. 0.6.3:
  1177. * Fixed issues with DNS:
  1178. - labels decompression algorithm was fixed;
  1179. - added resolve_mx to lua API;
  1180. - fixed modules that use DNS.
  1181. * Lua modules once_received and emails reworked for new resolver API and UCL.
  1182. * Debian package was polished.
  1183. * Fixed a bug in fuzzy_check module that prevents correct processing messages
  1184. without valid parts.
  1185. 0.6.2:
  1186. * Fuzzy check module has been reworked:
  1187. - now fuzzy_check operates with a group of rules, that define which
  1188. servers sre to be checked;
  1189. - it is possible to specify read_only groups to avoid learning errors;
  1190. - turn fuzzy_check to one_shot mode permanently;
  1191. - fuzzy_check module configuration is now incompatible with the previous
  1192. versions.
  1193. * Imported bugfixes from libucl.
  1194. * Fixed whitelist plugin.
  1195. * Fixed statfiles resizing.
  1196. * Improved logging initialization order.
  1197. * Fixed race condition in the controller worker.
  1198. 0.6.1:
  1199. * Critical bugfixes:
  1200. - fixed build system;
  1201. - fixed in_class setting in bayes learning;
  1202. 0.6.0:
  1203. * Use UCL instead xml for configuration (https://github.com/vstakhov/libucl)
  1204. * Fix statistics module normalization
  1205. * Rework the many modules for the new configuration:
  1206. - surbl has incompatible configuration;
  1207. - fuzzy_check has incompatible configuration;
  1208. - multimap has now new configuration;
  1209. - received_rbl is removed and replaced by rbl module.
  1210. * Removed deprecated options:
  1211. - statfile_pool_size;
  1212. - action and required/reject score for a metric.
  1213. * Simplify build system and unify configuration for all platforms.
  1214. * Improved URL detector (reduced false positive rate).
  1215. * Lua 5.2 is now the default and fully supported version.
  1216. * Tons of bugfixes and minor improvements.
  1217. 0.5.6:
  1218. * Fix bug with counters incrementing in rolling history
  1219. * Detect expl and exp2l as some systems do not have it
  1220. * Support input streams without Content-Length
  1221. * Implement counters output via rspamc and controller interface
  1222. * Fix bug with udp sockets in fuzzy storage
  1223. 0.5.5:
  1224. * New bayes normalizator based on inverse chi-square function
  1225. * Various fixes to fuzzy storage
  1226. * Allow update fuzzy storage only from specific IP addresses
  1227. * Better support of IPv6 and address selection algorithms
  1228. * Add CentOS spec file
  1229. 0.5.4:
  1230. * Fixed issues with diff algorithm
  1231. * Added support of RRD statistics
  1232. * Add webui worker for interface interaction
  1233. * Fix a lot of issues with dynamic conf
  1234. * Fix critical memory leak in settings code
  1235. * Improve stability of the system
  1236. 0.5.3:
  1237. * Added dynamic options
  1238. * Added advanced metaclassfication
  1239. * Added RESTfull API for controller
  1240. * Improved hashing algorithms
  1241. * Various fixes for rspamc client:
  1242. - allow interacting with unix sockets
  1243. - librspamdclient major cleanup
  1244. - bayes is now default classifier
  1245. 0.5.2:
  1246. * Added lua bindings for:
  1247. - basic mime parts, that allows checkign attachements for example;
  1248. - DNS resolver;
  1249. * Existing lua bindings now works without task object allowing to use them
  1250. in custom code.
  1251. * Threads system was reworked to avoid global lua interpreter lock.
  1252. * DKIM module now converts all line endings to CRLF how opendkim does.
  1253. * URL detector is now more accurate for text parts.
  1254. * Several critical bugs and memory leaks were fixed.
  1255. 0.5.1:
  1256. * Added lua worker type to handle network connections in lua.
  1257. * Added lua bindings for async_session, IO dispatcher, memory_pool, and
  1258. worker.
  1259. * Composites can now uses other composites in expressions.
  1260. * Fixes for debian package and for FreeBSD >= 9.1
  1261. * Add support of gmime-2.6 if gmime-2.4 is not found.
  1262. * Improve url detection and phishing detection.
  1263. * Add lua mime_part library to get an access to all message part
  1264. attributes (like filename, length, type).
  1265. 0.5.0:
  1266. * Added SMTP lightweight balancing proxy with XCLIENT support.
  1267. * Added lua bindings for upstreams objects and API.
  1268. * New pre-filters are implemented to support initial checking for messages.
  1269. * Added ratelimit plugin that uses redis protocol to store data.
  1270. * Added ipv6 support to spf and some other modules.
  1271. * Unbreak spf plugin.
  1272. * Allow options with the same name be threated as list.
  1273. * DKIM plugin an parsing code was added.
  1274. * Separate build system to put logic in several shared libraries.
  1275. * Many bugfixes.
  1276. 0.3.2:
  1277. * Add error handling for regexps
  1278. * Fix quit command in controller interface
  1279. * Write symbols weights to rspamc output
  1280. * Improve logic of selecting rspamc version
  1281. * Do not try to parse broken DNS replies
  1282. * Add 'raw' flag to FROM_EXCESS_BASE64 rule (requested by citrin)
  1283. * Output message id in rspamc reply
  1284. * Fix inserting composite symbol
  1285. * Fix output of log line
  1286. * Document composites
  1287. * Add logging for fuzzy checks
  1288. * Add logging for learning
  1289. * Improve logic of learning messages - do not learn more than specific threshold
  1290. * Fix inserting results for symbols that were incorrectly (for example more than 1 time) defined in config file
  1291. * Do not output control characters if output is not terminal
  1292. * Fix some logic errors in learning
  1293. * Consider lua plugins errors as fatal configuration errors
  1294. * Fix wirting message id during fuzzy_add command
  1295. * Display weight of symbols correctly
  1296. * Fixes to winnow learning
  1297. * One more try to improve accuracy of winnow algorithm
  1298. * Add bayesian classifier (initial version)
  1299. * Remove normalizer as it is winnow specific thing, so all statistic algorithms now returns value from 0 to 1
  1300. * Some fixes to fuzzy hashes expiration:
  1301. * Fix assertion while look up value in NULL hash (found by cirtin)
  1302. * Fix normalization for systems that have not tanhl function
  1303. * Ignore rfc822 group addresses
  1304. * Move images library to core rspamd
  1305. * Add lua api to access images properties
  1306. * Add post filters to lua API - filters that would be called after all message's processing
  1307. * Add ability to check for specified symbol in task results from lua
  1308. * Add ability to check for metric's results from lua
  1309. * Add ability to learn specified statfile form lua
  1310. * Add ability to extract filename and size of images from lua
  1311. * Fix assertion while extracting internet address
  1312. * Fix races in fuzzy storage
  1313. * Make spf parser case insensitive
  1314. * Add ability to check hashes of selected mime types
  1315. * Add ability to set minimum size in bytes for mime types
  1316. * Add ability to set minimum dimensions for images
  1317. * Assume all text/* content types as text/plain
  1318. * Fix getting data wrapper for gmime24
  1319. * Many fixes to statfile syncronization system
  1320. * Fixed statfile pool initialization and synchronization with disk
  1321. * Prepare 0.3.2
  1322. * Fix Mail::Rspamd::Config for new rspamd features
  1323. * Use Mail::Rspamd::Config in rspamc client
  1324. * Write user's name to rspamd log
  1325. * Prepare rspamd build infrastructure for creating rpm and deb packages
  1326. * Fix depends
  1327. * Add start script for linux systems
  1328. * Fix shared usage of statfiles
  1329. * Add invalidation of statfiles in case of learning, so now statfiles
  1330. * This should fix shared usage of statfile pool by several processes
  1331. * Fix misprint (reported by az)
  1332. * Fix stupid error when all checks can be done in a single pass
  1333. * New trie based url scanner (based on libcamel)
  1334. * Small fixes to rspamd perl client
  1335. * Write fuzzy hashes info to log
  1336. * Add trie interface to lua api
  1337. * Explain sample config and cleanup it
  1338. 0.3.1:
  1339. * Add modules documentation
  1340. * Continue implementing smtp proxy
  1341. * Implement new learning system, now rspamd should be much more intelligent while learning messages
  1342. * Convert statistic sums to use long double for counters
  1343. * Use hyperbolic tangent for internal normalizer
  1344. * In classify normalize result after comparing, not before
  1345. * New symbols sorter
  1346. * Fix strict aliasing while compiling with optimization
  1347. * Fix tanhl detection for platforms that have not implementation of it
  1348. * Remove several compile warnings
  1349. * Add experimental support of dynamic rules to regexp module
  1350. * Document views configuration
  1351. * Several fixes to documentation
  1352. * Add more logic for dynamic rules
  1353. * Add documentation for dynamic rules
  1354. * Add ability to make negations in networks in dynamic rules
  1355. * Clean up cache items correctly
  1356. * Implement basic SMTP dialog:
  1357. * Implement interaction with smtp upstream (with support of XCLIENT)
  1358. * Check messages received via smtp proxy
  1359. * Add support for sendfile in io dispatcher
  1360. * Fix issues with compatibility of worker_task and smtp proxy
  1361. * Proxy DATA command
  1362. * Fix SMTP
  1363. * Change metric logic
  1364. * Completely remove lex/yacc readers for config
  1365. * Make common sense of metric/action and symbols
  1366. * Sync changes with all plugins
  1367. * Incorrectly removed in previous commit
  1368. * Fix misprint (by Andrej Zverev)
  1369. * announce the "password" keyword in usage list
  1370. * Implement initial version of greylisting triplets storage
  1371. * Fix issues with smtp worker
  1372. * Fix QUIT command in SMTP worker
  1373. * Some fixes about new metrics system (may be incomplete)
  1374. * Get weights of symbol from default metric for symbols cache
  1375. * Fix setting task->from/task->rctp in smtp client
  1376. * Copy from and rcpt correctly
  1377. * Some performance improvements to IO dispatcher (do not drain the whole buffer after a single line readed)
  1378. * Fix smtp data input
  1379. * Fix misprint
  1380. * Add limit of maximum allowed smtp session errors
  1381. * New logic of SURBL module:
  1382. * Use system mkstemp(3) on systems where it is available as glib implementation
  1383. * Try to fix memmove issues in io dispatcher
  1384. * Remove debug from SURBL module
  1385. * Rewrite buffered input for line policy (again)
  1386. * Fix issue with links that are ip addresses in numeric form in surbl
  1387. * On Darwin use BSD style sendfile definition
  1388. * Reorganize platform specific knobs in CMakeLists
  1389. * Use gettimeofday on systems that have not clock_getres
  1390. * Use ftime for dns trans id generation on systems without clock_getres
  1391. * Darwin sendfile(2) support
  1392. * TIMEDB->TIMEB
  1393. * More to previous commit
  1394. * Pass env from main() arguments instead of platform specific global environ
  1395. * Fix compatibility issues
  1396. * Fix -lintl detection
  1397. * Init some variables to avoid problems
  1398. * Remove garbadge (gnome terminal sucks)
  1399. * Add more information about why we drop smtp connection
  1400. * Fix mkstemp call
  1401. * Send to upstream QUIT command at the end of session
  1402. * Check return value of each rspamd_dispatcher_write as in case of write errors sessions can be destroyed early
  1403. * Fix states in smtp dialog
  1404. * Use rspamd_snprintf instead of libc one
  1405. * Fix URLS command
  1406. * Fix reconfigure process of surbl module
  1407. * Fix destroying smtp session (unmap memory and do not delete pool early)
  1408. * Delete pool after using its variables
  1409. * Delay timer must be registered in async session to correctly handle connection termination
  1410. * Register dns requests in session too
  1411. * Make session before registering events
  1412. * Remove events in handlers
  1413. * Add ability to set filters for smtp worker for each smtp stage
  1414. * Add very initial version of DNS resolver (many things to be done)
  1415. * Announce weights and sync
  1416. * Fix few typo
  1417. * Understand short names of facility in logging config
  1418. * Add ability to make whitelist for spf checks
  1419. * Misprint != -> ==
  1420. * Handle lua tag in way that it is not required to write additional text:
  1421. * Strip all starting whitespace symbols from xml texts
  1422. * Fix stupid bug in calculating buffer length while reading file maps
  1423. * Add resolv.conf parsing into dns.c
  1424. * Fix microseconds<->milliseconds conversions
  1425. * Take callback argument in Mail::Rspamd::Client for processing files and directories
  1426. * Print results if rspamc is called for a directory
  1427. * Fix stupid error with surbl module reconfig (another one, blame me)
  1428. * Do not show duplicate urls in url header
  1429. * Fix detection of numeric urls (reported by citrin)
  1430. * Write real time of message's scan to log (not only virtual)
  1431. * Fix chartable module in utf mode
  1432. * Fix parsing of some broken urls
  1433. * Add ability to test regexp with 'T' flag
  1434. * Write more code for DNS resolver:
  1435. * Make DNS resolver working
  1436. * Many improvements to rspamd test suite: now it CAN be used for testing rspamd functionality
  1437. * Write DNS resolver tests
  1438. * Fix issues with memory_pool mutexes and with creating of statfiles
  1439. * Forgotten in previous commit
  1440. * Add support for parsing SPF and SRV records
  1441. * Fix PTR parsing
  1442. * Add tests
  1443. * Make SURBL module to use rspamd dns module
  1444. * Several fixes to DNS logic
  1445. * Remove evdns and use only rspamd resolver
  1446. * 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
  1447. * Fix resolving in smtp module
  1448. * Init events before configuring resolver in smtp worker
  1449. * Set resolver inside task
  1450. * Fix reload signal (reported by citrin)
  1451. * Some improvements to redirector
  1452. * Call has_forked method to inform POE about fork
  1453. * Fix lua DNS code
  1454. * Decompress labels in DNS packets more strictly
  1455. * Fix some problems with TXT records
  1456. * Try to fix removing of DNS events
  1457. * Do not insert unparsed RR's into reply
  1458. * Calling callbacks may cause destroying session from which we are calling callback so we MUST call callback as the latest action
  1459. * Fix check_smtp_data function
  1460. * Add ability to make views by recipient
  1461. * Add ability to set metric's action from config file
  1462. * Fix bug with writing garbadge if message has no urls or no messages
  1463. * Fix bug with incorrect behaviour of compare_parts_distance function
  1464. * Add ability to assign several actions to one metric
  1465. * Report action in rspamc protocol
  1466. * Mail::Rspamd::Client and rspamc can now understand Action header too
  1467. * Write action to log as well
  1468. * Make valgrind happy about comparing symbols
  1469. * Add more debug to comparing parts distance function
  1470. * Write action even if message has no symbols
  1471. * Make improvements to HTML entites decoder: now it replaces entities with common characters and
  1472. * Add -d option to force debug output
  1473. * Assume 7bit as default transfer encoding
  1474. * Do not overwrite lua plugins and configs if they already exists in target directory
  1475. * Improve logging
  1476. * Write queue id to log
  1477. * Remove test messages from cmake
  1478. * Reopen log file by USR1 signal
  1479. * Add reopenlog method to FreeBSD rc script
  1480. * Adopt foreach for cmake 2.6
  1481. * Fix to rc script
  1482. * Do not try to resolve names with several dots in a row
  1483. * Fix surbl request formatting for ip addresses
  1484. * Handle cases of broken requests
  1485. * Fix problems with parsing compressed names
  1486. * Fix TXT records parsing
  1487. * Fix expanding spf macros that may fail in rare cases
  1488. * Fix another error with early task destroying
  1489. * Handle empty from header
  1490. * Improve reopenlog command in rc script
  1491. * Strip trailing whitespace characters in Mail::Rspamd::Client
  1492. * Use ungreedy match to strip trailing whitespaces
  1493. * Stupid error in calculation compressed label length
  1494. * Some optimizations to client library
  1495. * Do not compare empty parts
  1496. * Empty and non-empty parts are allways different
  1497. * Save in regexp cache the whole regexp with header name (if exists) and with flags
  1498. * Add rspamd_log variable to lua plugins to access logging functions
  1499. * Each part in rspamd task now can have parent part
  1500. * Check for parts distance only for multipart/alternative subparts
  1501. * Do not check attachements even if they are text (but attached as file)
  1502. * Do not die if write (2) returned ENOSPACE while doing logging, turn on throttling mode instead (1 write try in a second)
  1503. * Add ability to turn on debug for specific symbols
  1504. * Add ability to configure dns timeouts and dns retransmits in config file
  1505. * More debug
  1506. * Fix extracting arguments in lua logger interface
  1507. * Turn off debug_ip during reload if it was disabled by new config
  1508. * Improve lua logging
  1509. * Pre-init symbols cache when rereading config
  1510. * Fix lua representing of invalid ip (nil, not 255.255.255.255)
  1511. * Fix R_TO_SEEMS_AUTO rule (by citrin)
  1512. * Add multimap lua plugin
  1513. * Fix some multimap issues
  1514. * Try to save images hashes to fuzzy storage to stop some annoying spammers
  1515. * Allocate some more bytes for read buffer to avoid incorrect behavoiur
  1516. * Add ability to check dns black lists by multimap module
  1517. * Add multimap documentation
  1518. * Fix labels parsing
  1519. * Another try to save regexps in cache correctly
  1520. * Improve test logs for regexps
  1521. * Fix parsing txt records to avoid reading of uninitialized data
  1522. * Fix error with writing symbols cache file
  1523. * Fix error while working in utf mode when raw regexps was not created properly
  1524. * Do not add extra byte while converting text to utf
  1525. * Add error handling for regexps