ANNOUNCE: elspy 0.1.1 released

Greg Ward
Tue, 22 Oct 2002 19:30:21 -0400

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.


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


  * 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

Greg Ward <>               
Any priest or shaman must be presumed guilty until proven innocent.