117 件中 117 件のコード
基本応答コード
システムステータス、またはシステムヘルプの応答。実際にはほとんど使われません。
HELP コマンドに対するヘルプメッセージ。サーバーや特定のコマンドの使い方が示されます。
接続時にサーバーが最初に返す挨拶で、サービスの準備ができたことを示します。STARTTLS への応答としても使われ、TLS ネゴシエーションを開始できることを表します。
サーバーが接続を閉じます。通常は QUIT コマンドへの応答です。
AUTH による認証に成功しました。通常は拡張コード 2.7.0 が付きます。
要求された操作が完了しました。EHLO、MAIL FROM、RCPT TO への標準的な応答で、DATA の終了時にサーバーがメッセージを受け付けたときにも返されます。
宛先はローカルのユーザーではありませんが、サーバーはメッセージを受け付け、指定されたアドレスへ転送します。
サーバーはユーザーの存在を確認しません(アカウント列挙を防ぐため VRFY を無効にしている)が、メッセージは受け付けて配送を試みます。
ETRN への応答:要求されたドメインまたはノード宛てにキューに溜まっていたメッセージの配送を開始しました。
AUTH の途中でサーバーが送る Base64 エンコードのチャレンジ。クライアントは認証メカニズムの次のデータ(AUTH LOGIN ならユーザー名やパスワードなど)で応答する必要があります。
DATA への応答:サーバーはメッセージ本文を待っています。本文はピリオドだけの行で終わります。
サービスを利用できず、サーバーが接続を閉じます。シャットダウン、過負荷、接続数過多、一時的な送信制限などが原因です。送信側は後で再試行する必要があります。
認証するには、ユーザーがパスワードを変更するか、別の認証メカニズムに移行する必要があります。拡張コード 4.7.12 が付きます。
メールボックスが一時的に利用できません(ビジー、ロック中、またはポリシーによる一時的な拒否)。グレーリスティングではこのコードか 451 が返されるのが一般的です。
DNS の問い合わせ失敗やフィルターの無応答など、サーバー内部のエラーにより処理が中止されました。送信側は後で再試行する必要があります。
現在、メッセージを受け付けるための領域がサーバーに不足しています。1 通あたりの宛先数の上限を超えたことを示す場合もあり、その場合クライアントは残りの宛先を別のトランザクションで送る必要があります。
一時的な認証エラー(認証情報を管理するサーバーが応答しないなど)、または STARTTLS を要求した際に TLS が一時的に利用できない状態です。
サーバーは MAIL FROM または RCPT TO で送られたパラメーターを現時点では処理できませんが、後で受け付けられる可能性があります。
ETRN への応答:サーバーは要求されたノードのメッセージキューを現時点では処理できません。
ETRN への応答:要求されたノードまたはドメインには、キューの配送を要求する権限がありません。
サーバーがコマンドを認識できないか、行が長すぎます。AUTH のやり取りで 1 行が許容される最大長を超えた場合にも使われます。
コマンド自体は有効ですが、パラメーターや引数が無効です。たとえば MAIL FROM のアドレスの形式が不正な場合や、EHLO のホスト名が無効な場合です。
サーバーはコマンドを認識していますが、実装していないか無効にしています。多くのサーバーでの VRFY や EXPN がその例です。
コマンドの順序が正しくありません。たとえば MAIL FROM より前の RCPT TO や、有効な宛先がない状態での DATA です。認証せずに送信しようとした場合にこのコードを返すサーバーもあります。
指定されたパラメーターをサーバーがサポートしていません。たとえば、対応していない AUTH メカニズムを指定した場合です。
このホストはどのようなメールも受け付けません。220 の代わりに挨拶として送られ、クライアントは再試行してはいけません。
コマンドを受け付ける前に、認証するか STARTTLS で TLS を開始する必要があります。認証情報なしで送信用の 587 番ポートを使ったときによく見られます。
選択した認証メカニズムが、サーバーのポリシー上弱すぎます。アプリパスワードや OAuth を必須にしているプロバイダーがこのコードを返すことがあります。
ユーザー名またはパスワードが正しくないか、認証情報が拒否されました。拡張コード 5.7.8 が付きます。
選択した認証メカニズムは暗号化された接続上でのみ使用できます。先に STARTTLS を実行する必要があります。
メールボックスが存在しないか利用できない、またはポリシー(スパム、ブラックリスト、SPF、DKIM、DMARC)によりメッセージが拒否されました。具体的な原因は、併せて返される拡張コードで判断します。
宛先はローカルのユーザーではなく、サーバーはメッセージを転送しません。送り先のアドレスを示す場合があります。
割り当てられた容量を超えました。宛先のメールボックスがいっぱいか、メッセージが SIZE 拡張で通知された最大サイズを超えています。
メールアドレスが無効か、使用が許可されていません。構文が正しくない場合や、送信者がそのアドレスを使えない場合などです。
トランザクションが失敗しました。最初の挨拶で返された場合は、そのクライアントに SMTP サービスを提供しないことを意味します。DATA の後なら、メッセージが拒否されたことを示し、多くは内容や送信者のレピュテーションが原因です。
MAIL FROM または RCPT TO で送られた拡張パラメーターを、サーバーが認識していないか実装していません。
宛先ドメインが null MX(「.」を指す MX レコード)を公開しており、メールを受信しないと宣言しています。再試行しても意味はありません。
拡張ステータスコード(RFC 3463)
詳細のないステータス。結果のクラス(成功、一時的な失敗、恒久的な失敗)しかわからない場合に使われます。
メッセージのいずれかのアドレスに問題がありますが、より具体的なコードには当てはまりません。
宛先のメールボックスが宛先サーバーに存在しません。アドレスの入力ミスや削除済みアカウントによる典型的なバウンスです。
宛先のドメインまたはシステムが存在しないか、メールを受け付けられません。たとえばドメインが名前解決できない場合です。
宛先アドレスの構文が無効です。
宛先アドレスが、宛先システム上の複数のメールボックスに一致します。
宛先アドレスは有効です。RCPT TO への肯定応答で 2.1.5 として現れます。
メールボックスは存在していましたが移転しており、転送先のアドレスがわかりません。
送信者アドレスの構文が無効です。
送信者のドメインが存在しないか、返信を受け付けません。たとえば MX レコードも A レコードもない場合です。
メッセージはステータス通知に対応していないシステムに渡されたため、最終的な配送を確認できません。
宛先ドメインが null MX を公開しており、メールを受信しないと宣言しています。
メールボックスは存在しますが、それに関連する何らかの問題で配送できず、より具体的なコードがありません。
メールボックスは存在しますが無効化されており、メッセージを受け付けません。停止されたアカウントなどです。
宛先のメールボックスが容量の上限(クォータ)を超えています。
メッセージが、宛先ユーザーが受信できる最大サイズを超えています。
宛先は配信リストですが、メンバーへ展開できませんでした。
宛先システムに問題が発生しましたが、より具体的なコードには当てはまりません。
宛先メールシステムのストレージがいっぱいです。
宛先ホストは、シャットダウン直前、過負荷、メンテナンスなどのためメッセージを受け付けていません。
メッセージが必要とする機能を宛先システムがサポートしていません。
メッセージが、サーバーがどの宛先に対しても受け付ける最大サイズを超えています。
宛先システムの設定が誤っており、メッセージを受け付けられません。
メッセージは受け付けられましたが、要求とは異なる優先度で処理されます(MT-PRIORITY 拡張)。
ネットワークまたはルーティングの問題が発生しましたが、より具体的なコードには当てはまりません。
接続しようとしたところ、宛先サーバーが応答しませんでした。
接続は確立されましたが、配送が完了する前に切断されたか不安定になりました。
配送に必要なディレクトリサービス(一般的には DNS の名前解決)が失敗しました。
宛先へのルートが見つかりませんでした。たとえばドメインに使用可能な MX レコードも A レコードもない場合です。
メールシステムが混雑しており、現時点ではメッセージを処理できません。
ルーティングループを検出しました。メッセージが同じサーバーを何度も経由しています。
再試行の最大期間が過ぎたため、メッセージは配送されないまま破棄されます。
配送プロトコルに問題が発生しましたが、より具体的なコードには当てはまりません。
コマンドが無効か、その時点では許可されていないか、認識されません。
コマンドに構文エラーがあり、サーバーが解釈できません。
メッセージの宛先数が、サーバーが 1 回のトランザクションで受け付ける上限を超えています。
コマンドは有効ですが、引数が無効かサポートされていません。
クライアントとサーバーの間でプロトコルのバージョンが一致しません。
AUTH のやり取りの 1 行が、サーバーが許容する最大長を超えています。
メッセージの内容に問題がありますが、より具体的なコードには当てはまりません。
メッセージまたはその添付ファイルのコンテンツタイプを、宛先がサポートしていません。
配送するには内容の変換が必要ですが、送信者が変換を禁止しています。
配送するには内容の変換が必要ですが、サーバーはその変換を行えません。
メッセージは配送されましたが、内容の変換で情報の一部が失われました。
メッセージ内容の変換に失敗しました。
URL で参照されたメッセージの内容を取得できませんでした(BURL 拡張)。
送信者または宛先が、ASCII 以外の文字を含むアドレス(国際化メール、SMTPUTF8)に対応していません。
サーバーは UTF-8 のテキストで応答する必要がありますが、クライアントが SMTPUTF8 への対応を通知していません。
メッセージに UTF-8 のヘッダーが含まれており、それに対応していない 1 つ以上の宛先へ転送できないため、拒否されます。
詳細のないセキュリティ関連のステータス。認証の成功(2.7.0)、AUTH の一時的な失敗(4.7.0)、ポリシーによる拒否で見られます。
送信者はこの宛先へ送信する権限がありません。ブラックリスト、レピュテーション、スパム対策によるブロック、または許可されていないリレーの試みが原因です。4.7.1 の場合はグレーリスティングを示すことがよくあります。
送信者には、この配信リストへ送信する権限がありません。
メッセージをあるセキュリティプロトコルから別のプロトコルへ変換する必要がありますが、それができません。
メッセージが必要とするセキュリティ機能を、宛先がサポートしていません。
転送中の暗号処理(署名の検証や復号など)に失敗しました。
メッセージで使われている暗号アルゴリズムを、宛先がサポートしていません。
整合性の検証に失敗しました。メッセージが転送中に改変されたか、チェックサムが一致しません。
認証情報が無効です。ユーザー名またはパスワードが正しくありません。
選択した認証メカニズムは、サーバーのポリシーが求める強度を満たしていません。
要求された認証メカニズムを使うには、TLS などの外部の暗号化層が必要です。主にパスワードを平文で送るメカニズムが対象です。
要求された認証メカニズムは、暗号化された接続上でのみ使用できます。
ユーザーはパスワードを変更するか、別の認証メカニズムに移行する必要があります。
認証しようとしているユーザーのアカウントが無効化されています。
サーバーは、信頼関係が確立されているシステムからのメッセージしか受け付けません。
メッセージの優先度が低すぎるため、現時点では受け付けられません(MT-PRIORITY 拡張)。
指定された優先度に対してメッセージが大きすぎます(MT-PRIORITY 拡張)。
送信者が指定した日付以降にメールボックスの所有者が変わったため、メッセージは配送されません(RRVS 拡張)。
送信者が指定した日付以降に宛先ドメインの所有者が変わりました(RRVS 拡張)。
送信者の要求どおりにメールボックスの所有者が変わったかどうかを、サーバーが確認できません(RRVS 拡張)。
メッセージに有効な DKIM 署名がなく、受信側のポリシーでは署名が必須です。
メッセージに有効な DKIM 署名はありますが、いずれも受信側のポリシー(署名ドメインやアルゴリズムなど)を満たしていません。
From ヘッダーのドメインと同じドメインによる有効な DKIM 署名がありません。
送信元の IP アドレスが、送信者ドメインの SPF レコードで許可されていません。
SPF の評価でエラーが発生しました。レコードの形式が不正な場合や、DNS の参照回数が多すぎる場合などです。
送信元の IP アドレスに逆引き DNS(PTR)が設定されていないか、返されるホスト名がその IP アドレスに正引きで戻りません。
SPF と DKIM など、メッセージの複数の認証チェックが同時に失敗しました。
送信者のドメインが null MX を公開しているため返信やバウンスを受け取れず、メッセージは拒否されます。
メッセージは、類似した迷惑メッセージの大量送信の一部と判断されました。
ARC チェーンの検証に失敗しました。ARC は、メッセージが転送サービスやメーリングリストを経由しても認証結果を保持するための仕組みです。
メッセージは REQUIRETLS を要求していますが、経路上の次のサーバーがこの拡張に対応していないため、暗号化を保証した配送ができません。
550 5.7.1 Message rejected のように、サーバーの応答全体を貼り付けると、基本コードと拡張コードを同時に確認できます。基本コードで検索すると、それと一緒に返されることが多い拡張コードも表示されます。
仕組み
SMTP セッションでは、クライアントのコマンド(EHLO、MAIL FROM、RCPT TO、DATA など)ごとに、サーバーが 3 桁のコードで始まる応答を返します。1 桁目は結果を表し、2 は成功、3 はサーバーが追加のデータを待っている状態、4 は一時的なエラー、5 は恒久的なエラーです。2 桁目は分野を表し、x0z は構文、x1z は情報、x2z は接続、x5z はメールシステムです。コードに続くテキストは自由形式でサーバーごとに異なり、プログラムが判断に使うのは数字だけです。
3 桁だけでは原因がほとんどわからないため、RFC 3463 で「クラス.サブジェクト.詳細」形式の拡張ステータスコードが定義されました。たとえば 5.1.1 は、アドレス(1)に関する恒久的な失敗(5)で、メールボックスが存在しないこと(1)を表します。クラスは 1 桁目の意味(2、4、5)を繰り返し、サブジェクトは原因を分類し、詳細がそれを特定します。これを使うサーバーは EHLO への応答で ENHANCEDSTATUSCODES 拡張を通知し、同じコードはバウンスメッセージの Status フィールドにも記載されます。
この表には、RFC 5321 の基本コードと、よく使われる拡張(AUTH、STARTTLS、ETRN、null MX)で追加されたコード、さらに IANA のレジストリにあるすべての拡張コードを、それぞれがよく一緒に使われる基本コードとともに収録しています。大手プロバイダーは独自のテキストやヘルプへのリンクを加えますが、使う番号は常に同じです。
例
550 5.1.1 <nadie@example.com>: Recipient address rejected: User unknown in local recipient table5xx Permanent · X.1.1 Bad destination mailbox addressアカウントが存在しない場合の Postfix の典型的なバウンスです。再試行しても解決せず、アドレスを修正する必要があります。以前は同じ宛先に届いていたのなら、アカウントが削除された可能性が高いでしょう。450 4.2.0 <ana@example.com>: Recipient address rejected: Greylisted4xx Transient · X.2.0 Other or undefined mailbox statusグレーリスティング:サーバーが未知の送信者を一時的に拒否し、再試行を待ちます。正規のメールサーバーは数分後に自動で再送し、メッセージは受け付けられます。多くのスパム送信プログラムは再試行しません。AUTH LOGIN334 VXNlcm5hbWU6334 には Base64 のチャレンジが含まれます。VXNlcm5hbWU6 は「Username:」、次の UGFzc3dvcmQ6 は「Password:」です。認証情報が正しくなければサーバーは 535 5.7.8 を返し、先に暗号化を求める場合は 538 または 530 を返します。ユースケース
- サーバーが返したエラーメッセージから、メールがバウンスした理由を把握する。
- エラーが一時的でキューが自動で再試行するのか、恒久的で対応が必要なのかを見分ける。
- アプリケーション、プリンター、サーバーからのメール送信を設定するときに、認証エラーを診断する。
- メールサーバーのログに出る SPF、DKIM、DMARC、逆引き DNS、ブラックリストによる拒否を読み解く。
- 一斉配信プラットフォームでバウンスを分類し、存在しないアドレスをリストから削除する。
- telnet、openssl s_client、swaks で取得した SMTP セッションを読む。
よくある質問
4xx エラーと 5xx エラーの違いは?
4xx は一時的なエラーです。送信側のサーバーはメッセージをキューに残して一定間隔で再試行し、一般に 4〜5 日たっても届かなければあきらめてバウンスを生成します。5xx は恒久的なエラーで、すぐにバウンスが返り、何も変えずに同じメッセージを再送しても再び失敗します。
550 5.1.1 のように応答にコードが 2 つあるのはなぜ?
1 つ目は RFC 5321 で必須とされる 3 桁の基本コードです。2 つ目は RFC 3463 の拡張ステータスコードで、原因を具体的に示します。同じ 550 でも、メールボックスが存在しない(5.1.1)、ポリシーによるブロック(5.7.1)、SPF の失敗(5.7.23)など原因はさまざまです。診断では主に拡張コードを確認しましょう。
550-5.7.1 のハイフンは何を意味しますか?
応答が複数行にわたることを示します。すべての行に同じコードが付きますが、途中の行はコードとテキストの間をハイフンで区切り、最後の行だけスペースで区切るため、クライアントは応答の終わりを判断できます。EHLO が返す拡張機能の一覧でも同じ形式が使われています。
アドレスは存在するのに 550 5.7.1 で拒否されるのはなぜ?
5.7.1 は宛先ではなく送信者についてのコードだからです。サーバーはあなたからのメッセージの受け取りを許可していません。よくある原因は、送信元の IP アドレスがブラックリストに載っている、ドメインの SPF、DKIM、DMARC の検証に失敗している、IP アドレスに逆引き DNS がない、認証せずにサーバーをリレーとして使おうとした、などです。コードに続くテキストが手がかりになることがよくあります。
アプリケーションからメールを送ると 530 や 535 が返るのはなぜ?
530 は、メッセージを受け付ける前に認証または TLS の開始が必要であることを示し、535 はユーザー名かパスワードが正しくないことを示します。アプリケーションが 587 番ポートと STARTTLS、または 465 番ポートと暗黙の TLS を使っているか、認証が有効になっているかを確認してください。Gmail や Microsoft 365 などのプロバイダーでは、通常のパスワードではなくアプリパスワードか OAuth を使う必要があります。