LSTSRV-L Archives

LISTSERV Site Administrators' Forum

LSTSRV-L

Options: Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Topic: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Eric Thomas <[log in to unmask]>
Sat, 5 Mar 1994 00:32:54 +0100
text/plain (78 lines)
If you format your delivery errors like LMail, PMDF, MX and a few others
do, signoff will be automatic.
 
-------------------------------------------------------------------------
Here is a brief description of the LMail error message format. I will use
an example to save a thousand words:
 
-------------------------------------------------------------------------
Date:     Fri, 8 Jan 1993 20:04:50 +0100
Reply-To: [log in to unmask]
From:     RFC822 mailer (LMail release 1.1a/1.7e) <[log in to unmask]>
Subject:  Undelivered mail
To:       [log in to unmask]
cc:       [log in to unmask]
X-Report-Type: Nondelivery; boundary="> Error description:"
 
An error was detected while processing the enclosed message. A list of
the affected recipients follows. This list is in a special format that
allows software like LISTSERV to automatically take action on incorrect
addresses; you can safely ignore the numeric codes.
 
--> Error description:
Error-For:  [log in to unmask]
Alias:      [log in to unmask]
Error-Code: 3
Error-Text: No such local user.
 
Error-For:  [log in to unmask]
Alias:      [log in to unmask]
Error-Code: 3
Error-Text: No such local user.
 
Error-End:  Two errors reported.
 
------------------------- Rejected message (5 lines) --------------------------
Date:        Fri, 8 Jan 1993 20:04:47 +0100
From:        Eric Thomas <[log in to unmask]>
To:          [log in to unmask], [log in to unmask]
 
klºdfg
-------------------------------------------------------------------------
 
The only important line in the header is "X-Report-Type:", which says the
error report is  in the special format  used by LMail. Then  you have the
blurb of your choice, followed by the boundary defined by the report type
field, a series of individual  error reports, and an "Error-End:" keyword
(whose value is immaterial), and then whatever you want. The error report
tags must  be in  the order  shown, except "Alias:"  is optional.  I will
include a list of codes and more can  be added. The text is for the human
reader, only  the code is  parsed by programs.  These fields fold  in the
same way as  RFC822 header fields if they  don't fit on a line.  If it is
more convenient to issue a separate  mail message for each error, this is
not a problem; the format just lets  you batch several errors in a single
message if desired.
 
The codes: 0 is what you use  for all the weird errors you can't classify
too well, LISTSERV takes no action  on these codes by definition. 1 means
"don't know that/don't  know how to get there" (as  opposed to "can't get
there right now"), you'd use that if  a BITNET or DECNET node is unknown,
or if a domain is unknown  (like .ZZ). 2 means "configuration error", you
have detected an error in your tables which prevents you from delivering,
but that doesn't mean the address is bad. 3 is "no such local user". 4 is
"not allowed  to mail to  this user". The difference  between 3 and  4 is
that a 3 indicates there is no way to successfully send mail to the user,
whereas 4  indicates the user cannot  receive mail from the  address your
message came from. LMail uses code 4 when a user directs it to reject all
mail coming from mailing lists, but  to let private mail through. 5 means
"mailbox full", "quota exceeded", and so on.
 
For now LISTSERV takes  action on 1, 3 and 4,  and forwards anything else
to the list owner. But it is  important to assign new codes to categories
which would  have meaning to  a human list owner,  as I expect  people to
start  writing procedures  to  pre-process the  error  messages in  their
mailbox. Something like  "cannot deliver for N days,  will keep retrying"
is meaningful to a list owner and may help him decide what to do with the
subscription,  so it  should get  another  code. Obscure  errors such  as
"invalid device name" can use the catch-all code, 0.

ATOM RSS1 RSS2