RFC 3463: 拡張メールシステムステータスコード
ELI5: 基本的なSMTPでは「550」のような3桁のリプライコードが得られます。これは「何か失敗した」という意味です。しかし、なぜ失敗したのでしょうか?アドレスが間違っていますか?メールボックスがいっぱいですか?サーバーが過負荷ですか?拡張ステータスコードは`5.1.1`(不正な宛先メールボックス)のような、より詳細な3部構成のコードを追加するため、ソフトウェアは違いを区別して適切なアクションを取ることができます。
これが存在する理由
SMTP応答コード(RFC 5321)は3桁の数字を使用します:250は成功、550は永続的な失敗、421は一時的な問題を意味します。しかし、これらのコードは自動処理には粗すぎます。「550」は以下を意味する可能性があります:
- メールボックスが存在しない
- ドメインが存在しない
- 送信者がポリシーでブロックされている
- メッセージコンテンツが拒否された
これらの各々は送信者からの異なる応答が必要です。拡張ステータスコードは、問題を正確に識別する構造化されたclass.subject.detailコードを追加することで、この問題を解決します。これらのコードはSMTP応答(ENHANCEDSTATUSCODESエクステンション経由)およびRFC 3464のDSNレポートのStatusフィールドに表示されます。
動作方法
拡張ステータスコードはX.Y.Z形式に従い、各コンポーネントは定義された意味を持ちます:
コード構造
| コンポーネント | 名前 | 意味 |
|---|---|---|
X |
クラス | 成功(2)、一時的な失敗(4)、または永続的な失敗(5) |
Y |
サブジェクト | 問題のカテゴリ(アドレス、メールボックス、メールシステム、ネットワーク、プロトコル、コンテンツ、セキュリティ) |
Z |
詳細 | カテゴリ内の特定の状態 |
SMTP応答の例
RCPT TO:<user@example.org> 550 5.1.1 The email account that you tried to reach does not exist ^^^^^ | | | +-- 詳細 1 = 不正な宛先メールボックスアドレス +------ サブジェクト 1 = アドレス指定ステータス クラス 5 = 永続的な失敗
DSNレポート内
Final-Recipient: rfc822;user@example.org Action: failed Status: 5.1.1 Diagnostic-Code: smtp; 550 5.1.1 User unknown
重要な技術的詳細
クラス値
| クラス | 意味 | 送信者のアクション |
|---|---|---|
2.X.X |
成功 | メッセージが受け入れられたか配信されました。アクションは不要です。 |
4.X.X |
永続的な一時的失敗 | 後で再試行してください。条件は自動的に解決する可能性があります。 |
5.X.X |
永続的な失敗 | 再試行を停止してください。このアドレスにはメッセージは配信されません。 |
サブジェクト値
| サブジェクト | カテゴリ | 例 |
|---|---|---|
X.0.X |
その他/未定義 | その他に分類されない |
X.1.X |
アドレス指定 | 不正なメールボックス、不正なドメイン、不正な送信者 |
X.2.X |
メールボックス | メールボックスがいっぱい、無効化、メッセージを受け入れていない |
X.3.X |
メールシステム | メールシステムがいっぱい、メッセージを受け入れていない、選択された機能に対応していない |
X.4.X |
ネットワークおよびルーティング | ホストからの応答なし、不正な接続、ルーティングエラー |
X.5.X |
メール配信プロトコル | 無効なコマンド、プロトコル構文エラー |
X.6.X |
メッセージコンテンツ | メディアが非対応、変換失敗 |
X.7.X |
セキュリティ/ポリシー | 認証が必要、送信者ブロック、暗号化が必要 |
メール送信者にとって最も一般的なコード
| コード | 意味 | アクション |
|---|---|---|
5.1.1 |
不正な宛先メールボックスアドレス | リストから削除(ハードバウンス) |
5.1.2 |
不正な宛先システムアドレス(ドメイン) | リストから削除 |
5.2.1 |
メールボックスが無効化、メッセージを受け入れていない | リストから削除 |
4.2.2 |
メールボックスがいっぱい | 後で再試行;繰り返し失敗後に抑制 |
5.7.1 |
配信が認可されていない、メッセージが拒否された | 認証と送信者の評判を確認 |
4.7.1 |
一時的な認証失敗 | 再試行;SPF/DKIM/DMARCレコードを確認 |
5.7.26 |
DMARCポリシー違反 | DMARC配置を修正(SPFまたはDKIMは配置済みドメインで合格する必要があります) |
5.7.27 |
送信者アドレスがnull MX | 送信ドメインに有効なMXまたはAレコードを追加 |
4.4.1 |
接続タイムアウト | 再試行;DNSおよびネットワーク接続を確認 |
5.3.4 |
メッセージがシステムに対して大きすぎる | メッセージサイズまたは添付ファイルを削減 |
一般的な間違い
-
SMTP応答コードのみをチェックして、拡張コードを無視する。「550」は永続的であることを示していますが、
5.1.1(ユーザー不明)と5.7.1(ポリシーブロック)は非常に異なる応答が必要です。常に拡張コードを解析してください。 -
すべての5.X.Xコードを「リストから削除」として扱う。コード
5.7.1は、不正なアドレスではなく、一時的なポリシーブロック(スパムフィルター、レート制限)を意味することがよくあります。永続的な失敗のたびにアドレスを無分別に削除すると、不要なリストの縮小を引き起こします。 -
クラス桁を無視する。最初の桁が最も重要です。
4.2.2(メールボックスがいっぱい、一時的)と5.2.2(メールボックスがいっぱい、永続的)は異なる処理が必要です。一部のプロバイダーは解決する割り当て問題には4.X.Xを使用し、長時間の満杯状態にのみ5.X.Xを使用します。 - 特定のコードをハードコーディングする。拡張ステータスコードレジストリ(RFC 5248)は拡張可能です。新しいコードは時間とともに追加されます。ルーティング決定にはクラスとサブジェクトを解析し、診断のために完全なコードをログに記録します。
-
SMTP応答コードと拡張ステータスコードを混同する。3桁のSMTPコード(550)と拡張コード(5.1.1)は異なります。拡張コードは応答行のSMTPコード後に表示されるか、またはDSNの
Statusフィールドに表示されます。
配信可能性への影響
- バウンス分類の精度。拡張ステータスコードは自動バウンス処理の主要な入力です。ハードバウンス(削除)対ソフトバウンス(再試行)対ポリシーブロック(調査)の正しい分類は、送信者の評判とリスト品質に直接影響します。
-
評判を認識した再試行ロジック。
4.7.1応答(一時的な認証失敗)は、単なる盲目的な再試行ではなく、SPF/DKIM/DMARCレコードのチェックをトリガーすべきです。4.2.2(メールボックスがいっぱい)はまったく異なる問題です。 -
診断とデバッグ。配信可能性が低下すると、バウンスログの拡張ステータスコードは正確に何が起きているかを教えてくれます。
5.7.1応答の急増は評判の問題を示唆し、5.1.1の急増は不正なリストデータを示唆しています。 -
プロバイダー固有の動作。Gmail、Microsoft、およびYahooはすべて拡張ステータスコードを使用しますが、同じ条件に異なるコードを割り当てる場合があります。コードをガイダンスとして使用し、
Diagnostic-Codeテキストと相互参照して完全なコンテキストを得てください。