diff options
-rw-r--r-- | Mailman/Defaults.py.in | 1 | ||||
-rw-r--r-- | Mailman/Gui/NonDigest.py | 11 | ||||
-rw-r--r-- | Mailman/Handlers/CalcRecips.py | 6 | ||||
-rw-r--r-- | Mailman/Version.py | 2 | ||||
-rw-r--r-- | Mailman/versions.py | 2 | ||||
-rw-r--r-- | NEWS | 7 |
6 files changed, 28 insertions, 1 deletions
diff --git a/Mailman/Defaults.py.in b/Mailman/Defaults.py.in index 9aebaea2..fb3f4f39 100644 --- a/Mailman/Defaults.py.in +++ b/Mailman/Defaults.py.in @@ -1027,6 +1027,7 @@ DEFAULT_UMBRELLA_MEMBER_ADMIN_SUFFIX = "-owner" # Exclude/include (sibling) lists for non-digest delivery. DEFAULT_REGULAR_EXCLUDE_LISTS = [] DEFAULT_REGULAR_INCLUDE_LISTS = [] +DEFAULT_REGULAR_EXCLUDE_IGNORE = True ALLOW_CROSS_DOMAIN_SIBLING = False # This variable controls whether monthly password reminders are sent. diff --git a/Mailman/Gui/NonDigest.py b/Mailman/Gui/NonDigest.py index 9af4a2be..411f5d4f 100644 --- a/Mailman/Gui/NonDigest.py +++ b/Mailman/Gui/NonDigest.py @@ -159,6 +159,17 @@ and footers: Note also that the site administrator may prohibit cross domain siblings.""")), + ('regular_exclude_ignore', mm_cfg.Toggle, (_('No'), _('Yes')), 0, + _("""Ignore regular_exlude_lists of which the poster is not a + member."""), + _("""If a post is addressed to this list and to one or more of + the exclude lists, regular members of those lists will not be + sent the post from this list, but if the poster is not a member + of an excluded list, the post may not be accepted by that list + which leaves the members of that list with no copy of the post. + Setting this to Yes ignores any of the exclude lists of which the + poster is not a member.""")), + ('regular_include_lists', mm_cfg.EmailList, (3, WIDTH), 0, _("""Other mailing lists on this site whose members are included in the regular (non-digest) delivery if those diff --git a/Mailman/Handlers/CalcRecips.py b/Mailman/Handlers/CalcRecips.py index db10c432..39fe0671 100644 --- a/Mailman/Handlers/CalcRecips.py +++ b/Mailman/Handlers/CalcRecips.py @@ -179,6 +179,12 @@ def do_exclude(mlist, msg, msgdata, recips): syslog('error', 'Exclude list %s is not in the same domain.', listname) continue + if mlist.regular_exclude_ignore: + for sender in msg.get_senders(): + if slist.isMember(sender): + break + else: + continue srecips = set([slist.getMemberCPAddress(m) for m in slist.getRegularMemberKeys() if slist.getDeliveryStatus(m) == ENABLED]) diff --git a/Mailman/Version.py b/Mailman/Version.py index 54d11484..981cabdc 100644 --- a/Mailman/Version.py +++ b/Mailman/Version.py @@ -37,7 +37,7 @@ HEX_VERSION = ((MAJOR_REV << 24) | (MINOR_REV << 16) | (MICRO_REV << 8) | (REL_LEVEL << 4) | (REL_SERIAL << 0)) # config.pck schema version number -DATA_FILE_VERSION = 99 +DATA_FILE_VERSION = 100 # qfile/*.db schema version number QFILE_SCHEMA_VERSION = 3 diff --git a/Mailman/versions.py b/Mailman/versions.py index 8de192cd..84943efc 100644 --- a/Mailman/versions.py +++ b/Mailman/versions.py @@ -416,6 +416,8 @@ def NewVars(l): mm_cfg.DEFAULT_REGULAR_EXCLUDE_LISTS) add_only_if_missing('regular_include_lists', mm_cfg.DEFAULT_REGULAR_INCLUDE_LISTS) + add_only_if_missing('regular_exclude_ignore', + mm_cfg.DEFAULT_REGULAR_EXCLUDE_IGNORE) @@ -22,6 +22,13 @@ Here is a history of user visible changes to Mailman. New Features + - There is a new list attribute regular_exclude_ignore set from mm_cfg.py + DEFAULT_REGULAR_EXCLUDE_IGNORE. This defaults to True even though the + prior behavior is equivalent to False. A True setting will ignore an + exclude list if the poster is not a member of that list. The False + setting can result in list members not receiving posts if the nonmember + post is not accepted by the exclude list. Backported from 2.2 branch. + - Eliminated the list cache from the qrunners. Indirect self-references caused lists to never be dropped from the cache which in turn caused the qrunners to grow very large in installations with many lists or |