[Mailman-Developers] thoughts on bounce processing

James Ralston qralston+ml.mailman-developers at andrew.cmu.edu
Thu May 11 19:24:36 CEST 2006


Per Barry's request, I thought I'd describe some of the issues our
sites has encountered with Mailman lists and bounce messages.

At our site, we currently 15,775 subscribers (8,296 unique) across 549
lists.  While a few of the lists are huge (hundreds or thousands of
subscribers), the median list size is only 4 subscribers.

The primary issue we are encountering is that the vast majority of our
lists (even the ones with hundreds of subscribers) are
announcement-type lists, not discussion-type lists.  The list owners
are using the lists to reach coworkers, specific customers, course
attendees, etc.  The list admins know exactly which addresses are on
their lists, because they've added them all themselves.

Situations like this happen all the time:

    1.  A VIP asks an administrative assistant to send out a message
        to a group of people: team members, specific customers, etc.

    2.  The AA sends the message to the appropriate Mailman list.
        Unbeknown to the AA, one of the addresses bounces.

    3.  The person whose address bounced doesn't get the message, and
        (e.g.) misses an important meeting, fails to provide some
        important information, etc.

    4.  The VIP comes down hard on the AA for failing to notify
        everyone.

    5.  The AA comes to us full a fire and brimstone, complaining the
        Mailman doesn't permit people to perform necessary business
        functions.

The issue is that people in this situation *want* to see the
individual bounces, and they want to see them *immediately*, because
the bounces contain important information that they might need to act
upon.  The closest they can get to that right now is to configure the
list so that a single bounce immediately removes the subscriber from
the list.  But this isn't always the correct thing to do.  (For
example, lots of people seem to have broken vacation programs that
respond to *everything*, and they continually get unsubscribed from
lists.)

The more I think about this, the more I think that silently discarding
bounces is an error.  While some bounces are irrelevant (e.g. vacation
messages), in the majority of cases, bounces are information that some
entity should act upon.  There should be two (and only two) options:

    1.  Mailman processes all bounces.
    2.  All bounces are forwarded to the list administrator(s).

I've attached my first attempt at implementing this behavior.  (I say
"first attempt" because I'd really like to get both the listname and
the address that bounced into the Subject header, but to do that
requires more complicated logic than what I've implemented so far.)

If list admins *really* want to (effectively) discard all bounces,
they can e.g. set bounce_info_stale_after to 1 and then set
bounce_score_threshold to something impossibly high (e.g. 500,000).

Thoughts?

James
-------------- next part --------------
--- mailman-2.1.8/Mailman/Gui/Bounce.py.bounce-processing	2005-08-26 21:40:15.000000000 -0400
+++ mailman-2.1.8/Mailman/Gui/Bounce.py	2006-05-04 11:19:32.000000000 -0400
@@ -77,9 +77,10 @@
             ('bounce_processing', mm_cfg.Toggle, (_('No'), _('Yes')), 0,
              _('Should Mailman perform automatic bounce processing?'),
              _("""By setting this value to <em>No</em>, you disable all
-             automatic bounce processing for this list, however bounce
-             messages will still be discarded so that the list administrator
-             isn't inundated with them.""")),
+             automatic bounce processing for this list.  If automatic bounce
+             processing is disabled, all bounces will be forwarded to the list
+             administrator(s), and all other bounce-related settings are
+             ignored.""")),
 
             ('bounce_score_threshold', mm_cfg.Number, 5, 0,
              _("""The maximum member bounce score before the member's
--- mailman-2.1.8/Mailman/Queue/BounceRunner.py.bounce-processing	2006-03-09 17:09:34.000000000 -0500
+++ mailman-2.1.8/Mailman/Queue/BounceRunner.py	2006-05-04 11:12:09.000000000 -0400
@@ -194,7 +194,21 @@
                          )
         # List isn't doing bounce processing?
         if not mlist.bounce_processing:
-            return
+            adminurl = mlist.GetScriptURL('admin', absolute=1) + '/bounce'
+            mlist.ForwardMessage(msg,
+                             text=_("""\
+The attached message was received as a bounce.  Since automatic bounce
+processing is disabled for this mailing list, the bounce is being sent
+to the list administrator(s).
+
+For more information see:
+%(adminurl)s
+
+"""),
+                             subject=_('Bounce notification'),
+                             tomoderators=0)
+            syslog('bounce', 'forwarding bounce, message-id: %s',
+                   msg.get('message-id', 'n/a'))
         # Try VERP detection first, since it's quick and easy
         addrs = verp_bounce(mlist, msg)
         if addrs:


More information about the Mailman-Developers mailing list