Когда я ищу коды ошибок SMTP, я иногда вижу «550» или «5.5.0». И иногда число в пунктирном коде другое.
Я нашел числовые коды, определенные в RFC 821 и точечные коды в RFC 3463.
Это просто разные обозначения одного и того же объекта или они разные? Если они разные, какие части протокола отвечают за возврат каждого кода и почему разные коды?
Первые три цифры «550» - это код, который необходим для протокола SMTP. Это используется во время диалога SMTP для обработки ошибок, успехов или сбоев.
Пунктирная версия - это так называемый расширенный код возврата. В этом коде вы можете указать более подробный ответ для людей или автоматизированных скриптов. Но они не нужны для работы SMTP-сервера.
Но что вам нужно (когда вы используете расширенные коды ошибок), так это числовой код ошибки, за которым следует точечный код. Не наоборот. И не только расширенный код ошибки без числового.
Значения не обязательно должны быть равными, но они должны совпадать. Таким образом, вы можете получить сообщение «554 5.7.1 Служба недоступна». Оба должны начинаться с 5, но не обязательно равны в последней части.
Обзор RFC 3463 дает довольно хороший ответ - пунктирным обозначением является современный стандарт, а коды ответа с прямыми числами являются устаревшим стандартом. Изменить: «устаревший» - плохая формулировка, так как старые коды по-прежнему необходимы для сигнализации протокола, но не содержат подробностей о новых кодах.
Существует потребность в стандартном механизме сообщения об ошибках почтовой системы, более богатом, чем ограниченный набор, предлагаемый SMTP, и текстовые описания конкретной системы, отправляемые в почтовых сообщениях. Существует насущная потребность в многофункциональном машиночитаемом коде состояния, не зависящем от человеческого языка, для использования в уведомлениях о состоянии доставки. В этом документе для этой цели предлагается новый набор кодов состояния.