It fits poorly with limited amount of checks that are (and will be)
implemented in maddy.
Advanced filtering that requires "spam score" logic should be performed
by external software such as rspamd. At this point duplicating that
logic in maddy makes no sense, since it is highly problematic to
integrate it with external software.
Check.NewMessage is renamed to Check.CheckStateForMsg to allow
a single module to implement both Modifier and Check interfaces.
Due to various implementation details, body and MAIL FROM rewrites
are not applied on per-destination basis.
Closes#134.
It makes sense to allow having default of bool flag to true and
allow writing 'name no' to disable it. This allows getting rid of
"dont", "no" etc in names or certain directives which are meant to be
enabled by default. IMO 'do_x no' looks better than 'dont_do_x'
Root package now contains only initialization code and 'dummy' module.
Each module now got its own package. Module packages are grouped by
their main purpose (storage/, target/, auth/, etc). Shared code is
placed in these "group" packages.
Parser for module references in config is moved into config/module.
Code shared by tests (mock modules, etc) is placed in testutils.