RFC2852 defines a way to ensure that a message is delivered or
bounced within a defined maximum window of time. This method is known
as the DELIVERBY SMTP extension and is used like the following (shown
in bold):
220 your.host.domain ESMTP Sendmail 8.12.7/8.12.7; Fri, 13 Dec 2002 10:09:06 -0600
(MDT)
EHLO another.host.domain
250-your.host.domain Hello another.host.domain [123.45.67.8], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-DELIVERBY note
250 HELP
MAIL From:<bob@another.host.domain> BY=600;R note
250 2.1.0 <bob@another.host.domain>... Sender ok
Here, your site tells the connecting site that it supports the
DELIVERBY SMTP extension by displaying the
250-DELIVERBY line. Then the other site recognizes
that support and says that it wants the message delivered within 600
seconds by including the BY=600;R as part of the
envelope sender MAIL FROM: command.
The ;R tells your server to not relay this message
to a site that does not support this extension. The only possibility,
other than ;R, is a ;N, which
means the message can be relayed to another site, regardless of
whether that other site supports this extension.
It is possible to run software or a configuration at your site in
such a way that mail cannot be immediately delivered. If you screen
all messages for viruses, for example, or if you queue all inbound
mail and deliver from the queue, you will likely not be able to
guarantee immediate delivery. In such instances, you are required to
advertise the size of that delay. You advertise such delays by adding
an argument to the SMTP DELIVERBY command:
250-DELIVERBY 300
Here, you advertise that you cannot guarantee delivery in less than
300 seconds (5 minutes), perhaps because you queue all inbound mail
and process the queue only once each five minutes. If a message
arrives with a requirement that it be delivered within 250 seconds:
MAIL From: <bob@another.host.domain> BY=250;R
it would bounce because your site said it could not honor such a
narrow window of delivery time.
The way your advertise your minimum delivery time is with the
DeliverByMin option, which is declared like this:
O DeliverByMin=mintime configuration file (V8.12 and later)
-ODeliverByMin=mintime command line (V8.12 and later)
define(`confDELIVER_BY_MIN',`mintime') mc configuration (V8.12 and later)
Here, mintime is of type
time. If mintime is
negative, the DELIVERBY extension is not offered. If
mintime is zero (the default), the
DELIVERBY SMTP extension is offered, but no minimum is stated. If
mintime is greater than zero, the
DELIVERBY SMTP extension is offered and your minimum is stated. Note
that no command-line switches are available to cause
sendmail to include a BY= in
the MAIL FROM: command.
Whenever mail is propagated with a BY=, the
receiving site will subtract the time it takes to deliver or relay
the message from the value specified by the BY=.
If the difference is negative, the message is bounced. If the
difference is positive, the new (smaller) value is passed to the next
site using a new BY= showing that new value. The
process continues until the message is delivered, or until a site in
the chain requires more than the BY= interval to
deliver or relay the message, at which point the message is bounced.
The DeliveryByMin option is not safe. If specified
from the command line, it can cause sendmail to
relinquish its special privileges.