[Mailman-Developers] LTMP for incoming mail

Barry Warsaw barry at python.org
Thu Sep 28 14:12:55 CEST 2006


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

I've changed the subject to more accurately reflect this thread.

On Sep 28, 2006, at 4:11 AM, Nigel Metheringham wrote:

> On Wed, 2006-09-27 at 23:25 -0500, Brad Knowles wrote:
>> LMTP is probably the best and most native method for both sendmail
>> and postfix.  I can't speak for other MTAs.
>
> Exim can do LMTP, over a pipe (ie fork/exec program), a socket or
> TCP/IP.

What I find really intriguing about this approach is the ability to  
reject some messages immediately, presumably allowing the MTA to  
bounce them.  It's not clear how much work we could get away with at  
message receipt time in our mythical LMTP server, but let's imagine  
we could at least parse the message and do some preliminary sanity  
checks on it.  Say the message had MIME breakage or couldn't be  
parse.  Or say we could do a quick check of the sender's permissions  
to post, etc.  We could reject the message then before it entered  
Mailman's incoming queue.

What worries me most about this though is that we'd have to (probably  
write and) maintain an LMTP server, and make sure that it was  
efficient enough to keep up with incoming mail pressures, both steady  
state and peak, and be highly robust against errors.  Plus, this is  
another moving part that mailmanctl would have to manage, and of  
course, if our LMTP server breaks, your Mailman is no longer  
accepting incoming mail.  We should not underestimate the work  
involved here.

I did a quick Google search to see if there were any GPL'd LMTP  
servers we could piggyback on, the idea being that if we could find a  
shell of a C program we could embed Python in and talk directly to  
Mailman during the LMTP protocol.  I found this one in the PLL project:

http://pll.sourceforge.net/

but it looks like the code is several years old so I doubt it's being  
maintained, and it doesn't appear to have been released as a 1.0  
tool.  Postfix has an lmtp server, but it seems fairly heavyweight  
(being tied into the smtp server) and it's not clear to me we could  
combine our GPL code with Postfix's license.

Of course there's always Twisted, but that seems like a big bite to  
take for this task.

ISTM that the trade-off then is rolling our own LMTP server vs. doing  
maildir delivery.  Are we confident that we can implement a high  
performance enough server that would give us better throughput than  
maildir would?  In Python?

It might be fun to try, but OTOH it /is/ a distraction from other MM  
2.2 work that needs to get done.  So unless anybody has any leads on  
existing GPL-compatible code we could use, or feels really motivated  
to work on a Python version, I'm inclined to go with maildir for  
MM2.2.  It's not like we couldn't add LMTP at some later point.

- -Barry

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Darwin)

iQCVAwUBRRu8TXEjvBPtnXfVAQICiAP8DahfyRAcVrrbYIFAUlC8R8AA7oZiuJxV
NPQ/7Juaf0FrU/nrK+2uWZ6Zf614Tv4lQh3TwRxaOgPHgfsSB8a0UknN+Zy+nXyK
gs9DMHQ2iIan/uIDxo1E4Qtu9sDuh1nctbm8pd3NW8bbyvqmNyli9bknHqE/LtDu
12RcvYEBIdc=
=h3r9
-----END PGP SIGNATURE-----


More information about the Mailman-Developers mailing list