SMTP
2023-03-04 (土) 12:38:30
SMTP とは †
名称 †
- Simple Mail Transfer Protocol
- 簡易メール転送プロトコル
概要 †
- 電子メールを送信するアプリケーション層(TCP/IPモデル)の通信プロトコル
- ポート番号:
- 25/TCP
- 一般的にサーバ間の転送で使われる
- 587/TCP
- ユーザとサーバ間の転送で使われるサブミッションポート
- 25/TCP
- DNSのMXレコードを使い転送先のサーバを特定する。
- RFC5321
システム構成 †
- SMTPサーバ
- SMTPクライアント
SMTPパケットの構成 †
- IPヘッダ
- TCPヘッダ(ポート番号:25)
- SMTPデータ
エンベロープ †
- SMTPのメール配信で実際の送信元、送信先として使われる項目。(メールヘッダの項目が使われるわけではない)
- From
- SMTPのMAILコマンドの引数「MAIL FROM:」
- 送信元メールアドレスで、メールヘッダ「Return-Path」に同じ値が設定されることがある。
- To
- SMTPのRCPTコマンドの引数「RCPT TO:」
- 送信先メールアドレスで、メールヘッダ「Received」に同じ値が設定されることがある。
SMTP の処理フロー †
- 接続の確立
- TCPコネクシション確立
- (←)220:準備OK
- (→)HELO or EHLO
- (←)250:OK
- 返信先・宛先の通知
- (→)MAIL FROM
- (←)250:OK
- (→)RCPT TO
- (←)250:OK
- メッセージの送信
- (→)DATA
- (←)354:待受OK
- (→)メール本文の送信
- (←)250:OK
- 接続の終了
- (→)QUIT
- (←)222:切断OK
SMTPプロトコルのコマンド †
- HELO
- SMTP拡張機能をサポートしていない。
- EHLO
- Extended Hello
- SMTP拡張機能をサポートしている。
- MAIL FROM
- エラーが発生した場合のバウンスメールの送信先アドレス
- 送信者のエンベロープアドレス
- メールヘッダの Return-Path: にセットされる
- RCPT TO
- 宛先のメールアドレス
- 受信者のエンベロープアドレス
- メールヘッダの Received: for にセットされる
- VRFY
- メールアドレスのアカウント情報を取得する
- EXPN
- メーリングリストに登録されているアカウントの情報を取得する
- DATA
- メール本文の送信要求
- QUIT
- 接続終了の要求
SMTPの認証 †
- SMTP標準には認証の仕様を持たないので、以下の規格により認証を実現する。
SMTP-AUTH †
POP before SMTP †
- POP3のユーザ認証機能を使ってSMTPを利用する方式
- POP3で認証してから一定時間、メールの送信を許可する。
- メールを受信してから、メールを送信する順番になる。
- 認証に成功したクライアントのIPアドレスをPOPサーバに一定時間登録しておき、SMTPサーバは送信要求してきたクライアントのIPアドレスが登録されている場合のみ、送信要求を受ける。
- RFC2476
通信の暗号化方式 †
SMTPS †
MTA-STS †
- RFC8461
- SMTP Mail Transfer Agent Strict Transport Security
SMTP-TLSRPT †
- RFC8460
- SMTP TLS Reporting
STARTTLS †
- 発信元メールサーバと受信側メールサーバ間の通信を暗号化するために使われる。
- 暗号化されていない状態で通信を開始した後に、発信元メールサーバがSTARTTLSコマンドを実行して、受信側メールサーバが対応していると暗号化通信が開始される。
- ポート番号:25/TCP