[Mailman-Developers] Missed Bounce Message

claw@kanga.nu claw@kanga.nu
Mon, 29 Nov 1999 17:30:13 -0800

On Mon, 29 Nov 1999 22:08:10 +0100 
Ricardo Kustner <ricardo@miss-janet.com> wrote:

> On Mon, Nov 22, 1999 at 10:24:23AM -0600, Ted Cabeen wrote:
>> Here's another missed bounce message.  Can't SMTP server writers
>> decide on a standard for bounces and just use it?  Arrgh.

> tell me about it... 

As there is no standard format for bounce messages, and even if
there were one we'd still be suffering with non-standard ones due to 
the great many legacy MTAs as well as the many sites with locally
customised bounce messages, another approach is needed.

The most commonly recommended solution is VERP.  The problem with
VERP is that it places a very high load on the local MTA as well as
any distribution management you may have set up (eg domain routing).
The approach I took back when I was writing my own mailing list
server was a middle ground with the intent of avoiding most of
VERP's bandwidth concerns while retaining many of its advantages:

  The list server emitted messages in bundles of 100 RCPT TOs in the
  normal manner except for every Nth message.

  For every N'th message (and this encluded digests), that message
was sent individually to every subscriber with a custom header field

The custom header field was ala:

  x-bounce-detect: ListMgr <listname> <subscriber_address> <count> <score>

Where 'count' was just a number that incremented every time N rolled
around.  It was used to detect how old this bounce was and if there
had been any other "bounce-sensitive" messages emitted since that
one was received.  The 'score' value was just a tracking value
indicating how close that subscriber was to being unsubscribed.

The intent was that the custom header could be found in the copy of
the original email encluded in the bounce message, and could be
easily analysed to find the name of the list, the original
subscriber's address (in case of the message being forwarded),
etc. I then just scanned bounce messages for the header, and kept
track of how often and rapidly each subscriber bounced messages, and 
if the rate exceeded a certain value, unsubscribing that member.

J C Lawrence                                 Home: claw@kanga.nu
----------(*)                              Other: coder@kanga.nu
--=| A man is as sane as he is dangerous to his environment |=--