ESMTP
SMTPに、認証や暗号化、大きなメールの送信などの拡張機能を加えたもの。クライアントは、セッションの最初に EHLO コマンドを送って、サーバが使える拡張機能の一覧を受け取る。
イマシルちゃんの解説
メールを送るときは、まずサーバに「こんにちは」ってあいさつしてから始めるんだ。
むかしのあいさつは、ただの「こんにちは」だった。
でも、拡張のほうのあいさつをすると、サーバが「うちは、パスワードの確認も、暗号化もできるよ」って、
使える機能を全部教えてくれるんだよ。
そのあとで、どの機能を使うかを決めて、メールを送り始めるんだ!
より深い解説
定義
ESMTP(Extended SMTP)は、RFC 5321で定められた、SMTPの拡張の仕組みである。クライアントが EHLO で始めると、サーバは対応している拡張機能を応答で知らせる。拡張に対応していないサーバは EHLO にエラーを返すので、クライアントは HELO で始め直す。
セッションの流れ
S: 220 mail.example.com ESMTP
C: EHLO client.example.jp ← セッション開始
S: 250-mail.example.com
S: 250-STARTTLS
S: 250-AUTH PLAIN LOGIN
S: 250 SIZE 10485760
C: MAIL FROM:<[email protected]> ← 送信者
S: 250 OK
C: RCPT TO:<[email protected]> ← 受信者
S: 250 OK
C: DATA ← 本文の開始
S: 354 Start mail input
C: (ヘッダーと本文)
C: . ← 本文の終わり
S: 250 OK
C: QUIT
主なコマンド
| コマンド | 意味 |
|---|---|
| EHLO | セッションの開始(拡張機能を使う)。自分のホスト名を名乗る |
| HELO | セッションの開始(従来のSMTP) |
| MAIL FROM | 送信者のメールアドレスを示す |
| RCPT TO | 受信者のメールアドレスを示す(複数可) |
| DATA | メールの本文を送り始める |
| QUIT | セッションを終える |
主な拡張機能
| 拡張 | 内容 |
|---|---|
| STARTTLS | 通信の途中からTLSで暗号化する |
| AUTH | 送信者を認証する(SMTP-AUTH) |
| SIZE | 受け付けるメールの最大サイズを知らせる |
| 8BITMIME | 8ビットのデータをそのまま送れる |
| PIPELINING | 応答を待たずに複数のコマンドを続けて送る |
SMTP-AUTH を使ってメールを受け付けるのは、ふつう、サブミッションポート(587番)である。