From 03261e91d9d5f4e0cba27c7cc87a05df09b4b9fe Mon Sep 17 00:00:00 2001 From: bwarsaw Date: Wed, 19 Dec 2001 06:15:11 +0000 Subject: 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 -> , 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. --- Mailman/Bouncer.py | 7 +++++-- 1 file 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 -- cgit v1.3.1