RFC: 1123
Оригинал: Requirements for Internet Hosts - Application and Support
Категория: Стандарт Интернета
Дата публикации:
Автор:
Перевод: Николай Малых

5.3.2. Тайм-ауты SMTP

Существует два подхода при выборе времени ожидания для отправителей SMTP: (a) раздельно ограничивать время для каждой команды SMTP или (b) ограничивать время диалога SMTP в целом для каждого почтового сообщения. Рекомендуется использовать для отправителей SMTP вариант (a) — покомандные тайм-ауты. Рекомендуется также обеспечивать простой способ изменения времени ожидания, предпочтительно без перекомпиляции кода SMTP.

  • Обсуждение
  • Время ожидания является важным параметром реализации SMTP. Если тайм-аут слишком велик (или не задан вообще) отказы в соединения Internet или ошибки в программах на приемной стороне SMTP могут привести процессы SMTP в состояние бесконечного ожидания. Если время ожидания слишком мало, это приведет к излишнему расходу ресурсов на попытки повторной передачи сообщений.

    При использовании варианта (b) тайм-аут должен быть достаточно большим (например, час), чтобы можно было работать с очень большими списками рассылок. Может также потребоваться увеличение тайм-аута пропорционально размеру сообщения при работе с сообщениями большого размера. Использование большого тайм-аута с фиксированным значением может привести к двум проблемам — состояние отказа может сохраняться очень долго, а очень большие сообщения будут приводить к фиктивным тайм-аутам просто потому, что не хватило времени на передачу (это ведет к очень серьезным издержкам!).

    При использовании рекомендуемого варианта (a) таймер устанавливается для каждой команды SMTP и каждого буфера передачи данных. Последнее означает, что общее время ожидания растет пропорционально размеру сообщения.

На основе опыта эксплуатации сильно загруженных почтовых хостов выработаны приведенные ниже правила, которые рекомендуется использовать при выборе времени ожидания:

  • Изначальное сообщение 220: 5 минут

    Процесс-отправитель SMTP должен различать отказы соединений TCP от задержки при получении изначального отклика 220.

    Многие получатели SMTP будут воспринимать соединения TCP, но задерживать отклик 220 до тех пор, пока в системе не появится возможность обработки новой почты.

  • Команда MAIL: 5 минут

  • Команда RCPT: 5 минут

    Более продолжительный тайм-аут требуется при обработке списков рассылки и псевдонимов, если ее невозможно отложить, пока не будет воспринятое сообщение.

  • Инициирование команды DATA: 2 минуты

    Это время ожидания отклика 354 Start Input на команду DATA.

  • Блок данных: 3 минуты

    Это время, в течение которого вызов TCP SEND передает кусок данных.

  • Прерывание команды DATA: 10 минут

    Время ожидания отклика 250 OK. Когда получатель переходит на этап завершения приема данных, он обычно выполняет операции по доставке сообщения в пользовательский почтовый ящик. Фиктивные тайм-ауты на этом этапе ведут к значительным издержкам, поскольку сообщение уже было передано целиком.

Для получателей SMTP рекомендуется устанавливать тайм-аут не менее 5 минут для ожидания следующей команды отправителя.

2007 - 2017 © Русские переводы RFC, IETF, ISOC.