SMTP 【Simple Mail Transfer Protocol】
概要
SMTP(Simple Mail Transfer Protocol)とは、インターネットなどのIPネットワークで標準的に用いられる、電子メール(eメール)を伝送するための通信手順(プロトコル)の一つ。メッセージの発信やサーバ間の転送に用いられる。利用者の操作するメールソフト(メールクライアント)からメールサーバにメッセージの送信を依頼する際や、メールサーバ間でメッセージを転送する際にシステム間で交わされる要求や応答のデータ形式、伝送手順などを定めている。
SMTPでメッセージを転送するソフトウェアを「MTA」(Mail Transfer Agent)あるいは「SMTPサーバ」(SMTP server)という。一方、受信側でクライアントへメッセージを配送するソフトウェアは「MRA」(Mail Retrieval Agent)と呼ばれ、受信プロトコルの違いによりPOP3サーバ、IMAP4サーバなどに分かれる。
SMTPは1980年代から使われている古いプロトコルで、最初の仕様はIETFによって1982年にRFC 821として規格化された。幾度かの改訂を経て2008年に最新版のRFC 5321が発行されている。1994年に追加された拡張機能やコマンド群は「ESMTP」(SMTP Service Extensions)と呼ばれることもある。
認証や暗号化の拡張
SMTPの当初の仕様には利用者の認証などセキュリティ機能が欠けていたため、SMTPコマンドを拡張して認証を行う「SMTP認証」(SMTP-AUTH)や、POP3の認証機能を借用してPOP3で認証した相手に一定時間SMTPによる接続を許可する「POP before SMTP」(PbS)などの仕様が策定された。
また、SMTP自体には送受信データの暗号化の機能は用意されていないため、一階層下のトランスポート層でSSL/TLS接続を行い、SMTP通信全体を暗号化する「SMTPS」(SMTP over SSL/TLS)が用意されている。通常のSMTP接続を区別するため専用のポート番号(標準ではTCPの465番ポート)で運用する。
インターネットでメールの利用が広まると迷惑メールやウイルスメール、フィッシング詐欺などの問題が生じたため、送信元のチェックなどを行う「SPF」(Sender Policy Framework)や「DKIM」(DomainKeys Identified Mail)、「DMARC」(Domain-based Message Authentication, Reporting, and Conformance)などの仕様が整備され、SMTPと併用されている。
サブミッションポートの分離
SMTPサーバは標準ではTCPの25番ポートで接続を待ち受けるが、利用者からの送信依頼とサーバ間のメッセージ転送に同じポートを使うと同じポートで両者の通信が混在し、通信経路の暗号化や迷惑メール対策などを行うのに不都合だった。
現在では、サーバ間の転送にのみ25番を用い、送信依頼はTCPの587番ポート、SSL/TLSを併用したSMTPS接続による送信依頼には465番ポートを用いるのが標準となっている。この2つのポートを「サブミッションポート」(submission port)ともいう。
関連用語
関連リンク (外部サイト)
試験出題履歴
SMTPコマンド/応答コード
コマンド | 書式・意味 |
---|---|
HELO |
書式 : HELO <SP> <domain> <CRLF> 意味 : 接続の確立 |
書式 : MAIL <SP> FROM:<reverse-path> <CRLF> 意味 : 発信者の指定 |
|
RCPT |
書式 : RCPT <SP> TO:<forward-path> <CRLF> 意味 : 受信者の指定 |
DATA |
書式 : DATA <CRLF> 意味 : 本文の送信 |
RSET |
書式 : RSET <CRLF> 意味 : 処理の中断 |
SEND |
書式 : SEND <SP> FROM:<reverse-path> <CRLF> 意味 : 発信者の指定 |
SOML |
書式 : SOML <SP> FROM:<reverse-path> <CRLF> 意味 : 発信者の指定 |
SAML |
書式 : SAML <SP> FROM:<reverse-path> <CRLF> 意味 : 発信者の指定 |
VRFY |
書式 : VRFY <SP> <string> <CRLF> 意味 : 受信者の確認 |
EXPN |
書式 : EXPN <SP> <string> <CRLF> 意味 : メーリングリストの会員アドレスの要求 |
HELP |
書式 : HELP [<SP> <string>] <CRLF> 意味 : ヘルプメッセージの要求 |
NOOP |
書式 : NOOP <CRLF> 意味 : ダミーコマンド |
QUIT |
書式 : QUIT <CRLF> 意味 : 処理の終了 |
TURN |
書式 : TURN <CRLF> 意味 : クライアントとサーバの役割の逆転 |
コード | 意味 |
---|---|
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 処理失敗。 |