diff options
Diffstat (limited to 'Mailman')
-rwxr-xr-x | Mailman/Defaults.py.in | 11 | ||||
-rw-r--r-- | Mailman/Handlers/SMTPDirect.py | 5 |
2 files changed, 16 insertions, 0 deletions
diff --git a/Mailman/Defaults.py.in b/Mailman/Defaults.py.in index 7a2dc526..e6738192 100755 --- a/Mailman/Defaults.py.in +++ b/Mailman/Defaults.py.in @@ -629,6 +629,17 @@ NNTP_REWRITE_DUPLICATE_HEADERS = [ # 3 -> always remove, rename and preserve original DKIM headers. REMOVE_DKIM_HEADERS = No +# If the following is set to a non-empty string, that string is the name of a +# header that will be added to personalized and VERPed deliveries with value +# equal to the base64 encoding of the recipient's email address. This is +# intended to enable identification of the recipient otherwise redacted from +# "spam report" feedback loop messages. For example, if +# RCPT_BASE64_HEADER_NAME = 'X-Mailman-R-Data' +# a header like +# X-Mailman-R-Data: dXNlckBleGFtcGxlLmNvbQo= +# will be added to messages sent to user@@example.com. +RCPT_BASE64_HEADER_NAME = '' + # All `normal' messages which are delivered to the entire list membership go # through this pipeline of handler modules. Lists themselves can override the # global pipeline by defining a `pipeline' attribute. diff --git a/Mailman/Handlers/SMTPDirect.py b/Mailman/Handlers/SMTPDirect.py index 3b489c2f..ca6aebdd 100644 --- a/Mailman/Handlers/SMTPDirect.py +++ b/Mailman/Handlers/SMTPDirect.py @@ -30,6 +30,7 @@ import copy import time import socket import smtplib +from base64 import b64encode from types import UnicodeType from Mailman import mm_cfg @@ -371,6 +372,10 @@ def verpdeliver(mlist, msg, msgdata, envsender, failures, conn): del msgcopy['x-mailman-copy'] if msgdata.get('add-dup-header', {}).has_key(recip): msgcopy['X-Mailman-Copy'] = 'yes' + # If desired, add the RCPT_BASE64_HEADER_NAME header + if len(mm_cfg.RCPT_BASE64_HEADER_NAME) > 0: + del msgcopy[mm_cfg.RCPT_BASE64_HEADER_NAME] + msgcopy[mm_cfg.RCPT_BASE64_HEADER_NAME] = b64encode(recip) # For the final delivery stage, we can just bulk deliver to a party of # one. ;) bulkdeliver(mlist, msgcopy, msgdata, envsender, failures, conn) |