Назад | Перейти на главную страницу

SMTP-серверы: насколько хорошо поддерживается автоматическая повторная попытка при отказе в соединении?

Когда почтовый сервер выдает сообщение об отказе в подключении, электронные письма будут приходить в будущих попытках, если почтовый сервер снова подключится к сети. Насколько хорошо это поддерживается? Все ли почтовые серверы это поддерживают? Только самые надежные? Это стандарт де-факто или спецификация?

SMTP-серверы обычно пытаются доставить сообщение в течение нескольких дней. Это указано в RFC 5321 Простой протокол передачи почты, Раздел 6.1 Надежная доставка и ответы по электронной почте и Раздел 4.5.4 Стратегии повторных попыток.

РЕДАКТИРОВАТЬ

Добавлены выдержки из RFC:

Когда SMTP-получатель принимает сообщение (отправляя сообщение «250 OK» в ответ на DATA), он принимает на себя ответственность за доставку или ретрансляцию сообщения. Он должен серьезно отнестись к этой ответственности. Он НЕ ДОЛЖЕН потерять сообщение по легкомысленным причинам, например, из-за сбоя хоста позже или из-за предсказуемой нехватки ресурсов.

...

почта, которая не может быть передана немедленно, ДОЛЖНА быть поставлена ​​в очередь и периодически повторяться отправителем.

...

Повторные попытки продолжаются до тех пор, пока сообщение не будет отправлено или отправитель не откажется от него; время отказа обычно должно составлять не менее 4-5 дней.

Как уже упоминалось, это описано в RFC 5321, но, к сожалению, реализация на серверах SMTP отличается. Есть как минимум такие сценарии:

  • Повторная попытка каждые 5 секунд
  • каждый час
  • удвоить время между попытками
  • повторная попытка с шагом 5, 10, 15, 20, ...
  • никогда не повторять

Некоторые серверы даже различают коды повтора 4xy, потерю соединения, тайм-ауты, недоступность сети и другие временные ошибки и ведут себя по-разному в каждом из условий.

Подводя итог: даже если существует стандарт, вы должны признать, что он не может зависеть от реализации.