![]() ![]() |
The value for each keyword is of type time (except for resolver.retry, which is numeric). The default, if a unit character is omitted, is minutes (except for resolver.retrans, which is seconds). For the queuewarn and queuereturn keywords, however, the defaults are hours and days, respectively. Note that some of the default values can seem overly long. This is intentional because some events can legitimately take a very long time. Consider, for example, a misconfigured DNS server. If you time out too soon, your performance will actually decrease because the timeouts will cause retransmits. For the V8.7 and later mc technique, each keyword is declared with its corresponding confTO_ expression. For example, the keyword initial is declared like this: define(`confTO_INITIAL',`5m') The particular confTO_ expression and its corresponding default value are listed with each keyword. For compatibility with old configuration files, if no keyword= is specified, timeouts for the mail, rcpt, datainit, datablock, datafinal, and command keywords are set to the indicated value: Or2h An example of the r option with keyword= pairs looks like this: Orrcpt=25m,datablock=3h With the V8.7 and later form of the Timeout option (where the earlier forms are all deprecated), individual timeouts can be listed more attractively like this: O Timeout.rcpt = 25m O Timeout.datablock = 3h For the previous two examples the timeout for acknowledgment of the RCPT TO: command (list a recipient) is 25 minutes and the timeout for acknowledgment of receipt of each line of the mail message is three hours. All the others that are not specified assume the default values. The Timeout option is not safe. If specified from the command line, it can cause sendmail to relinquish its special privileges. Timeout.aconnect (V8.12 and later)When sendmail attempts to establish a network connection to another host, it uses the connect(2) system call. If the connection is going to fail, either that system call will time out (after an amount of time that varies with the operating system), or the connection will be immediately rejected. If there are additional hosts in the list of hosts to connect to, sendmail will proceed to the next host in the list and try to connect again. If you wish to limit the total amount of time all these connection attempts will take, you can do so with this aconnect keyword to the Timeout option: O Timeout.aconnect=timeout Here, timeoutis of type time. If the time is specified as zero (the default), no timeout is imposed. Note that if the aconnect time limit is exceeded, delivery of the message will be deferred until the next queue run. Also note that if the aconnect time limit is exceeded, and if the FallbackMXhost (FallbackMXhost) option was defined, a connection will be made to the host defined by the FallbackMXhost option. Timeout.auth (V8.12 and later)When sendmail connects to another site, it greets that site with an EHLO command. In return, the other site replies with a list of SMTP extensions it supports: 250-host.domain Hello some.domain, pleased to meet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-8BITMIME 250-SIZE 250-DSN 250-ETRN 250-AUTH DIGEST-MD5 CRAM-MD5 The local sendmail notes that the other site supports AUTH, so the local sendmail uses the AUTH command. The local sendmail then waits for the other side to begin its negotiating. The amount of time the local sendmail waits can be limited with this auth keyword, the forms of which are as follows: O Timeout.auth=timeout The timeout is set to 10m (10 minutes) by default. There is no recommended timeout. There is no default for the mc technique. If authentication times out, the connection is closed. Timeout.command (V8.6 and later)When local sendmail is running as an SMTP server, it acknowledges any SMTP command sent to it by the other host and then waits for the next command. The amount of time the local sendmail waits for each command is defined with the command keyword, the forms of which are as follows: O Timeout.command=timeout The default for timeout is one hour, and the minimum is specified as five minutes. The mc technique uses the confTO_COMMAND for which no default is defined. If a command is not received in time, the local sendmail assumes that the connection has hung and shuts it down. Timeout.connect (V8.6 and later)When sendmail attempts to establish a network connection to another host, it uses the connect(2) system call. If the connection is going to fail, that system call will time out after an amount of time that varies with the operating system. With some buggy versions of Linux, for example, the timeout is 90 minutes, whereas for other versions of Unix it is typically one to five minutes, and for newer versions of Unix it is 75 seconds. When the amount of time to wait for a connection to fail is of concern, you can override the system value with the connect keyword to the Timeout option:[67]
O Timeout.connect=timeout If no timeout is specified, the default is to use the system-imposed timeout. No default is defined for the mc technique. Note that if the connect(2) call times out, delivery will be deferred until the next queue run. If you wish the connect(2) to be tried again (as you might for a dial-on-demand machine), you should investigate the DialDelay option (DialDelay). Timeout.control (V8.10 and later)Beginning with V8.10, sendmail can now be controlled in a limited fashion via a Unix domain socket (see ControlSocketName). When it first detects that a command is ready on that socket, it sets a timeout before reading the command. That prevents sendmail from hanging if the controlling command is slow. The timeout for the controlling socket is set like this: O Timeout.control=timeout The default if this option is omitted is 2 minutes. The default for the mc configuration technique is to leave this timeout undefined. Timeout.datablock (V8.6 and later)The local sendmail buffers a mail message and sends it to the receiving site one line at a time. The amount of time that the receiving sendmail waits for a read to complete is set with the datablock keyword, the forms of which are as follows:[68]
O Timeout.datablock=timeout The default timeout is one hour, and the specified minimum is three minutes. The mc technique uses confTO_DATABLOCK, which has no default. Timeout.datafinal (V8.6 and later)After the entire mail message has been transmitted, the local sendmail sends a lone dot to say that it is done, then waits for the receiving sendmail to acknowledge acceptance of that dot: 250 Mail accepted The amount of time that the local sendmail waits for acknowledgment that the mail message was received is set with the datafinal keyword, the forms of which are as follows: O Timeout.datafinal=timeout The default timeout is one hour, and the specified minimum is 10 minutes. The mc technique uses confTO_DATAFINAL, which has no default. If the value is shorter than the time actually needed for the receiving site to deliver the message, the local sendmail times out before seeing the "Mail accepted" message when, in fact, the mail was accepted. This can lead to the local sendmail wrongly attempting to deliver the message later for a second time. Timeout.datainit (V8.6 and later)After all the recipients have been specified, the local sendmail declares that it is ready to send the mail message itself. It issues the SMTP DATA command to the other site: DATA The local sendmail then waits for acknowledgment, which looks like this: 354 Enter mail, end with "." on a line by itself The amount of time that the local sendmail waits for acknowledgment of its DATA command is set with the datainit keyword, the forms of which are as follows: O Timeout.datainit=timeout The default timeout is five minutes, and the specified minimum is two minutes. The mc technique should use confTO_DATAINIT, which has no default. Timeout.fileopen (V8.7 and later)If a directory is remotely mounted and the server is down or not responding, an attempt to open a file in that directory can hang. Beginning with V8.7, the fileopen keyword sets the amount of time to wait for an open to complete.[69] The forms of this keyword are as follows:
O Timeout.fileopen=timeout The default is 60 seconds. The mc technique uses confTO_FILEOPEN, which has no default. Timeout.helo (V8.6 and later)After the greeting, the local sendmail sends a HELO (or EHLO to get ESMTP) message to identify itself. That message looks something like this: HELO here.us.edu The other site then replies with acknowledgment of the local HELO or EHLO: 250 there.dc.gov Hello here.us.edu, pleased to meet you The amount of time the local sendmail waits for the other site to acknowledge the local HELO or EHLO is set with the helo keyword, the forms of which are as follows: O Timeout.helo=timeout The default value is five minutes. There is no specified minimum, but we recommend no less than five minutes (because some sites use DNS to validate the hostname). The mc technique uses confTO_HELO, which has no default. Timeout.hoststatus (V8.8 and later)When processing the queue, sendmail saves the connection status of each host to which it connects and each host to which it fails to connect. It does this because an unsuccessful host should not be tried again during the same queue run. This makes sense when you consider that failures tend to remain failures for a while. At sites that process huge queues, on the other hand, such behavior might not be appropriate. If it takes hours (rather than minutes) to process the queue, the likelihood increases that a previously failed connection might succeed. For such sites, V8.8 sendmail has introduced the Timeout.hoststatus option, the forms of which are as follows: O Timeout.hoststatus=timeout Here, timeout is of type time. If timeout is present, it specifies the length of time that information about a host will be considered valid. If a queue run finishes faster than this interval, it has no effect. But when queue runs take longer than this interval, a previously down host will be given a second try if it appears in the queue again. If timeout is missing, it is interpreted as zero, and no host information is ever saved. If the entire option is missing, the default is 30 minutes. The mc technique uses confTO_HOSTSTATUS, which has no default. Note that this timeout is also used to time out persistent host status files when the purgestat(1) command is used (Section 15.1.4). Timeout.iconnect (V8.8 and later)When sendmail attempts to establish a network connection to another host, it uses the connect(2) system call. If the connection is going to fail, that system call will time out after an amount of time that varies with the operating system. You can override the system timeout with the connect keyword (See this section) to the Timeout option. When outgoing mail is first processed, mail to responsive hosts should precede mail to sluggish hosts. To understand why, consider that all mail is processed serially during each queue run. If a sluggish host precedes all the other hosts in the queue, those other hosts will not even be tried until the sluggish host finishes or times out. With this in mind, the very first time sendmail attempts to deliver a message, it should enforce a shorter connect(2) timeout than it should for latter attempts. Beginning with V8.8 sendmail, you can set an initial connect(2) timeout with the iconnect keyword to the Timeout option. Here are the forms: O Timeout.iconnect=timeout If no timeout is specified or if the entire Timeout.iconnect option is omitted, the default is to time out the first connection the same as the timeout for all connections (i.e., it defaults to the setting for Timeout.connect). The mc technique uses confTO_ICONNECT, for which there is no default. The N line in the qf file (N line) determines whether this is the first attempt. If the value in that line is zero, this is the first delivery attempt. Timeout.ident (V8.6 and later)The sendmail daemon queries every outside connecting host with the RFC1413 identification protocol to record the identity of the user at the other end who made the connection and to verify the true name of the remote connecting host. The default timeout is to wait five seconds for a response. The ident keyword is used to change this timeout. If your site accepts mail from PCs running SMTP software, you might need to disable this feature. Some PCs get stuck when queried with the RFC1413 identification protocol. The forms of this keyword are as follows: O Timeout.ident=timeout If the timeout is zero, the ident protocol is disabled. The mc technique uses confTO_IDENT, for which there is no default. Timeout.initial (V8.6 and later)When sendmail first connects to a remote site, that site sends an initial greeting message. The greeting message always starts with 220 and might look something like one of these sample greetings: 220 host.domain ESMTP Sendmail 8.12.6/8.12.6; Fri, 13 Dec 2002 13:19:01 -0700 (PDT) 220 some.server.net - Maillennium ESMTP/MULTIBOX in2 #46 220 another.server.com ESMTP CommuniGate Pro 3.5.9 220 another.host.domain ESMTP mail_relay_in-xg3.9; Fri, 13 Dec 2002 16:22:35 -0400 220 organization.domain ESMTP Exim 3.34 #1 Fri, 13 Dec 2002 13:25:56 -0700 You can set an initial timeout with the initial keyword to the Timeout option, using one of these forms: O Timeout.initial=timeout The default for the greeting wait and the recommended minimum is five minutes.[70] The mc technique uses confTO_INITIAL, for which there is no default.
Timeout.lhlo (V8.12 and later)The sendmail program can use LMTP to deliver mail to a local delivery program. One such program is mail.local (Section 5.3). When sendmail first starts an LMTP connection, it sends the LHLO command. It then waits for the program to reply. The amount of time that sendmail waits for that reply is set with the lhlo keyword, the forms of which are as follows: O Timeout.lhlo=timeout The default timeout is 2m (two minutes). There is no recommended wait interval. There is no default for the mc configuration technique. Timeout.mail (V8.6 and later)After sending HELO, EHLO, or LHLO, the local sendmail next sends the address of the sender (the envelope sender address) with the MAIL FROM: command: MAIL From:<you@here.us.edu> The local sendmail then waits for acknowledgment, which can look like this: 250 2.1.0 <you@here.us.edu>... Sender ok The amount of time that the local sendmail waits for acknowledgment of its MAIL FROM: command is set with the mail keyword. Here are the forms: O Timeout.mail=timeout The default timeout is 10 minutes, and the specified minimum is five minutes. The mc technique uses confTO_MAIL, for which there is no default. Timeout.misc (V8.6 and later)During the course of mail transfer, the local sendmail can issue short miscellaneous commands. Examples are NOOP (which stands for no operation) and VERB (which tells the other side to enter verbose mode). The time that the local sendmail waits for acknowledgment of these miscellaneous commands is defined with the misc keyword. Here are the forms: O Timeout.misc=timeout The default timeout is two minutes, and no minimum is specified. The mc technique uses confTO_MISC, for which there is no default. Timeout.queuereturn (V8.7 and later)This keyword determines a mail message's lifetime in the queue. Beginning with V8.7, this queuereturn keyword is used to set the amount of time a message must wait in the queue before it is bounced as nondeliverable. It uses these forms: O Timeout.queuereturn=timeout The queuereturn keyword can be further tuned on the basis of three possible levels of priority that a mail message can have. That is, the preceding forms set all three levels, whereas the following tune each level independently: O Timeout.queuereturn.urgent=timeout The default for the mc configuration technique is to bounce all messages that remain in the queue for more than five days. The keywords urgent, normal, and non-urgent correspond to the Precedence: header from the mail message. When the numeric equivalent of the Precedence: header as translated from the P line of the configuration file (see Section 25.10) is negative, the message is classified as nonurgent. When it is greater than zero, the message is classified as urgent. Otherwise, it is normal. As of V8.7, a Priority: header is also available (see Priority:) to directly specify the message priority and thereby bypass the need to set the value using the Precedence: header. Priority: urgent Priority: normal Priority: non-urgent There is currently no way to specify a Priority: header's value from the sendmail command line. Beginning with V8.10, in addition to an interval specification, you can use the literal term now to force an immediate bounce. This term is best used from the command line in conjunction with an appropriate queue specifier (see Section 11.8.2.3 and Section 11.8.2.5). For example: % /usr/sbin/sendmail -qGbadqueue -OTimeout.queuereturn=now Here, the messages in the queue group badqueue will all be bounced. Timeout.queuewarn (V8.7 and later)When a message is queued for longer than a predetermined time, sendmail sends a message to the sender explaining that the original message could not be delivered right away and that sendmail will keep trying. Beginning with V8.7, this queuewarn keyword is used to set the amount of time a message must wait in the queue before that explanation is mailed. Here are the forms: O Timeout.queuewarn=timeout The queuewarn keyword can be futher tuned on the basis of three possible levels of priority that a mail message can have. That is, the preceding forms set all three levels, whereas the following tune each level independently: O Timeout.queuewarn.urgent=timeout The defaults for the mc configuration technique are to send a warning for normal mail after four hours. The keywords urgent, normal, and non-urgent correspond to the Precedence: header from the mail message. When the numeric equivalent of the Precedence: header as translated from the P line of the configuration file (see Section 25.10) is negative, the message is classified as nonurgent. When it is greater than zero, the message is classified as urgent. Otherwise, it is normal. As of V8.7, a Priority: header is also available (see Priority:) to specify the message priority and thereby bypass the need to set the value using the Precedence: header: Priority: urgent Priority: normal Priority: non-urgent There is currently no way to specify a Priority: header's value from the sendmail command line. Timeout.quit (V8.6 and later)When the local sendmail is finished and wishes to break the connection, it sends the SMTP QUIT command: QUIT The other side acknowledges, and the connection is terminated: 221 2.0.0 there.dc.gov delivering mail The time the local sendmail waits for acknowledgment of the QUIT command is defined with the quit keyword, the forms of which are as follows: O Timeout.quit=timeout The default timeout is two minutes, and no minimum is specified. The mc technique uses confTO_QUIT, for which there is no default. Timeout.rcpt (V8.6 and later)After sending the MAIL FROM: command, the local sendmail issues one RCPT TO: command for each envelope recipient. One such RCPT TO: line might look like this: RCPT To:<them@there.dc.gov> The local sendmail then waits for acknowledgment, which looks like this: 250 2.1.5 <them@there.dc.gov>... Recipient ok The amount of time that the local sendmail waits for acknowledgment of each RCPT TO: command is set with the rcpt keyword. Here are the forms: O Timeout.rcpt=timeout The default timeout value is one hour,[71] and the specified minimum is five minutes. The mc technique uses confTO_RCPT, for which there is no default.
Timeout.resolver (V8.10 and later)The resolver library contains the routines for looking up hostnames and addresses with DNS. Those lookups can sometimes take a long time to complete, either because a host's nameserver is slow or down, or because of routing problems. Two timeout-type variables are available to limit how long these DNS lookups can take. One variable specifies the amount of time those routines wait between attempts to get the information. The other specifies the number of times those routines will retry to get the information. Beginning with V8.10 sendmail, the Timeout.resolver option allows you to alter one or the other, or both of these variables. The Timeout.resolver option is used like this: O Timeout.resolver.retrans=timeout Here, timeout sets the amount of time to wait between retries before a retransmission. The default is defined by your system's resolver library. A good recommended value is 5s (for five seconds). The num is the number of retries allowed before giving up. The default is defined by your system's resolver library. A good recommended value is 4. In addition to these gross adjustments, you can also differentiate between a first DNS lookup and subsequent DNS lookups. The first time a message is tried for delivery, you might want to set the retransmission and retry limits very low to screen out hard-to-deliver sites. Then for all the following (normal) tries, you can set those limits high so that all subsequent tries will likely succeed. You differentiate between the two by appending either a .first or .normal suffix to retrans or retry: O Timeout.resolver.retrans.first=timeout Here, timeout could be short—say, 2s for the first try, and a more relaxed 10s for all subsequent delivery attempts. The num could similarly be fewer—say, 2 for the first try, and a more relaxed 5 for all subsequent delivery attempts. Note that these retry and retrans timeouts can also be set for the dns (dns) and host (host) database-map types by using the corresponding -d and -r database-map K configuration command switches. Timeout.rset (V8.6 and later)If connection caching is enabled (see the ConnectionCacheSize option, ConnectionCacheSize), the local sendmail sends an SMTP RSET command to reset the other side. The time the local sendmail waits for acknowledgment of the RSET command is defined with the rset keyword. It looks like this: O Timeout.rset=timeout The default timeout is five minutes, and no minimum is specified. The mc technique uses confTO_RSET, for which there is no default. Timeout.starttls (V8.12 and later)When sendmail connects to another site, it greets that site with an EHLO command. In return, the other site replies with a list of SMTP extensions it supports: 220 some.other.domain ESMTP service ready EHLO host.your.domain 250-some.other.domain Pleased to meet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-8BITMIME 250-SIZE 250-STARTTLS The local sendmail notes that the other site supports STARTTLS, so the local sendmail uses the STARTTLS command. The local sendmail then waits for the other side to begin the TLS negotiating. The amount of time the local sendmail waits can be limited with this starttls keyword: O Timeout.starttls=timeout The default timeout is one hour, and no minimum is specified. The mc technique uses confTO_STARTTLS, for which there is no default. ![]() |
![]() ![]() |