aboutsummaryrefslogtreecommitdiffstats
path: root/Mailman/Handlers
diff options
context:
space:
mode:
authorMark Sapiro <mark@msapiro.net>2013-10-29 13:24:47 -0700
committerMark Sapiro <mark@msapiro.net>2013-10-29 13:24:47 -0700
commit2be3678296dfe921fc9cf4a2cd3a8ed71fdd4232 (patch)
tree02214c9944edf19cb11b7108a9506410d38f73f1 /Mailman/Handlers
parentc2f599fd9b708faf45d8dd621cdd89cc814f60d5 (diff)
downloadmailman2-2be3678296dfe921fc9cf4a2cd3a8ed71fdd4232.tar.gz
mailman2-2be3678296dfe921fc9cf4a2cd3a8ed71fdd4232.tar.xz
mailman2-2be3678296dfe921fc9cf4a2cd3a8ed71fdd4232.zip
Implemented whitelist for headers to keep for anonymous lists.
Diffstat (limited to 'Mailman/Handlers')
-rw-r--r--Mailman/Handlers/Cleanse.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/Mailman/Handlers/Cleanse.py b/Mailman/Handlers/Cleanse.py
index 9e9dba15..c3e7aa43 100644
--- a/Mailman/Handlers/Cleanse.py
+++ b/Mailman/Handlers/Cleanse.py
@@ -26,6 +26,25 @@ from Mailman.Utils import unique_message_id
from Mailman.Logging.Syslog import syslog
from Mailman.Handlers.CookHeaders import uheader
+cres = []
+for regexp in mm_cfg.ANONYMOUS_LIST_KEEP_HEADERS:
+ try:
+ cres.append(re.compile(regexp, re.IGNORECASE))
+ except re.error, e:
+ syslog('error',
+ 'ANONYMOUS_LIST_KEEP_HEADERS: ignored bad regexp %s: %s',
+ regexp, e)
+
+def remove_nonkeepers(msg):
+ for hdr in msg.keys():
+ keep = False
+ for cre in cres:
+ if cre.search(hdr):
+ keep = True
+ break
+ if not keep:
+ del msg[hdr]
+
def process(mlist, msg, msgdata):
# Always remove this header from any outgoing messages. Be sure to do
@@ -54,6 +73,10 @@ def process(mlist, msg, msgdata):
# And so can the message-id so replace it.
del msg['message-id']
msg['Message-ID'] = unique_message_id(mlist)
+ # And something sets this
+ del msg['x-envelope-from']
+ # And now remove all but the keepers.
+ remove_nonkeepers(msg)
i18ndesc = str(uheader(mlist, mlist.description, 'From'))
msg['From'] = formataddr((i18ndesc, mlist.GetListEmail()))
msg['Reply-To'] = mlist.GetListEmail()