!!!SMTP Reply Code {{category Network,nolink}}SMTPサーバがクライアントに送る情報の最初の3桁の数字を応答コードと呼び、この使い方はRFC 2821などで厳密に決まっている。 サーバは複数行の応答を返すこともでき、その場合には応答コードの直後に「-」 (ハイフン)を書くと、応答がまだ続くことを示す。最終行では応答コードの直後はスペースとなる(応答が1行なら、応答コードの後はスペースである)。左から一桁目はリクエストの成否を、二桁目はエラーの種類をを示します。 !!参考資料 *RFC-2821 !!!1yz: コマンドの確認待ち 現在、このカテゴリーに属する応答コードはsmtpには存在しない。 !!!2yz: コマンドの成功 !!200 : 正しくない応答コード(正しくは250を返すべき)。 RSETやNOOPに対する正常終了の応答コードとして、初期(1983年ごろ?)に見られた(RFC 876)。 !!211 : システムの状態、またはシステムヘルプの応答 !!214 : ヘルプメッセージ そのサーバで使えるコマンドに関するヘルプが返されるときに使われる。 HELPコマンドの応答など。 !!220 : サービスの準備ができた TCP/IP的にSMTPコネクションが確立したときに使われる。 220 (domain名) とドメイン名をともなう。STARTTLSでは、TLSの準備ができたことを示すのにも使われる。 !!221 : 転送チャンネルを閉じる (メール送信がおわったなどの理由で)SMTPの転送チャネルを閉じるときに使われる。つまり、QUITに対する応答。221 (domain名) とドメイン名をともなう。 !!250 : 要求されたメールアクションはOKであり、正常に終了した。 ほとんどのSMTPコマンドに対する成功の応答コード。 !!251 : ユーザはローカルではない そのユーザあてのメールが転送されるときに使われる。 1) 単に250で受信してこのクライアントに転送先を通知せずに転送する(セキュリティ上、その方が望ましいケースも多いだろう)か、2) 251で受信し、転送先アドレスをクライアントに通知する のいずれかの動作をする。なお、Remote Queue Processiong Declaration 拡張サービスの文脈ではそのノードあてメールが現在サーバにないことを示す。(cf 453) !!252 : ユーザの確認ができないが、配送の試みはするだろう VRFYで確認しようとしたユーザは、実はこのサーバ上にアカウントがないので、このサーバには確認できないが、そのユーザあてのメールはとりあえず転送はする、ということを示す。なお、Remote Queue Processing Declaration 拡張サービスの文脈では253とおなじ(ただし、サーバがもっているそのノードあてのメッセージ数の情報は含まない)。 !!253 : OK, ノードxにn個あるメッセージが残っているので開始する Remote Queue Processing Declarationにおける成功コードで、サーバがそのノードあてのメッセージをもっている時の応答コード。メッセージがない場合は251を用いる。 !!!3yz: コマンドは受け付けられ、続きのデータが要求されている !!334 : ダイジェスト待ち Authenticationにおいて、サーバのチャレンジに対するレスポンスを待つ。 !!354 : メール入力の開始;.で終わり DATAに対する応答で、.が来るまでのすべてのデータを(コマンドではなく)メッセージとして扱う。 !!!4yz: 一時的なエラー !!421 : サービスが利用可能でないので転送チャンネルを閉じる 例えば、メールセッション中にサーバのデーモンがShutdownされたときなど。 !!432 : パスワードの変更が必要である Authenticationで、選択された認証メカニズムを変更する必要があることを示す。 !!450 : 要求されたメールアクションは受けいれない:メールボックスが利用不能 他に該当しない一時的エラーはこれを用いる。例えばメールボックスがビシーのような状態など。 !!451 : 要求されたアクションは中止された:処理中のエラー データを処理しているときにエラーになった。主としてサーバ側に原因があることが多い。 !!452 : 要求されたアクションは中止された:システムのストレージが足りない システムのディスクがたりない。 !!453 : メールがない ODMRで、サーバ(プロバイダ)がそのサイトあて のメールをもっていないことを示す。 !!454 : 一時的な認証失敗 Authenticationで、一時的なサーバの失敗によって認証が失敗したことを示す。また、STARTTLSでは、一時的にTLSが利用できないことを示す。 !!458 : ノードxあてのメッセージをキューできない Remote Queue Processing Declarationにおいて、何らかの理由でキューができない時に返されるエラー。これにより具体的な理由が続く。 !!459 : ノードxは許可されていない Remote Queue Processing Declarationにおいて、何らかの理由でそのクライアントにサービスが提供されないことを示す。より具体的な理由がこれに続く。 !!!5yz: 恒久的なエラー !!500 : 構文エラー、コマンドが解釈不能 一般的な構文エラー。コマンド名が違うときに使われる。また、入力行が長すぎるときにもこれを使う。 !!501 : パラメータや引数の構文エラー パラメータや引数が構文的におかしいときに使う。内容に問題があるときには 504などが使われる。 !!502 : コマンドは実装されていない そのコマンドは実装されていない。コマンドそのものは知っているが、それを実装していない(あるいは、それを使えなくしている)ときに利用される。 !!503 : コマンドの並びが悪い 例えば、RCPTコマンドより前にDATAコマンドが使われた、のように、コマンドの順序が正しくないときに利用される。 !!504 : コマンドパラメータが実装されていない あるコマンドで使われたパラメータやオプションが使えない。例えば「MAIL foo@bar.com BY=600」などとされた時、MAILコマンドそのものは実装されているがDELIVERBYが実装されていないとこのエラーとなる。 !!521 : メールを受けとらない メールを(特定のものであれ、一般にであれ)受けとらないことを示す応答コー ドで、RFC 1846に規定される。 ただし、 RFC 2821によれば、常にメールを受けとらないホストは554応答を、ポリシー上の理由で特定のメールを受けとらないホストは550応答をそれぞれ使うよう指示されているので、521を用いる場面はほとんどないものと思われる。 !!530 : アクセス拒否 何らかの理由(ファイルパーミッションなど)でアクセスが拒否された。 Authenticationを利用しているとき、この応答はAUTH, EHLO, HELO, NOOP, RSET, QUIT以外のいかなるコマンドに対しても返され、サーバポリシーにより、要求されたアクションをするためには認証が必要であることを示す。 !!534 : 認証メカニズムが弱すぎる Authentication で、選択された認証メカニズムがサーバのポリシーが許すよりも弱いことを示す。 !!535 : 認証エラー Authentication で、認証関連のエラーのうち、特に定義されていないものを示す。 !!538 : 要求された認証メカニズムには暗号化が必要である Authentication で、選択された認証メカニズムはSMTPコネクションが暗号化されている時のみ利用できることを示す。 !!550 : 要求されたアクションは実行されない メールボックスが見つからない、アクセスできない、ポリシー上の理由でコマンドが拒否されたなど(リレー拒否もこれになる)。 !!551 : ユーザはローカルでない 251と同様、転送先に関する情報で、このサーバでは情報が得られないことと、転送先に関する情報を示す。 !!552 : 要求されたメールアクションは中止された ストレージの割りあてが上回った。メッセージが長すぎる時などに使われる。 !!553 : 要求されたアクションは受け入れられない メールボックスの構文が不正であるときなどに用いられる。 !!554 : トランザクションの失敗 何らかの理由でトランザクションに問題が生じたことを示す。また、コネクション開始時の応答の場合には、ここにSMTPサービスが存在しないことを示す。 !!555 : MAIL/RCPT のパラメータエラー MAIL/RCPTコマンドに対するパラメータエラー(RFC 1869)。ただし、RFC 2821 では 504 を使うよう指示されている。