Mail Filter is a Mail Transport Agent (MTA) framework. The main goal is to implement a protection system against unsolicited or potentially harmful e-mail. However, its modular architecture makes Mail Filter suitable for a wide variety of applications that involve SMTP.
Mail Filter is written entirely in C and uses a very simple multi-process model for handling several clients at the same time. Using a modular design, Mail Filter has an SMTP core and various modules that handle distinct functionality: SMTP client, Spamassassin integration, Clamav integration, SQL logging, etc.
Each module can install its own handle in all points of the SMTP transaction and optionally force a specific answer to the client.
Currently all logic behind Mail Filter is hard-coded in the modules source code. This allows no user (administrator) control over the filtering process. Advanced setups (such as skipping the Spamassassin checks for some domains but only if they were authenticated with domain keys, while still going through the Clamav module) are nearly impossible in the current design.
Even if these advanced setups were possible, they would have involved a very complex configuration file and very complicated code to act upon all the possible paths resulting from the various configuration options.
In conclusion, configuration-driven behavior is not scalable and flexible enough.
The project goal is to provide the user (administrator) with the most flexible means of controlling the Mail Filter behavior. This can be achieved by integrating a scripting language into Mail Filter and moving all the logic from the various modules to the script. This way the behavior can be changed and customized without needing to understand the C language and the Mail Filter internals and without recompiling Mail Filter.