* Add custom filter for making marks for new user:
- each username is passed throught metaphone filter
- then we make prefix tree based on english letters from metaphone
- then we are searching for the longest common string and output result (how many times we got that string)
* Add first custom filter for making marks for ip addresses and networks
* Some additions to radix tree library:
- allow tree traverse
- add new insert methods (add and replace)
- store keys in radix nodes (thought we can calculate key by bits, but I think that storing key is not too expensive)
- values in a tree are now uintptr_t
- custom filters are dlopened and provides callbacks for user's input processing
- custom filters can be used to extend rspamd functionality for unusual (non email processing cases)
- custom filters allows to use rspamd async IO model and process management for performing custom network tasks
- independent and customizeable buffering
- line buffering
- errors handling support
- custom (ip based) debug
- append function name automaticaly (based on __FUNCTION__)
- add some logic to logs system
* Implement pre and post classify callbacks for checking specific statfiles for this task
TODO:
- add properties to get all parameters of input task
- add properties to statfile object
- add some normalization function for calling from classify process
- document changes
* Remove LRU expiration logic from statfiles and replace it with random/lowerest value expiration logic:
expire random block or block with lowerest value
! statfiles are incompatible again
- add macros support
- fix include command
- fix exists command
- add handling of DNS errors
- fix all records in include parts
- fix some issues with ip masks
- add plugin to work with spf records (initial version)
- make all spf types working (except include and redirect that still need some attention)
- add support of MX records to evdns
- some major fixes and testing of the whole spf subsystem
- fix bug with mmapping files: new addresses must NOT be allocated in shared memory by themselves
- fix bug with winnow classifier that totally brokes it down
- fix bug with too much grow of values
* Use double precission values in statistics
* Add statistics for statfiles
* Add more informative data to output of LEARN command (weight of incoming message)
* Add weight to output of classifier as well