aegee-milter consists of "core", "modules" and "lists".
The modules say per recipient how to act. They are queried at the RCPT TO:, end of headers and end of data whetherto accept the message for the recipient, or to reject it, and what message to use when rejecting the message. Example for modules is mod_delay, which can throttle SMTP connections, or mod_sieve to execute Sieve scripts per recipient at SMTP Level.
The core glues aegee-milter to the MTA and asks each module, how to act. Its role is to map the per recipient decisions of the modules, to the SMTP protocol, depending on the preferences of the site administrator.
The lists are data sources or sinks. The core and the modules can read or write data to a list, by knowing its name. E.g. to log data, core send data to a list called âlogâ. Modules rely on the presence of lists with specific name. That is, if a module is programmed to put or get data in a list with particular name and this list is not configured to be loaded, then aegee-milter crashes at the moment, when data for that list is inserted or queried.
More on the core, modules and lists is expained in the Developer’s documentation. As user, the understanding of these concepts is necessary for doing the right configuration.
The order in which modules are executed is significants. The per module documentation explains the rationale of the built-in order. aegee-milter’s is built by default with an module execution order, that makes sense.