Deliver By SMTP Service Extension
updates
- rfc-1894 — An Extensible Message Format for Delivery Status Notifications
Extracted elements (23)
A delta time (seconds remaining) is used instead of an absolute timestamp to avoid problems from clock differences between SMTP clients and servers; the server converts the delta to a local absolute deliver-by-time upon receipt.
The Deliver By extension is explicitly not intended as a priority mechanism; MTAs are free to assign whatever processing priority they wish, and DSNs triggered by Deliver By requests are not required to receive expedited processing.
Zero and negative by-time values are permitted for by-mode 'N' to preserve historical delivery timing information for the recipient, DSNs, or NDNs, even when the deadline has already passed.
MX hosts must ensure their advertised min-by-time does not substantially differ from what the destination host can handle or fail to account for relay latency; presenting an incompatible value forces relay failures.
Sites using Deliver By with MX-directed mail need to ensure all their MX hosts support the Deliver By extension, since a by-mode 'R' message cannot be relayed to a non-supporting server.
A message with by-mode 'R' MUST NOT be relayed to a SMTP server that does not support the Deliver By extension, and the receiving server MUST NOT have a fixed minimum by-time greater than the remaining delivery window.
If deliver-by-time has not passed and a message cannot be delivered for permanent reasons, the SMTP server or MTA MUST return a 'failed' DSN with appropriate status for each relevant recipient address.
If the by-time is valid but the server cannot honor it for a server-specific reason, the server SHOULD respond with 455 (transient) or 555 (permanent), plus an enhanced error code if supported.
SMTP clients supporting Deliver By SHOULD NOT attempt multiple MX hosts looking for one that supports Deliver By.
The BY esmtp-keyword MUST have an associated esmtp-value; the by-time alone is not sufficient.
The maximum length of the MAIL FROM command line is increased by 17 characters to accommodate the BY keyword and its value.
When by-mode is 'R' and the by-time is zero or negative, the SMTP server SHOULD return a permanent failure 501 reply code, and if enhanced error codes are supported, SHOULD also return 5.5.4.
When deliver-by-time is reached or passed and by-mode is 'N', delivery attempts should continue per site policy, and the server or MTA MUST issue a 'delayed' DSN with status 4.4.7 for each applicable recipient.
When relaying a by-mode 'N' message before deliver-by-time to a server that does not support Deliver By, the relaying client MUST issue a 'relayed' DSN for each applicable recipient.
When relaying a by-mode 'N' message to a non-Deliver-By server supporting DSN, if no NOTIFY parameter was supplied 'NOTIFY=FAILURE,DELAY' SHOULD be requested; if NOTIFY was specified and is not 'NEVER', 'DELAY' SHOULD be added if not already present.
When relaying a message to another SMTP server that supports Deliver By, a new BY parameter MUST be relayed with a by-time value indicating the remaining seconds until deliver-by-time.
When relaying a message with the by-trace 'T' field, a 'relayed' DSN SHOULD be generated by the relaying SMTP client for each recipient not using NOTIFY=NEVER.
A new DSN per-message field 'Deliver-by-date' is defined, with value of type date-time (RFC 822 as amended by RFC 1123), indicating the deliver-by-time as computed by the MTA or SMTP server generating the DSN.
The by-time field is a delta time (number of seconds) ranging from -999,999,999 to +999,999,999. Upon receipt, the server converts it to an absolute deliver-by-time by adding the by-time to the current local time.
The DELIVERBY SMTP service extension is advertised via the EHLO keyword 'DELIVERBY', with an optional numeric parameter (min-by-time) indicating the minimum by-time the server will accept when by-mode 'R' is specified.
Implementation of Deliver By enables tracing of the mail transport system. The by-trace 'T' field explicitly requests trace DSNs, and even without it, a crude trace can be generated by submitting messages with incrementally increasing by-time values (e.g., BY=0;R, BY=1;R, BY=2;R).
The BY esmtp-parameter has the form 'BY=<by-time>;<by-mode>[T]' where by-time is a signed decimal integer of up to 9 digits (seconds), by-mode is 'N' (Notify) or 'R' (Return), and the optional 'T' flag requests trace DSNs.
The Deliver-by-date DSN field has syntax: 'Deliver-by-date' ':' date-time, where date-time follows RFC 822 as amended by RFC 1123. It extends the per-message-fields of RFC 1894.