Ошибка протокола Postfix при попытке проверки адреса электронной почты с помощью SMTP

У меня есть код, который выполняет проверку адреса электронной почты. Он работает, пытаясь доставить почту через 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 сообщает «Ошибка протокола»? Недействительна ли доставка моей почты?

5
задан 22 April 2018 в 00:03
2 ответа

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

На этом этапе трудно угадать, какая сторона закрыла соединение. А учитывая, что обе стороны нарушили протокол, это, вероятно, уже не важно. Мы даже не можем быть уверены, какие коды состояния относятся к каким командам.

7
ответ дан 3 December 2019 в 01:09

Ваш хост не проходит ряд проверок, которых можно было ожидать от почтового сервера:

  • Он не работает с rDNS проверка имени, представленного выше.
  • У него нет записи SPF (подойдет простая политика «v = spf1 a -all».
  • В отправляющем домене нет записи DKIM или DMARC.

Если вы выполняете проверку адреса, вы можете запускает любое количество методов предотвращения спама. В то время как в прошлом проверка адресов в целом была разрешена, спамеры привели к ограничению проверки. Исправление перечисленных выше пунктов может помочь, но я бы не стал на это рассчитывать.

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

Вы можете просмотреть канонические сообщения по электронной почте и postfix.

3
ответ дан 3 December 2019 в 01:09

Теги

Похожие вопросы