diff options
-rwxr-xr-x | Mailman/Defaults.py.in | 4 | ||||
-rw-r--r-- | Mailman/Gui/General.py | 24 | ||||
-rw-r--r-- | Mailman/Handlers/Cleanse.py | 3 | ||||
-rw-r--r-- | Mailman/Handlers/CleanseDKIM.py | 4 | ||||
-rwxr-xr-x | Mailman/Handlers/CookHeaders.py | 3 | ||||
-rwxr-xr-x | NEWS | 3 |
6 files changed, 28 insertions, 13 deletions
diff --git a/Mailman/Defaults.py.in b/Mailman/Defaults.py.in index f87f6665..ee17d344 100755 --- a/Mailman/Defaults.py.in +++ b/Mailman/Defaults.py.in @@ -108,6 +108,10 @@ ALLOW_SITE_ADMIN_COOKIES = No # expire that many seconds following their last use. AUTHENTICATION_COOKIE_LIFETIME = 0 +# The following must be set to Yes to enable the 'author is list' feature. +# See DEFAULT_AUTHOR_IS_LIST below. +ALLOW_AUTHOR_IS_LIST = No + # Form lifetime is set against Cross Site Request Forgery. FORM_LIFETIME = hours(1) diff --git a/Mailman/Gui/General.py b/Mailman/Gui/General.py index 53f2e908..d28fe311 100644 --- a/Mailman/Gui/General.py +++ b/Mailman/Gui/General.py @@ -153,15 +153,21 @@ class General(GUIBase): directive. eg.; [listname %%d] -> [listname 123] (listname %%05d) -> (listname 00123) """)), + ] - ('author_is_list', mm_cfg.Radio, (_('No'), _('Yes')), 0, - _("""Replace the sender with the list address to conform with - policies like ADSP and DMARC. It replaces the poster's address - in the From: header with the list address and adds the poster to - the Reply-To: header, but the anonymous_list and Reply-To: header - munging settings below take priority. If setting this to Yes, - it is advised to set the MTA to DKIM sign all emails.""")), - + if mm_cfg.ALLOW_AUTHOR_IS_LIST: + rtn.append( + ('author_is_list', mm_cfg.Radio, (_('No'), _('Yes')), 0, + _("""Replace the sender with the list address to conform with + policies like ADSP and DMARC. It replaces the poster's + address in the From: header with the list address and adds the + poster to the Reply-To: header, but the anonymous_list and + Reply-To: header munging settings below take priority. If + setting this to Yes, it is advised to set the MTA to DKIM sign + all emails.""")) + ) + + rtn.extend([ ('anonymous_list', mm_cfg.Radio, (_('No'), _('Yes')), 0, _("""Hide the sender of a message, replacing it with the list address (Removes From, Sender and Reply-To fields)""")), @@ -382,7 +388,7 @@ class General(GUIBase): useful for selecting among alternative names of a host that has multiple addresses.""")), - ] + ]) if mm_cfg.ALLOW_RFC2369_OVERRIDES: rtn.append( diff --git a/Mailman/Handlers/Cleanse.py b/Mailman/Handlers/Cleanse.py index 678f6b56..c1b500e5 100644 --- a/Mailman/Handlers/Cleanse.py +++ b/Mailman/Handlers/Cleanse.py @@ -21,6 +21,7 @@ import re from email.Utils import formataddr, getaddresses, parseaddr +from Mailman import mm_cfg from Mailman.Utils import unique_message_id from Mailman.Logging.Syslog import syslog from Mailman.Handlers.CookHeaders import uheader @@ -40,7 +41,7 @@ def process(mlist, msg, msgdata): del msg['urgent'] # Do we change the from so the list takes ownership of the email # This really belongs in CookHeaders. - if mlist.author_is_list: + if mm_cfg.ALLOW_AUTHOR_IS_LIST and mlist.author_is_list: realname, email = parseaddr(msg['from']) replies = getaddresses(msg.get('reply-to', '')) reply_addrs = [x[1].lower() for x in replies] diff --git a/Mailman/Handlers/CleanseDKIM.py b/Mailman/Handlers/CleanseDKIM.py index 3a157890..c492a096 100644 --- a/Mailman/Handlers/CleanseDKIM.py +++ b/Mailman/Handlers/CleanseDKIM.py @@ -31,7 +31,9 @@ from Mailman import mm_cfg def process(mlist, msg, msgdata): if not mm_cfg.REMOVE_DKIM_HEADERS: return - if mm_cfg.REMOVE_DKIM_HEADERS == 1 and not mlist.author_is_list: + if (mm_cfg.ALLOW_AUTHOR_IS_LIST and + mm_cfg.REMOVE_DKIM_HEADERS == 1 and + not mlist.author_is_list): return del msg['domainkey-signature'] del msg['dkim-signature'] diff --git a/Mailman/Handlers/CookHeaders.py b/Mailman/Handlers/CookHeaders.py index 7455dcc6..71534c11 100755 --- a/Mailman/Handlers/CookHeaders.py +++ b/Mailman/Handlers/CookHeaders.py @@ -160,7 +160,8 @@ def process(mlist, msg, msgdata): # is already in From and Reply-To in this case and similarly for # an 'author is list' list. if mlist.personalize == 2 and mlist.reply_goes_to_list <> 1 \ - and not mlist.anonymous_list and not mlist.author_is_list: + and not mlist.anonymous_list and not (mlist.author_is_list and + mm_cfg.ALLOW_AUTHOR_IS_LIST): # Watch out for existing Cc headers, merge, and remove dups. Note # that RFC 2822 says only zero or one Cc header is allowed. new = [] @@ -14,7 +14,8 @@ Here is a history of user visible changes to Mailman. compatability with DMARC and or ADSP. There is a new mm_cfg.py setting DEFAULT_AUTHOR_IS_LIST to control the default for new lists, and the existing REMOVE_DKIM_HEADERS setting has been extended to allow removing - those headers only for author_is_list = Yes lists. + those headers only for author_is_list = Yes lists. This feature must be + enabled by setting ALLOW_AUTHOR_IS_LIST to Yes in mm_cfg.py. - There is a new DISPLAY_HELD_SUMMARY_SORT_BUTTONS setting which if set to Yes in mm_cfg.py will display a set of radio buttons in the admindb |