Mark Sapiro pushed to branch master at GNU Mailman / Mailman Core


Commits:
66e21c03 by Mark Sapiro at 2023-02-03T19:34:35+00:00
Reset bounce score when disabling delivery.

Fixes #1061

* Reset bounce3 score when disabling delivery.

- - - - -
37432e6b by Mark Sapiro at 2023-02-03T19:34:36+00:00
Merge branch 'bounce' into 'master'

Reset bounce score when disabling delivery.

Closes #1061

See merge request mailman/mailman!1097

Merged-by: Mark Sapiro <m...@msapiro.net>

Reviewed-by: 
- - - - -


5 changed files:

- src/mailman/docs/NEWS.rst
- src/mailman/model/bounce.py
- src/mailman/model/docs/bounce.rst
- src/mailman/model/tests/test_bounce.py
- src/mailman/runners/tests/test_bounce.py


Changes:

=====================================
src/mailman/docs/NEWS.rst
=====================================
@@ -28,6 +28,8 @@ Bugs fixed
   terminate and restarts them (Closes #898).
 * Setting Postfix transport_file_type: regex without setting something for
   postmap_command: no longer throws an exception.  (Closes #1058)
+* When bounce processing disables delivery for a user, the user's score is
+  reset so it will be zero if delivery is enabled.  (Closes #1061)
 
 .. _news-3.3.8:
 


=====================================
src/mailman/model/bounce.py
=====================================
@@ -234,6 +234,9 @@ class BounceProcessor:
                 send_probe(member, msg=msg, message_id=event.message_id)
                 action = 'sending probe'
             else:
+                # Bounce score is reset by sending a probe but needs to be
+                # reset here too.  See #1061.
+                member.bounce_score = 0
                 self._disable_delivery(mlist, member, event)
                 action = 'disabling delivery'
             log.info(


=====================================
src/mailman/model/docs/bounce.rst
=====================================
@@ -170,8 +170,9 @@ If the ``bounce_score`` reaches the Mailinglist's configured
     >>> event = processor.register(
     ...     mlist, 'b...@example.com', msg, BounceContext.normal)
     >>> processor.process_event(event)
+    >>> # Disabling delivery resets the score.
     >>> print(bart_member.bounce_score)
-    5
+    0
     >>> print(bart_member.preferences.delivery_status)
     DeliveryStatus.by_bounces
 


=====================================
src/mailman/model/tests/test_bounce.py
=====================================
@@ -202,9 +202,10 @@ Message-Id: <first>
         # Now, process the events and check that user is disabled.
         for event in events:
             self._processor.process_event(event)
-        # The first event scores 1 and disables delivery.  The second is
-        # not processed because delivery is already disabled.
-        self.assertEqual(member.bounce_score, 1)
+        # The first event scores 1 and disables delivery.  Disabling delivery
+        # resets the score. The second is not processed because delivery is
+        # already disabled.
+        self.assertEqual(member.bounce_score, 0)
         self.assertEqual(
             member.preferences.delivery_status, DeliveryStatus.by_bounces)
 
@@ -295,7 +296,8 @@ Message-Id: <first>
         self._process_pending_events()
         self.assertEqual(member.preferences.delivery_status,
                          DeliveryStatus.by_bounces)
-        self.assertEqual(member.bounce_score, 4)
+        # Disabling delivery resets the score.
+        self.assertEqual(member.bounce_score, 0)
 
         self._processor._send_warnings()
         self.assertEqual(member.last_warning_sent.day, now().day)


=====================================
src/mailman/runners/tests/test_bounce.py
=====================================
@@ -473,7 +473,8 @@ Message-Id: <first>
         anne.bounce_score = 2
         anne.last_bounce_received = now() - timedelta(days=2)
         self._runner.run()
-        self.assertEqual(anne.bounce_score, 3)
+        # Score is reset when delovery is disabled.
+        self.assertEqual(anne.bounce_score, 0)
         self.assertEqual(
             anne.preferences.delivery_status, DeliveryStatus.by_bounces)
         # There should also be a pending notification for the list



View it on GitLab: 
https://gitlab.com/mailman/mailman/-/compare/726c23c330ea775b268c3385a5f38e17615c86c6...37432e6b9a6f05b34145e0ab23a019f6a1f80011

-- 
View it on GitLab: 
https://gitlab.com/mailman/mailman/-/compare/726c23c330ea775b268c3385a5f38e17615c86c6...37432e6b9a6f05b34145e0ab23a019f6a1f80011
You're receiving this email because of your account on gitlab.com.


_______________________________________________
Mailman-checkins mailing list -- mailman-checkins@python.org
To unsubscribe send an email to mailman-checkins-le...@python.org
https://mail.python.org/mailman3/lists/mailman-checkins.python.org/
Member address: arch...@jab.org

Reply via email to