> Does anybody know of any programs that handle bounces on a UNIX platform?
> | Brock Rozen | brozen @
com | http://www.webdreams.com/~brozen |
First of all let me mention that there is a mailing list for developers of
such beasts. To subscribe, send email to <Majordomo @
fi> with the
following command in the body of your email message:
Unfortunately, nothing much has happened on that list yet.
However, I've written such a perl script called 'bouncefilter'; I'm currently
using it for 14 mailing lists on two servers, and I'm very satisfied.
Unfortunately the current version will only work with my (heavily hacked)
version of Majordomo (which I cannot make publicly available due to
restrictions in the Majordomo license).
The good news is that today someone has e-mailed me and expressed interest
in helping me with making a public release of 'bouncefilter' for the official
Majordomo versions 1.94.*; at that stage it would be very little extra work
to include support for other mailing list managers. My situation is that I
have a very heavy workload, but if there is sufficient interest (and
willingness to help e.g. with alpha testing) I'd be willing to invest the
additional effort to make it work with whatever mailing list manager you're
using. If someone is interested, please drop me private e-mail, letting me
know what mailing list manager you're using and what kind of help you might
be able to offer.
A brief description of bouncefilter follows:
My 'bouncefilter' script receives all messages to owner-$Listname\@@myhost
and checks if they are delivery status notifications (DSNs). Those which
are not DSNs are forwarded to the list-owners. Those DSNs which conform to
RFC 1894 (which is a proposed internet standard for the format of DSNs)
are parsed and acted upon as follows: To those addresses which are marked
as "failed", bouncefilter sends a warning message which starts like this:
From: owner-$ListName\ @
Subject: Warning: It was not possible to send you e-mail!
This is just a warning message to let you know that we got an error message
for your e-mail address. This means that you did not receive one or more
items of mail from the $ListName list, and possibly other, more personal
e-mail messages did not reach you either.
The warning messages also contains a copy of the human-readable part of
the DSN. To each of these addresses, these warning messages are repeated on a
daily basis unless no "failed" DSN arrives from that address. If after five
days there are still "failed" DSNs from that address, the address is
automatically unsubscribed. Bouncefilter still sends daily warning messages
(until one of them does not bounce with a "failed" DSN) for 25 more days
which start like this:
From: owner-$ListName\ @
Subject: Warning: You're off the $ListName list now!
After we received error messages which indicated that it was not possible
to send e-mail to your address, your address was removed from the $ListName
list $Days. Unfortunately in such a situation it is normally not possible
to notify you of the problem, because e-mail will not reach you. What we do
in such a situation is that we try to send you a warning message like this
every day for a whole month until one of the messages gets through to you.
Since you read this, possibly the problem has gone away now, and you might
want to subscribe again to the $ListName list. You can do this by sending
in the body of an e-mail message To: <Majordomo\ @
Needless to say, the list-owners receive a daily e-mail message with a log
of what is going on. I've also modified majordomo so that this log also
contains single-line entries for SUBSCRIBEs, UNSUBSCRIBESs, etc.
There are three special cases of which I haven't explained yet how my
bouncefilter treats them:
a) The (unfortunately still very frequent) case of DSNs which don't
conform to RFC1894.
b) The address <example @
com> (which is subscribed to a list) forwards
to an invalid address <beispiel @
edu> which might generate error
messages for <beispiel @
edu> which don't mention the subscribed
address at all.
c) Someone subscribed a local exploder to my list but goofed so that
the DSNs go to my owner-$Listname alias instead of going to the
operator of the local exploder.
All of these are handled by a simple trick: Every 10 days or so, (the
frequency of this can be set from the configuration file) resend sends
one of the list's messages in a special way: Instead of sending the
message to the -outgoing alias with an envelope-from of
$whereami, the message is sent individually to each
subscriber with a special envelope-from of
where $1 and $2 are obtained as follows:
The processing of error bounces for these addresses relies on the feature
of sendmail that local delivery of messages addressed to an address of the
form $User+$Extra delivers to the mailbox or alias $User. Bouncefilter will
extract the information which is contained in the $Extra from the To: header.
(this is not the perfect solution, and in principle I'd know how to improve
it, but that would require me to hack the sendmail.cf and I don't have time
for that) All such bounces which are not recognized (by some simple
heuristics) as "delay notifications" are treated as failed DSNs, as above.
May blessings from the eternal God surprise and overtake you!
Norbert Bollow (Zuerich, Switzerland; http://pobox.com/~nb) <nb @
serving Christ Jesus; co-moderator of the CHURCHPLANTERS E-mail Conference.