elspy 0.1.1 -----------
elspy is a layer of glue code that enables you to write Python code to scan email messages at SMTP-time with the Exim MTA (mail transport agent). elspy also includes a small Python library with common mail-scanning tools, including an interface to SpamAssassin and a simple-but-effective virus detector.
Exim is a highly flexible and customizable MTA (mail transport agent) for Unix Internet email servers. One of the new features in Exim 4.0 was the local_scan() API, which allows sites to supply custom code for scanning messages at SMTP time, accepting or rejecting them based on message content. Normally, you have to write the local_scan() function in C.
Python is a high-level, extensible, embeddable, object-oriented programming language. Scanning email is a great example of something that you can do in any decent programming language, but do a lot more easily in Python than in C.
The core of elspy is a C local_scan() function that embeds a Python interpreter in Exim, allowing you to write your own local_scan() function in Python instead of C.
elspy requires Exim 4.0 or greater, and Python 2.0 or greater.
WEB PAGE & MAILING LIST -----------------------
You can find the latest version of elspy here:
To report bugs, submit patches, browse the CVS, etc., please use the SourceForge project page:
For help using elspy, or to discuss future development ideas, please join the elspy-users mailing list:
You can post to the list by sending mail to firstname.lastname@example.org.
* Fix serious bug in header_add() and log_write() wrappers: they failed to escape '%' characters in the passed-in string, which could cause Exim to dump core since it treats those strings as format strings.
* Change to accept messages by default if there's any Python problem, not just an import problem. Made this behaviour a bit more customizable with some #define's at the top of elspy.c