--- mailman-2.1.8/Mailman/Handlers/SMTPDirect.py.sender-header 2005-12-30 13:50:08.000000000 -0500 +++ mailman-2.1.8/Mailman/Handlers/SMTPDirect.py 2006-05-02 13:45:21.000000000 -0400 @@ -347,17 +347,23 @@ def bulkdeliver(mlist, msg, msgdata, envsender, failures, conn): - # Do some final cleanup of the message header. Start by blowing away - # any the Sender: and Errors-To: headers so remote MTAs won't be - # tempted to delivery bounces there instead of our envelope sender - # - # BAW An interpretation of RFCs 2822 and 2076 could argue for not touching - # the Sender header at all. Brad Knowles points out that MTAs tend to - # wipe existing Return-Path headers, and old MTAs may still honor - # Errors-To while new ones will at worst ignore the header. - del msg['sender'] + # Do some final cleanup of the message header. Start by blowing away any + # Errors-To: headers so remote MTAs won't be tempted to delivery bounces + # there instead of our envelope sender. + # + # Previously, we also blew away any Sender: headers, and added a new + # Sender: header with our envelope sender. However, this behavior seems to + # cause more problems than it solves, because various MUAs will include the + # Sender address in a reply-to-all, which is not only confusing to + # subscribers, but can actually disable/unsubscribe them from lists, + # depending on how often they accidentally reply to it. + # + # The drawback of not touching the Sender: header is that some MTAs might + # still send bounces to it, so by not trapping it, we can miss bounces. + # (Or worse, MTAs might send bounces to the From: address if they can't + # find a Sender: header.) But at least for now, we're going to take our + # chances with leaving the Sender: header alone. del msg['errors-to'] - msg['Sender'] = envsender msg['Errors-To'] = envsender # Get the plain, flattened text of the message, sans unixfrom msgtext = msg.as_string()