88 lines
3.9 KiB
Text
88 lines
3.9 KiB
Text
Variable Envelope Return Paths
|
|
D. J. Bernstein, djb@pobox.com
|
|
19970201
|
|
|
|
|
|
1. Introduction
|
|
|
|
The fundamental problem in managing a large mailing list is matching
|
|
bounce messages to subscription addresses.
|
|
|
|
Often a bounce message refers to a failing address that does not
|
|
appear on the mailing list. One of the mailing list subscribers is
|
|
forwarding messages to that address. Which subscriber? As the list
|
|
grows, this question becomes more and more difficult to answer.
|
|
|
|
Sometimes a bounce message doesn't identify the address that failed.
|
|
On occasion it doesn't even include a copy of the original message.
|
|
See RFC 1211 for an extensive collection of horror stories.
|
|
|
|
In theory, one could solve this problem with the DSN option and DSN
|
|
format described in RFC 1891, RFC 1892, and RFC 1894. Unfortunately,
|
|
the DSN option is useless unless it is supported by every
|
|
intermediate MTA. The complexity of RFC 1891 means that it will be
|
|
many years, perhaps infinitely many, before DSNs are universally
|
|
supported. Furthermore, the complexity of RFC 1894 means that parsing
|
|
the subscriber address is difficult even on the occasions that the
|
|
address is available.
|
|
|
|
Variable envelope return paths (VERPs) completely eliminate this
|
|
problem _right now_. They automatically and reliably identify the
|
|
subscription address relevant to each bounce message. They provide
|
|
the address in a form that is trivial for automated bounce handlers
|
|
to parse. They require support from the local mailer, but they do not
|
|
require support from any other hosts.
|
|
|
|
|
|
2. Variable envelope return paths
|
|
|
|
Here is how VERPs work: each recipient of the message sees a
|
|
different envelope sender address. When a message to the
|
|
djb-sos@silverton.berkeley.edu mailing list is sent to
|
|
God@heaven.af.mil, for example, it has the following envelope sender:
|
|
|
|
djb-sos-owner-God=heaven.af.mil@silverton.berkeley.edu
|
|
|
|
If the message bounces, the bounce message will be sent back to
|
|
djb-sos-owner-God=heaven.af.mil@silverton.berkeley.edu.
|
|
|
|
If God is forwarding His mail, the bounce message will still go to
|
|
djb-sos-owner-God=heaven.af.mil@silverton.berkeley.edu. No matter how
|
|
uninformative the bounce message is, it will display God's
|
|
subscription address in its envelope.
|
|
|
|
Another benefit of VERPs is that God Himself can see what address He
|
|
used to subscribe.
|
|
|
|
Making VERPs work requires two pieces of local software support.
|
|
First: it must be easy to modify the outgoing sender address
|
|
separately for each envelope recipient. For example, with one mailer,
|
|
qmail, a user can simply touch ~/.qmail-list-owner and
|
|
~/.qmail-list-owner-default to apply VERPs to user-list.
|
|
|
|
Second, and more important: it must be easy to identify a collection
|
|
of addresses, such as djb-sos-owner-*, and send all mail for those
|
|
addresses to one place, while preserving the * information. Under
|
|
qmail, all user-list-owner-* mail will be sent to the user once he
|
|
touches ~/.qmail-list-owner-default. Sending the mail through an
|
|
automated bounce-handling program is just as easy.
|
|
|
|
With older mailers, applying VERPs would require setting up a new
|
|
user-list-owner-recipient alias for each new recipient. This
|
|
inconvenience has prevented VERPs from being widely exploited, even
|
|
though the idea is not new.
|
|
|
|
|
|
3. Per-message VERPs
|
|
|
|
VERPs are not restricted to distinguishing mailing list subscribers;
|
|
they can also be used to distinguish messages.
|
|
|
|
For example, a user can send one message with an envelope sender
|
|
address of user-dsn-1, the next message with user-dsn-2, and so on.
|
|
As long as the local mailer gives all user-dsn-* back to that user,
|
|
he can reliably match up incoming bounces with outgoing messages.
|
|
|
|
Per-message VERPs can be combined with per-recipient VERPs. Every
|
|
application of RFC 1891's ORCPT and ENVID can be handled with
|
|
VERPs---easily, reliably, and right now.
|