Overview¶
spmfilter is a high-performance mail filtering framework, written in C. It 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).
Features
- 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.
- Plugin support
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.
- Plugin tracking
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.
- Speed
By the use of C, a higher performance is reached than other filters using scripting languages.
- Reliability
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.
Download
Releases can be found at the Files Section, binary packages can be found at ftp.spmfilter.org. Development is done using Mercurial
$ hg clone http://www.spmfilter.org/hg/spmfilter
Documentation and installation
Follow these links to find available documentation and installation notes:
Mailing Lists
There are two mailing lists devoted to spmfilter.
- Users mailing list
The main list for help and announcements.
- Developers mailing list
The developers mailing list is used for discussions and questions about the development of spmfilter or plugins.
Contribute to spmfilter
We're happy about developers who want to share their usefull spmfilter-plugins with the community. Just contact us on the developers mailing list if you want to contribute spmfilter-plugins to spmfilter.
License
spmfilter is released under the LGPL. This means (in short..) that you are free to use, change and distribute it.