メールアドレスの検証を行うコードがあります。 SMTP経由のメール配信を試み、何も送信せずに終了することで機能します。ほとんどの場合機能しますが、場合によっては機能しません。これらのケースの1つがあり、リクエストでメールサーバーが不満に思う可能性があることについて誰かが手掛かりを持っているかどうか知りたいのですが?
これはTCP smtp.hp.comへのポート25のセッションです(ここで実際の電子メールアドレスを置き換えました)。
220-g1t6210.austin.hp.com ESMTP Postfix
HELO ednasmtp.beweb.co.nz
250 g1t6210.austin.hp.com
MAIL FROM: <[email protected]>
250 2.1.0 Ok
RCPT TO: <[email protected]>
550 5.5.1 Protocol error
QUIT
550 5.5.1 Protocol error
私の質問は、HPのPostfixサーバーが「プロトコルエラー」と言っているのはなぜですか?メール配信は有効ではありませんか?
smtp.hp.com
は4つの異なるIPアドレスに解決されます。それぞれがSMTPに応答しますが、構成方法は異なります。接続した4つのうちどれが接続しているかがわからなければ、接続が失敗した理由を正確に述べることは困難です。しかし、私はあなたのセッションを段階的に説明し、途中でクライアント側で発生した複数のエラーを説明できます。
220-g1t6210.austin.hp.com ESMTP Postfix
これは、-
で示されるサーバーからの部分的なステータスメッセージです。ステータスの最後の行には、その場所にがあります。 4つのSMTPサーバーのうち3つは、このように2行のステータスメッセージで応答し、2つの行の間に遅延が生じます。そのうちの1つは1行のステータスメッセージで応答し、セッションを処理したものとして除外します。クライアントは、すべてを確認するまでステータスメッセージを読み続ける必要があります。
HELO ednasmtp.beweb.co.nz
この時点で、クライアントは、完全なステータスを受け取る前にコマンドを送信することにより、プロトコルに違反します。
250 g1t6210.austin.hp.com
ここで、サーバーは、標準に準拠したクライアントが上記の220-
ステータス行の続きとして解釈するもので異なるステータスコードを送信することにより、プロトコルに違反します。
MAIL FROM: <[email protected]>
ここで、クライアントは:
と<
の間の余分なスペースによってプロトコルに違反しています。その場所にスペースが許可されることはありませんが、そのスペースを無視してトランザクションを続行できるメールサーバーが存在します。
250 2.1.0 Ok
RCPT TO: <[email protected]>
ここで、クライアントはMAIL
コマンドと同じようにプロトコルに再び違反します。
550 5.5.1 Protocol error
プロトコルエラーがあったのは正解です。上記のプロトコルエラーのうちどれが問題であるかを特定するのは困難です。 RCPT
コマンド自体はエラーですが、トランザクションの前の段階では見られなかったエラーは発生しません。
QUIT
550 5.5.1 Protocol error
この時点で、どちらの側が接続を閉じたかを推測するのは困難です。そして、双方がプロトコルに違反していることを考えると、それはおそらくもはや重要ではありません。どのステータスコードがどのコマンドに適用されるのかさえわかりません。
ホストが、電子メールサーバーから予想されるいくつかの検証に失敗しています:
アドレスの検証を行っている場合は、スパム回避テクニックをいくつもトリガーしている可能性があります。以前は住所の検証が一般的に許可されていましたが、スパマーは検証が制限される結果になっています。上記の項目を修正することは役立つかもしれませんが、私はそれを当てにしません。
最近、広くサポートされている唯一のアドレス検証は、ユーザーが自分のアドレスを確認するための検証リンクを含む電子メールを送信することです。
電子メールとPostfixの正規の投稿を確認することをお勧めします。