Timeout for inbound SMTP DATA phase Tune with confENVDEF

Prior to V8.10, sendmail wrapped the SMTP DATA phase of sending email in a very long timeout. That timeout was calculated once, at the start of the DATA exchange, with the following formula:

timeout = size_of_message_in_bytes / 16
if timeout < 600
        then timeout = 600
timeout = timeout + ( number_of_recipients * 300 )

Thus, a 1,000-byte message to one recipient would have a total of 362 seconds in which to complete its SMTP DATA send phase. But a 1,000-byte message to 10 recipients would have 3,062 seconds for each recipient. Thus, under this formula, bulk email (the type of mail one would want to timeout quickly) would instead get the most generous timeouts.

Beginning with V8.10, sendmail uses a fixed window of time during which the SMTP DATA phase must show some progress. That window size is defined at compile time with this DATA_PROGRESS_TIMEOUT compile-time macro. The default is 300 seconds, which should be just right for most sites. If you need to change this timeout, you can do so in your Build m4 file like this:


Here, we double the timeout from 5 to 10 minutes. Before changing this timeout, however, you should run with your standard timeout and monitor the logs for messages such as this:

451 4.4.1 timeout writing message to host

If such warnings are frequent, and if mail to host predictably fails, you might need to increase this timeout a bit and experiment ...

Get sendmail, 4th Edition now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.