Jim Niemira (urmane@urmane.org) wrote the original C module and some quick and dirty python to use it. Stuart D. Gathman (stuart@bmsi.com) took that kludge and added threading and context objects to it, wrote a proper OO wrapper (Milter.py) that handles attachments, did lots of testing, packaged it with distutils, and generally transformed it from a quick hack to a real, usable Python extension. Other contributors (in random order): Dwayne Litzenberger, B.A.Sc. for library_dirs patch to compile on Debian Dave MacQuigg for noticing that smfi_insheader wasn't supported, and creating a template to help first time pymilter users create their own milter. Terence Way for providing a Python port of SPF Scott Kitterman for doing lots of testing and debugging of SPF against draft standard, and for putting up a web page that validates SPF records using spf.py Alexander Kourakos for plugging several memory leaks George Graf at Vienna University of Economics and Business Administration for handling None passed to setreply and chgheader. Deron Meranda for IPv6 patches Jason Erikson for handling NULL hostaddr in connect callback. John Draper for porting Python milter to OpenBSD, and starting to work on tutorials then pointing out that it would be easier to just write the MTA in Python. Eric S. Johansson for helpful design discussions while working on camram Alex Savguira for finding bugs with international headers and suggesting the scan_zip option. Business Management Systems - http://www.bmsi.com for hosting the website, and providing paying clients who need milter service so I can work on it as part of my day job. If I have left anybody out, send me a reminder: stuart@bmsi.com