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)ともいう。

(2024.2.2更新)

試験出題履歴

ITパスポート試験 : 平31春 問82 平23秋 問77 平21秋 問69 平21春 問75

SMTPコマンド/応答コード

SMTPコマンド
コマンド書式・意味
HELO 書式 : HELO <SP> <domain> <CRLF>
意味 : 接続の確立
MAIL 書式 : 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>
意味 : クライアントとサーバの役割の逆転

SMTP応答コード
コード 意味
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
処理失敗。