> >>>>> "NM" == Nigel Metheringham > >>>>> <[EMAIL PROTECTED]> writes: > > NM> Ideally you would make a copy in memory, ship it down the > NM> delivery pipeline, then work on the next copy... really only > NM> need a few copies actually in python memory at once (pretty > NM> much just the number of outgoing delivery streams). > > That's what I have in mind. > > NM> Of course as the MTA catches these its going to make a queue > NM> file on disk for each one unless you can do this funky passing > NM> the VERP stuff down the pipeline stuff thats been mentioned on > NM> the list before. > > It would be really cool if we could get a bunch of MTA authors > together (I only care about the open source ones <wink>) to define a > protocol for letting the MTA doing the stitching. I think Postfix, > and probably Exim support a way to do this for the envelope sender, > but the really interesting bits happen when the body of the message > can be personalized. The outgoing MTA's the most efficient place to > do this, but you have to get it the information it needs to chew on.
BTW, I'm doing this for the From VERPing with Postfix, and it's working out really well for me. The changes are really small and well-contained, and my bounce processing is *really* working better now (I never ever have a missed bounce): Index: Mailman/Handlers/SMTPDirect.py =================================================================== RCS file: /cvsroot/mailman/mailman/Mailman/Handlers/SMTPDirect.py,v retrieving revision 2.11 diff -u -r2.11 SMTPDirect.py --- Mailman/Handlers/SMTPDirect.py 16 Dec 2001 06:23:14 -0000 2.11 +++ Mailman/Handlers/SMTPDirect.py 8 Mar 2002 23:28:20 -0000 @@ -75,6 +75,9 @@ # do that here?) del msg['sender'] del msg['errors-to'] + # DJM - do this unconditionally since we're VERPing as below + del msg['sender'] + del msg['errors-to'] # Get the flat, plain text of the message msgtext = msg.as_string(unixfrom=0) # Time to split up the recipient list. If we're VERPing then each chunk @@ -270,7 +273,9 @@ if not getattr(conn, 'sock', 0): conn.connect(mm_cfg.SMTPHOST, mm_cfg.SMTPPORT) # Send the message - refused = conn.sendmail(envsender, recips, msgtext) + # DJM - do Postfix VERPing + refused = conn.sendmail(envsender, recips, msgtext,\ + mail_options=["XVERP"]) except smtplib.SMTPRecipientsRefused, e: refused = e.recipients # MTA not responding, or other socket problems, or any other kind of Index: Mailman/Queue/BounceRunner.py =================================================================== RCS file: /cvsroot/mailman/mailman/Mailman/Queue/BounceRunner.py,v retrieving revision 2.8 diff -u -r2.8 BounceRunner.py --- Mailman/Queue/BounceRunner.py 7 Mar 2002 16:54:39 -0000 2.8 +++ Mailman/Queue/BounceRunner.py 8 Mar 2002 23:28:21 -0000 @@ -111,6 +111,8 @@ continue # not a bounce to our list # All is good addr = '%s@%s' % mo.group('mailbox', 'host') + syslog('bounce', 'VERP bounce from %s header for addr %s', + header, addr) except IndexError: syslog('error', "VERP_REGEXP doesn't yield the right match groups: %s", _______________________________________________ Mailman-Developers mailing list [EMAIL PROTECTED] http://mail.python.org/mailman/listinfo/mailman-developers