目次
SMTPの概要
SMTP(Simple Mail Transfer Protocol)とは、電子メールを送信するためのプロトコルです。アプリケーション層に位置し、トランスポート層にTCPを利用します。SMTPのウェルノウンポート番号は25です。クライアントPC側のメールソフトとメールサーバソフトの間でSMTPコマンドと応答コードのやり取りで電子メールを送信します。また、SMTPサーバのメールサーバソフト間でもSMTPで電子メールを送信します。
なお、SMTPコマンドを送信する側がクライアントでSMTPコマンドを受けてその処理をし、応答コードを返す側がサーバとなります。メールサーバ間のSMTPの転送のときには、送信元のメールサーバがクライアントで宛先のメールサーバがサーバです。
SMTPコマンドと応答コード
SMTPでメールを送信する際の主なSMTPコマンドと応答コードを以下の表にまとめています。
SMTPコマンド | 意味 |
HELO | セッションの開始 |
EHLO | セッションの開始(拡張SMTP) |
送信元を通知 | |
RCPT | あて先を通知 |
DATA | メールデータ本体を送信 |
QUIT | セッションの終了 |
RSET | やり取りを中止し送られてきた情報を破棄 |
VERY | ユーザ名の確認 |
NOOP | 何もしない |
応答コード | 意味 |
220 | サービスの準備完了 |
221 | サービス切断 |
250 | コマンドが正常に完了 |
354 | メールの入力を開始。<CRLF><CRLF>で終了 |
500 | 文法エラー。コマンドが理解不能 |
SMTPの手順
普段利用しているメールソフトでメールを書いて、送信ボタンをクリックすると、上記のようなSMTPコマンドと応答コードのやり取りが行われることになります。SMTPコマンドと応答コードを利用した電子メールのやり取りの手順は、次のようになります。
- SMTPの開始(HELOコマンド)
- 送信元メールアドレスの通知(MAILコマンド)
- 宛先メールアドレスの通知(RCPTコマンド)
- メール本文の送信開始(DATAコマンド)
- メール本文の送信
- SMTPの終了(QUIT)
まず、クライアントからサーバへHELOコマンドを送信します。HELOコマンドに対して、サーバは応答コード250を返して、SMTPの通信を開始します。
そして、MAILコマンドで送信元のメールアドレスを通知します。MAILコマンドに対してサーバは応答コード250を返します。さらにRCPTコマンドで宛先のメールアドレスを通知します。RCPTコマンドに対しても、サーバは応答コード250を返します。宛先メールアドレスが複数ある場合は、RCPTコマンドの送信を繰り返します。
メール本文の送信開始を宣言するためのコマンドがDATAコマンドです。DATAコマンドを受け取ると、サーバは応答コード354を返して、メールの本文データを待ち受けます。その際、メールの本文データは、<CRLF><CRLF>で終了することをクライアントに通知します。<CRLF>は改行コードです。
クライアントからメール本文データを送信します。本文データは<CRLF><CRLF>で終了します。サーバは<CRLF><CRLF>のメール本文の終了を受け取ると、応答コード250を返します。
最後にクライアントはSMTPの通信を終了させるためにQUITコマンドを送信し、サーバは応答コード221を返します。
TCP/IP
- TCP/IPの階層
- IP(Internet Protocol) ~データを送り届ける~
- ICMP ~きちんとIPで転送できますか?~
- Ping ~きちんとデータは届きますか?~
- Windows OSのPingコマンド
- トレースルート ~データはどのルータを通っていますか?~
- tracertコマンド(Windows OS)
- ICMPリダイレクト
- トラブルはどこ? ~Pingとトレースルート~
- ARP ~IPアドレスとMACアドレスを対応付け~
- ARPフォーマット
- Gratuitous ARP(GARP)
- ポート番号 ~どのアプリケーションのデータなの?
- TCPの概要
- TCPの動作
- UDPの概要
- アプリケーションのデータが届くまでのまとめ
- DNS ~宛先IPアドレスを求める~
- nslookupコマンド ~DNSの名前解決の確認~
- DHCP ~IPアドレスを自動割り当て~
- Cisco IOS DHCPサーバの設定と確認コマンド
- Ciscoルータ DHCPサーバの設定例
- DHCPリレーエージェント
- DHCPリレーエージェントの設定例[Cisco]
- DHCPサーバ配置のまとめ
- TCP/IPの設定のまとめ
- ipconfigコマンド ~Windows OSのTCP/IP設定を確認~
- Linux(Ubuntu)でのTCP/IP設定の確認コマンド
- Webサイト
- HTMLとCSS ~Webページを作る~
- URL ~Webサイト(Webページ)のアドレス~
- HTTP ~HTMLファイルを転送する~
- Webアプリケーション ~Webブラウザだけあればいい~
- HTTP Cookie
- Webアプリケーションのセッション管理
- Webプロキシサーバ ~Webアクセスを代わりに~
- Webアクセスのまとめ
- 電子メール
- SMTP ~電子メール送信用プロトコル~
- POP3 ~メール受信用プロトコル~
- IMAP4 ~メールサーバ上でメールを管理~
- 電子メールのまとめ
- FTP ~代表的なファイル転送プロトコル~
- TFTP ~簡易的なファイル転送プロトコル~
- Windows10/11のTFTPクライアント
- ネットワークのトラブルの切り分け手順