aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Mailman/Defaults.py.in1
-rw-r--r--Mailman/Gui/NonDigest.py11
-rw-r--r--Mailman/Handlers/CalcRecips.py6
-rw-r--r--Mailman/Version.py2
-rw-r--r--Mailman/versions.py2
-rw-r--r--NEWS7
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)
diff --git a/NEWS b/NEWS
index 9813329d..103273da 100644
--- a/NEWS
+++ b/NEWS
@@ -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