diff options
| author | bwarsaw | 2001-12-19 06:15:11 +0000 |
|---|---|---|
| committer | bwarsaw | 2001-12-19 06:15:11 +0000 |
| commit | 03261e91d9d5f4e0cba27c7cc87a05df09b4b9fe (patch) | |
| tree | 7ffdc02a268548a28c026417f7cd57893a83f7d3 | |
| parent | 22e43039ab1431ec588fcf12a533d7764553ed0f (diff) | |
| download | mailman-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.py | 7 |
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 |
