| < Free Open Study > |
|
qmail's bounce messages are in a format called QSBMF (qmail-send bounce message format), which is documented on the Web (http://cr.yp.to/proto/qsbmf.txt). RFCs 1892, 1893, and 1894 define another bounce message format called Delivery Status Notification (DSN). The status codes defined in RFC 1893 are also used by QSBMF and other non-DSN bounce message formats. Some MTAs still use their own ad-hoc bounce message formats.
QSBMF messages are designed to be simultaneously human-friendly and easily parsed by automated bounce handlers. Listing E-1 shows a typical bounce message.
Listing E-1: A QSMBF bounce message
From: MAILER-DAEMON@dolphin.example.com To: dave@dolphin.example.com Subject: failure notice Hi. This is the qmail-send program at dolphin.example.com. I'm afraid I wasn't able to deliver your message to the following addresses. This is a permanent error; I've given up. Sorry it didn't work out. <nosuchuser@dolphin.example.com>: Sorry, no mailbox here by that name. (#5.1.1) -- Below this line is a copy of the message. Return-Path: <dave@dolphin.example.com> Received: (qmail 3458 invoked by uid 500); 26 Aug 2001 21:56:48 -0000 Date: 26 Aug 2001 21:56:48 -0000 Message-ID: <20010826215648.3457.qmail@dolphin.example.com> From: dave@dolphin.example.com to: nosuchuser@dolphin.example.com
The body of a QSBMF message consists of four parts: an introductory paragraph, a series of one or more recipient paragraphs, a break paragraph, and a copy of the original message. Blank lines separate the paragraphs.
In this case, the introductory paragraph is:
Hi. This is the qmail-send program at dolphin.example.com. I'm afraid I wasn't able to deliver your message to the following addresses. This is a permanent error; I've given up. Sorry it didn't work out.
The initial string, Hi. This is the..., identifies the message as QSBMF. This paragraph is intended for human readers and identifies the source of the message.
The recipient paragraph in this example is this:
<nosuchuser@dolphin.example.com>: Sorry, no mailbox here by that name. (#5.1.1)
The first line identifies the problematic recipient address, and the second line is a description of the problem. The (#5.1.1) is an RFC 1893 status code- these will be explained in the next section.
The break paragraph starts with a - character. In this example, it's this line:
-- Below this line is a copy of the message.
The remainder of the bounce message is the copy of the original message.
An interesting special case is that of the double bounce: the bounce message sent to the postmaster when a bounce message is undeliverable. With double bounces, the message included is the original bounce message-a QSBMF bounce enclosed in another QSBMF bounce.
These are three-digit codes displayed as C.S.D, where C is the class sub-code, S is the subject sub-code, and D is the detail sub-code.
The class sub-code is one of three values: 2 (success), 4 (temporary error), or 5 (permanent error). They correlate with the initial digits of SMTP status codes.
The subject sub-code has seven possible values, as listed in Table E-1.
CODE | NAME | MEANING |
---|---|---|
x.0.x | Other or Undefined Status | Problem unknown or undefined |
x.1.x | Address Status | Problem with sender or recipient address syntax or validity |
x.2.x | Mailbox Status | Problem with the recipient's mailbox |
x.3.x | Mail System Status | Problem with the recipient host's mail system |
x.4.x | Network and Routing Status | Problem with network or routing |
x.5.x | Mail Delivery Protocol Status | Problem with mail delivery |
x.6.x | Message Content or Media Status | Problem with message content or format |
x.7.x | Security or Policy Status | Problem with security or policy |
The detail sub-codes vary with subject sub-code. The only valid detail sub-code for subject sub-code 0 is 0: If an MTA doesn't know what subject sub-code applies, it doesn't make sense to categorize it at a lower level. The detail sub-codes for the other subject sub-codes are listed in Tables E-2 through E-8.
CODE | MEANING |
---|---|
x.1.0 | Unknown problem with an address specified in this message |
x.1.1 | Nonexistent recipient (part left of @) |
x.1.2 | Invalid destination host (part right of @) |
x.1.3 | Bad destination address syntax |
x.1.4 | Ambiguous destination |
x.1.5 | Valid destination |
x.1.6 | Recipient has moved without a forwarding address |
x.1.7 | Bad sender's address syntax |
x.1.8 | Bad sender's host |
CODE | MEANING |
---|---|
x.2.0 | Unknown problem with an existing mailbox |
x.2.1 | Mailbox disabled |
x.2.2 | Mailbox full |
x.2.3 | Message too big |
x.2.4 | Problem sending to mailing list |
CODE | MEANING |
---|---|
x.3.0 | Unknown/other problem with destination host's mail system |
x.3.1 | Mail system full |
x.3.2 | Not accepting messages |
x.3.3 | Mail system doesn't support requested feature |
x.3.4 | Message too big |
x.3.5 | Mail system misconfigured |
CODE | MEANING |
---|---|
x.4.0 | Unknown/other network problem |
x.4.1 | No answer from host |
x.4.2 | Bad connection |
x.4.3 | Directory service failure |
x.4.4 | Unable to route |
x.4.5 | Mail system congestion |
x.4.6 | Routing loop detected |
x.4.7 | Delivery time expired |
CODE | MEANING |
---|---|
x.5.0 | Unknown/other problem delivering to next hop |
x.5.1 | Invalid command |
x.5.2 | Syntax error |
x.5.3 | Too many recipients |
x.5.4 | Invalid command arguments |
x.5.5 | Wrong protocol version |
CODE | MEANING |
---|---|
x.6.0 | Unknown/other problem with message content |
x.6.1 | Media (format) not supported |
x.6.2 | Conversion necessary but prohibited |
x.6.3 | Conversion necessary but not supported |
x.6.4 | Message converted but with data loss |
x.6.5 | Conversion failed |
CODE | MEANING |
---|---|
x.7.0 | Unknown/other security problem |
x.7.1 | Delivery not authorized, message refused |
x.7.2 | Delivery to mailing list prohibited |
x.7.3 | Security conversion required but not possible |
x.7.4 | Security features not supported |
x.7.5 | Cryptographic failure |
x.7.6 | Cryptographic algorithm not supported |
x.7.7 | Message integrity failure |
| < Free Open Study > |
|