spmfilter is written in C and attempts to be a general filtering framework for any purposes. Filtering mechanisms are provided by plugins, the API enables spmfilter plugins to access messages as they are being processed by the MTA. This allows them to examine and modify message content and meta-information during the SMTP transaction.
Plugins are loaded at runtime and can be processed in any sequence, the processing chain can also be altered by a single plugin, for example if the plugin has to stop further processing (e.g. the clamav-plugin detected malicious software like a virus and the infected message is actually discarded - so further processing is stopped by the plugin).
Here are some key features of "spmfilter":
Generic SMTP engine:
· spmfilter ships with it's own SMTP engine, so you can use spmfilter with any MTA. Data, submitted via SMTP, is available for all plugins.
· There are no filtering mechanisms in spmfilter, all is done via plugins. Plugins are loaded at runtime and can be processed in any sequence. Any plugin can be added or changed independently of other existing plugins.
· By the use of state files, spmfilter is able to track the current plugin processing status. In short, plugins which have already been executed won't be re-processed in case of an error.
Message parsing and creation:
· API functions for header and message parsing as well as header and message creation.
Generic database interface:
· Transparent connection to multiple database systems with connection pooling, failover and load balancing functions. Spmfilter supports PostgreSQL, MySQL, SQLite, BerkeleyDB and LDAP as database backend.
· By the use of C, a higher performance is reached than other filters using scripting languages.
· Coding failures (e.g. core dumps) in a plugin will not stop mail delivery. Faced with such a failure, the MTA will receive a 4xx SMTP error code, so that the mail will be queued for later processing.
What's New in This Release: [ read full changelog ]
· Fixed a config parse error
· Added checks for empty SQL/LDAP query strings, to catch lookup exceptions.
· Added new function to validate email addresses
· SMTP engine validates now sender and recipient addresses, according to RFC 2822.