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

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