У меня есть код, который выполняет проверку адреса электронной почты. Он работает, пытаясь доставить почту через SMTP, а затем завершая работу, ничего не отправляя. Он работает большую часть времени, но в некоторых случаях - нет. У меня есть один из таких случаев, и я хотел бы знать, знает ли кто-нибудь, чем почтовый сервер может быть недоволен в моем запросе?
Вот сеанс TCP через порт 25 на smtp.hp.com (я подставили здесь настоящие адреса электронной почты)
220-g1t6210.austin.hp.com ESMTP Postfix
HELO ednasmtp.beweb.co.nz
250 g1t6210.austin.hp.com
MAIL FROM: <a_real_email@beweb.co.nz>
250 2.1.0 Ok
RCPT TO: <a_real_hp_user_email@hp.com>
550 5.5.1 Protocol error
QUIT
550 5.5.1 Protocol error
У меня вопрос, почему постфиксный сервер HP сообщает «Ошибка протокола»? Недействительна ли доставка моей почты?
smtp.hp.com
преобразуется в 4 разных IP-адреса. Каждый из них отвечает на SMTP, но настроены они по-разному. Не зная, к какому из 4 вы подключились, трудно точно сказать, почему это не удалось. Но я могу шаг за шагом просмотреть ваш сеанс и объяснить несколько ошибок, допущенных клиентской стороной на этом пути.
220-g1t6210.austin.hp.com ESMTP Postfix
Это частичное сообщение о состоянии от сервера, обозначенное -
. Последняя строка статуса будет иметь в этом месте. Таким образом, 3 из 4 SMTP-серверов отвечают 2-строчным сообщением о состоянии с задержкой между двумя строками. Один из них отвечает однострочным сообщением о состоянии, которое исключает, что оно обработало ваш сеанс. Клиенту нужно будет продолжать читать статусное сообщение, пока он не увидит все.
HELO ednasmtp.beweb.co.nz
На этом этапе клиент нарушает протокол, отправив команду до получения полного статуса.
250 g1t6210.austin.hp.com
Здесь сервер нарушает протокол, отправляя сообщение другой код состояния в том, что совместимый со стандартами клиент интерпретировал бы как продолжение строки состояния 220-
сверху.
MAIL FROM: <a_real_email@beweb.co.nz>
Здесь клиент нарушает протокол посторонним пространством между :
и <
. Пространство в этом месте никогда не разрешается, хотя существуют почтовые серверы, которые игнорируют это пространство и позволяют продолжить транзакцию.
250 2.1.0 Ok
RCPT TO: <a_real_hp_user_email@hp.com>
Здесь клиент снова нарушает протокол таким же образом, как в MAIL
команда.
550 5.5.1 Protocol error
Это правильно, что произошла ошибка протокола. Трудно сказать, на какую из упомянутых выше ошибок протокола он жалуется. Сама команда RCPT
ошибочна, но в ней нет ошибок, которые не наблюдались ранее в транзакции.
QUIT
550 5.5.1 Protocol error
На этом этапе трудно угадать, какая сторона закрыла соединение. А учитывая, что обе стороны нарушили протокол, это, вероятно, уже не важно. Мы даже не можем быть уверены, какие коды состояния относятся к каким командам.
Ваш хост не проходит ряд проверок, которых можно было ожидать от почтового сервера:
Если вы выполняете проверку адреса, вы можете запускает любое количество методов предотвращения спама. В то время как в прошлом проверка адресов в целом была разрешена, спамеры привели к ограничению проверки. Исправление перечисленных выше пунктов может помочь, но я бы не стал на это рассчитывать.
В настоящее время единственный широко поддерживаемый проверка адреса - это отправка сообщения электронной почты со ссылкой для подтверждения, чтобы пользователь мог подтвердить свой адрес.
Вы можете просмотреть канонические сообщения по электронной почте и postfix.