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 1000-byte message to one recipient would have a total of 362
seconds in which to complete its SMTP DATA send phase. But a
1000-byte message to 10 recipients would have 3062 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:
APPENDDEF(`confENVDEF', `-DDATA_PROGRESS_TIMEOUT=600')
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 again. Wholesale increases
are discouraged because slow receiving hosts are usually slow only
during the busy times of the day.