summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbwarsaw2001-12-19 06:15:11 +0000
committerbwarsaw2001-12-19 06:15:11 +0000
commit03261e91d9d5f4e0cba27c7cc87a05df09b4b9fe (patch)
tree7ffdc02a268548a28c026417f7cd57893a83f7d3
parent22e43039ab1431ec588fcf12a533d7764553ed0f (diff)
downloadmailman-03261e91d9d5f4e0cba27c7cc87a05df09b4b9fe.tar.gz
mailman-03261e91d9d5f4e0cba27c7cc87a05df09b4b9fe.tar.zst
mailman-03261e91d9d5f4e0cba27c7cc87a05df09b4b9fe.zip
First step on the bounce processer sanity road. These changes fix
Mailman to keep track of why (and when) delivery is disabled. New list attribute delivery_status and new MemberAdaptor interface methods are added. Delivery status has the following states: ENABLED, BYUSER (disabled by user selection), BYADMIN (disabled by admin selection), BYBOUNCE (disabled by excessive bouncing), UNKNOWN (legacy disable). We no longer use the DisableDelivery user option. Also, for status changes from <anything> -> <anything-but-ENABLED>, we record the time.time(). This information gets thrown away when the delivery is re-enabled. Specific changes here: InitVars(): Add delivery_status attribute for new lists. DisableBouncingAddress(): Test getDeliveryStatus() against ENABLED to see if the address is already disabled or not. Also, when disabling, use the BYBOUNCE status.
-rw-r--r--Mailman/Bouncer.py7
1 files changed, 5 insertions, 2 deletions
diff --git a/Mailman/Bouncer.py b/Mailman/Bouncer.py
index 9f7202af5..b9fa7a37d 100644
--- a/Mailman/Bouncer.py
+++ b/Mailman/Bouncer.py
@@ -32,6 +32,7 @@ from Mailman import mm_cfg
from Mailman import Errors
from Mailman import Utils
from Mailman import Message
+from Mailman import MemberAdaptor
from Mailman.Logging.Syslog import syslog
from Mailman.i18n import _
@@ -59,6 +60,8 @@ class Bouncer:
self.automatic_bounce_action = mm_cfg.DEFAULT_AUTOMATIC_BOUNCE_ACTION
self.max_posts_between_bounces = \
mm_cfg.DEFAULT_MAX_POSTS_BETWEEN_BOUNCES
+ # New style delivery status
+ self.delivery_status = {}
def ClearBounceInfo(self, member):
member = member.lower()
@@ -228,13 +231,13 @@ Bad admin recipient: %s''', self.internal_name(), addr)
self.real_name, addr, reason)
return reason, 1
try:
- if self.getMemberOption(addr, mm_cfg.DisableDelivery):
+ if self.getDeliveryStatus(addr) <> MemberAdaptor.ENABLED:
# No need to send out notification if they're already disabled.
syslog('bounce', '%s: already disabled %s',
self.real_name, addr)
return 1, 0
else:
- self.setMemberOption(addr, mm_cfg.DisableDelivery, 1)
+ self.setDeliveryStatus(addr, MemberAdaptor.BYBOUNCE)
syslog('bounce', '%s: disabled %s', self.real_name, addr)
self.Save()
return 1, 1