SMTP メール送信
SMTPは、メールを送信するためのプロトコルです。一般的にメールを受信するにはPOP3で行います。ここは、送信用のプロトコルに関するメモです。
詳しくは、RFC821を参照します。
コマンド
SMTPは、クライアントからのコマンドとサーバからのリプライコードで通信を行います。 コマンドとリプライコードは、次のようになります。(他にもあります)。
コマンド | 意味 |
---|---|
HELO domain名(クライアント名) | SMTP通信を開始する |
MAIL FROM:<reverse-path> | メールの送り主を送信する(主にメールアドレス) |
RCPT TO:<forward-path> | メールの宛先を送信する |
DATA | ヘッダを含むメールの本体を送信する |
QUIT | SMTP通信を終了する |
その他、RSET,SEND,SOML,SAML,VRFY,EXPN,HELP,NOOP,TURNなど。
応答
サーバからのメッセージは、コードとテキストからなります。送られてきたコードを調べることでサーバ側でエラーが発生していないかを調べることができます。
サーバからの応答が複数行(多行応答)送られてくる場合があります。その場合、コードとテキストをハイフン(-)でつなぎ、最後の行のみコード<sp>テキストとなります。(RFC821.付録 E)
250-最初の行
250-二番目の行
250 最後の行
メール(メッセージ)の終わり
メールのメッセージの終わりは、ピリオド(.)のみの行が終わりになります。 正確には、CRLF.CRLFが終了になります。
メールがピリオド(.)から始まる行を含む場合には、クライアントは前にピリオド(.)を付加して送信します。付加されたピリオド(.)は、SMTPサーバで削除されます。
日本語の扱い
日本語を送信するには、一般的にJISコードの文字を使用します。
SMTPで送信するデータは、7ビットASCII文字となっています。そのため、Shift-JISやEUCで日本語を送信することができません。通常、文字コードをJISへ変換して送信します。
応答コード
コード | 意味 |
---|---|
211 | System status, or system help reply |
214 | Help message ヘルプメッセージ。 |
220 | <domain> Service ready 準備完了。 |
221 | <domain> Service closing transmission channel 接続を閉じる。 |
250 | Requested mail action okay, completed 要求された処理は実行可能。完了。 |
251 | User not local; will forward to <forward-path> 受信者が存在しないので[forward-path]に転送する。 |
354 | Start mail input; end with <CRLF>.<CRLF> メールの入力開始。入力終了は「.」のみの行を送信。 |
421 | <domain> Service not available,closing transmission channel サービスは利用不能。接続を閉じる。 |
450 | Requested mail action not taken: mailbox unavailable メールボックスが利用できないため、要求された処理は実行不能。 |
451 | Requested action aborted: local error in processing 処理中にエラーが発生。要求された処理は失敗。 |
452 | Requested action not taken: insufficient system storage 記憶装置の空き領域が不十分なため、要求された処理は実行不能。 |
500 | Syntax error, command unrecognized 文法に間違いがあるため、コマンドが理解できない。 |
501 | Syntax error in parameters or arguments 引数の文法に間違いがある。 |
502 | Command not implemented 指示されたコマンドはこのシステムには実装されていない。 |
503 | Bad sequence of commands コマンドの発行順序が間違っている。 |
504 | Command parameter not implemented コマンドの引数が未定義。 |
550 | Requested action not taken: mailbox unavailable メールボックスが利用できないため、要求された処理は実行不能。 |
551 | User not local; please try <forward-path> 受信者が存在しない。[forward-path]に送信せよ。 |
552 | Requested mail action aborted: exceeded storage allocation ディスク不足のため、要求された処理は実行不能。 |
553 | Requested action not taken: mailbox name not allowed メールボックスの名前が不適切なため、要求された処理は実行不能。 |
554 | Transaction failed 処理失敗。 |