Таймауты Чтения
Все таймауты имеют имена типа "Timeout.подопция". Все распознаваемые подопции, их значения по умолчанию, и минимальные значения, позволяемые секцией 5.3.2 RFC 1123 таковы:
connect | Время ожидания открытия SMTP соединения (системный вызов connect(2)) [0, неопределенное]. Если оно равно нулю, то используется значение из ядра системы. Эта опция ни в каком случае не может иметь значение больше, чем это позволяет ядро, но может быть меньше. Это сделано, чтобы обойти ядра, позволяющие абсурдно длительный таймаут соединения (в некоторых случаях 90 минут). |
iconnect | То же самое, что connect, кроме того, что оно применяется только для первичной попытки соединения с хостом для заданного сообщения [0, неопределенное]. Концепция такова: это значение должно быть очень небольшим (несколько секунд); хосты с хорошим соединением и отвечающие хосты, таким образом, будут обслужены немедленно. Медленные хосты не будут задерживать остальные доставки на стадии начальной попытки доставки. |
initial | Ожидание начального приветственного сообщения 220 [5m, 5m]. |
helo | Ожидание ответа на команду HELO или EHLO [5m, неопределенное]. Это может потребовать просмотра имени хоста, поэтому пять минут, возможно, вполне приемлемый минимум. |
mail| | Время ожидания ответа на команду MAIL [10m, 5m]. |
rcpt| | Время ожидания ответа на команду RCPT [1h, 5m]. Это значение должно быть большим, из-за того, что оно может указывать на список, и его расширение может занять много времени (смотри ниже). |
datainit| | Время ожидания ответа на команду DATA [5m, 2m]. |
datablock| | Ожидание прочтения блока данных (то есть, тела сообщения). [1h, 3m]. Это значение должно быть большим, потому что оно также применяется к программам, которые могут достаточно медленно выводить данные в sendmail. |
datafinal| | Время ожидания ответа на точку, завершающую сообщение. [1h, 10m]. Если это значение короче, чем время, необходимое получателю для получения сообщения, будет сделана повторная передача. Это описывается в RFC 1047. |
rset | Время ожидания ответа на команду RSET [5m, неопределенное]. |
quit | Время ожидания ответа на команду QUIT [2m, неопределенное]. |
misc | Время ожидания ответа на различные (но короткие) команды, типа NOOP (нет операции) и VERB (переход в подробный режим). [2m, неопределенное]. |
command| | Для сервера SMTP, время ожидания следующей команды. [1h, 5m]. |
ident | Время ожидания ответа на запрос IDENT [30s, неопределенное]. |
hoststatus | Сколько времени информация о хосте (например, о том, что он отключен) будет кэширована, прежде чем она устареет [30m, неопределеное]. |
Для совместимости со старыми файлами конфигурации, если ни одна подопция не определена, таймауты обозначенные знаком | устанавливаются равными указанному значению.
Многие из минимальных значений в RFC 1123 слишком малы. Sendmail был разработан для протоколов RFC 822, которые не определяют таймауты чтения; следовательно, версии sendmail до 8.1 не гарантируют быстрого ответа на сообщения. В частности, команда "RCPT" определяющая список рассылки будет расширена и проверит весь список полностью; большой список на медленной системе может запросто занять времени больше, чем пять минут . Я рекомендую таймаут в один час - так как обрыв соединения во время фазы RCPT достаточно редки, длительный таймаут не обременителен, но может сильно помочь в уменьшении загрузки сети и повторных сообщений.
Например, строки: O Timeout.command=25 O Timeout.datablock=3h
Устанавливает серверу SMTP таймаут на команды 25 минут и таймаут на ввод блока данных 3 часа.