Timeouts use the following syntax: "Timeout.suboption". Most of these control SMTP operations. The recognized suboptions, their default values, and their minimum values are:
aconnect - The overall timeout waiting for all connection for a single delivery attempt to succeed. If 0, no overall limit is applied. This can be used to restrict the total amount of time trying to connect to a long list of host that could accept an e-mail for the recipient. This timeout does not apply to FallbackMXhost, e.g., if the time is exhausted, the FallbackMXhost is tried next. [0, unspecified]
auth - The timeout for a reply in an SMTP AUTH dialogue [10m, unspecified].
command - In server SMTP, the time to wait for another command. [1h, 5m].
connect - The time to wait for an SMTP connection to open. If zero, uses the kernel default. In no case can this option extend the timeout longer than the kernel provides, but it can shorten it. This is to get around kernels that provide an absurdly long connection timeout. [0, unspecified]
control - Timeout for a complete control socket transaction to complete [2m, none].
datablock - The wait for reading a data block (that is, the body of the message). This should be long because it also applies to programs piping input to Sendmail which have no guarantee of promptness. [1h, 3m]
datafinal - The wait for a reply from the dot terminating a message. If this is shorter than the time actually needed for the receiver to deliver the message, duplicates will be generated. This is discussed in RFC 1047. [1h, 10m]
datainit - The wait for a reply from a DATA command [5m, 2m].
fileopen - The timeout for opening .forward and :include: files [60s, none].
helo - The wait for a reply from a HELO or EHLO command. This may require a host name lookup, so five minutes is probably a reasonable minimum. [5m, unspecified]
hoststatus - How long status information about a host (host down) will be cached before it is considered stale [30m, unspecified].
iconnect - The same as connect, except it applies only to the initial attempt to connect to a host for a given message. The concept is that this should be very short (a few seconds); hosts that are well connected and responsive will thus be serviced immediately. Hosts that are slow will not hold up other deliveries in the initial delivery attempt. [0, unspecified]
ident - The timeout waiting for a reply to an IDENT query [5s, unspecified].
initial - The wait for the initial 220 greeting message [5m, 5m].
lhlo - The wait for a reply to an LMTP LHLO command [2m, unspecified].
mail - The wait for a reply from a MAIL command [10m, 5m].
misc - The wait for a reply from miscellaneous (but short) commands such as NOOP (no-operation) and VERB (go into verbose mode). [2m, unspecified].
quit - The wait for a reply from a QUIT command [2m, unspecified].
rcpt - The wait for a reply from a RCPT command . This should be long because it could be pointing at a list that takes a long time to expand. [1h, 5m]
rset - The wait for a reply from a RSET command [5m, unspecified].
starttls - The timeout for a reply to an SMTP STARTTLS command and the TLS handshake [1h, unspecified].
resolver.retrans - The resolver's retransmission time interval (in seconds). Sets both Timeout.resolver.retrans.first and Timeout.resolver.retrans.normal. [varies]
resolver.retrans.first - The resolver's retransmission time interval (in seconds) for the first attempt to deliver a message. [varies]
resolver.retrans.normal - The resolver's retransmission time interval (in seconds) for all resolver lookups except the first delivery attempt. [varies]
resolver.retry - The number of times to retransmit a resolver query. Sets the timeout value for Timeout.resolver.retry.first and Timeout.resolver.retry.normal. [varies]
resolver.retry.first - The number of times to retransmit a resolver query for the first attempt to deliver a message [varies].
resolver.retry.normal - The number of times to retransmit a resolver query for all resolver lookups except the first delivery attempt [varies].
Message timeouts
After sitting in the queue for a few days, an undeliverable message will time out. This is to insure that at least the sender is aware of the inability to send a message. The timeout is typically set to five days. It is sometimes considered convenient to also send a warning message if the message is in the queue longer than a few hours (assuming you normally have good connectivity; if your messages normally took several hours to send you wouldn't want to do this because it wouldn't be an unusual event). These timeouts are set using the Timeout.queuereturn and Timeout.queuewarn options in the configuration file.
If the message is submitted using the NOTIFY SMTP extension, warning messages will only be sent if NOTIFY=DELAY is specified. The queuereturn and queuewarn timeouts can be further qualified with a tag based on the Precedence: field in the message; they must be one of "urgent" (indicating a positive non-zero precedence) "normal" (indicating a zero precedence), or "non-urgent" (indicating negative precedence). For example, setting "Timeout.queuewarn.urgent=1h" sets the warning timeout for urgent messages only to one hour.
The default if no precedence is indicated is to set the timeout for all precedence's. The value "now" can be used for -O Timeout.queuereturn to return entries immediately during a queue run, e.g., to bounce messages independent of their time in the queue.
Since these options are global, and since you cannot know how long another host outside your domain will be down, a five day timeout is recommended. This allows a recipient to fix the problem even if it occurs at the beginning of a long weekend.
The Timeout.queuewarn value can be piggybacked on the Timeout.queuereturn option by indicating a time after which a warning message should be sent; the two timeouts are separated by a slash. For example, the line OT5d/4h causes e-mail to fail after five days, but a warning message will be sent after four hours. This should be large enough that message delivery will have been tried several times before the message is returned to the sender as undeliverable.
P - Precedence Definitions
Values for the "Precedence:" field may be defined using the P control line. The syntax of this field is:
Pname=num
When the name is found in a "Precedence:" field, the message class is set to num. Higher numbers mean higher precedence. Numbers less than zero have the special property that if an error occurs during processing the body of the message will not be returned; this is expected to be used for "bulk" mail such as through mailing lists. The default precedence is zero. For example, our list of precedence's is:
Pfirst-class=0
Pspecial-delivery=100
Plist=-30
Pbulk=-60
Pjunk=-100
People writing mailing list exploders are encouraged to use "Precedence: list". Older versions of sendmail (which discarded all error returns for negative precedence's) didn't recognize this name, giving it a default precedence of zero. This allows list maintainers to see error returns on both old and new versions of sendmail.
Next Section: Macros - 13 of 32