[Mailman-Developers] New unofficial LMTP branch

Ian Eiloart iane at sussex.ac.uk
Tue Jul 22 15:12:09 CEST 2008



--On 14 July 2008 11:03:51 +0100 William Mead 
<william.multimedia at gmail.com> wrote:

> Hi,
>
> A new Mailman 3 branch can now be found at
> https://code.launchpad.net/~wilunix/mailman/lmtp
> The wiki at http://wiki.list.org/display/DEV/MailmanBranches has been
> updated with this branch in the unofficial section.
>

We're in Willam's final week here, and he's made good progress. He's 
uploaded an unofficial branch of Mailman 3.0 with an enhanced LMTP 
interface - supporting ENHANCEDSTATUSCODES, and rejecting mail as early as 
possible when it isn't wanted.

He's also backported the code to version 2.2.

I've documented this in a comment at http://snipurl.com/33196


William Mead has been working on LMTP code for me. He's produced 
implementations for version 3.0 and for version 2.2, with these tests 
applied after RCPT TO in the LMTP conversation:

1. message will be rejected if the list name is not known.
2. message will be accepted if the sender matches "accept_these_nonmembers".
3. message will be accepted if "generic_nonmember_action" is not reject.
4. message will be accepted if the sender is a list member.
5. if we get this far, the message will be rejected - the sender is a 
non-member of a closed list.

We could also reject other members if they're moderated, for example. 
However, we've adopted the view that it is relatively safe to generate a 
bounce message for someone who is a member of the list.

William has completely reimplemented the SMTPD code in Python, to support 
ENHANCEDSTATUSCODES, because the LMTP RFC requires that - even though the 
examples in the RFC don't show them being used! However, the code doesn't 
implement PIPELINING - also required by LMTP - because the underlying 
ASYNCHAT/ASYNCORE architecture doesn't seem to support it. We discovered 
that advertising PIPELINING causes the test smtp client to fail, but we've 
not even thought about how to fix that - LMTP clients which are 
re-implementations of SMTP clients might just live with the fact that 
PIPELINING isn't advertised.

William's code is at https://code.launchpad.net/~wilunix

The LMTP queue runner allows us to run Mailman on a server that's unrelated 
to the main MTA. With an Exim MTA, you could use a recipient callout  to 
verify that the sender is permitted to post to the list, before accepting 
the message for deliver. This means that rejecting an unwanted message 
should not create collateral spam.

-- 
Ian Eiloart
IT Services, University of Sussex
x3148


More information about the Mailman-Developers mailing list