SMTP の変更点


#author("2023-03-04T12:32:30+09:00","default:k1rou","k1rou")
#author("2023-03-04T12:38:30+09:00","default:k1rou","k1rou")
*SMTP とは [#u028931d]
**名称 [#ya6704f8]
-Simple Mail Transfer Protocol
-簡易メール転送プロトコル

**概要 [#hf2d0b87]
-[[電子メール]]を送信するアプリケーション層([[TCP/IPモデル]])の[[通信プロトコル]]
-[[ポート番号]]:
--25/TCP
---一般的にサーバ間の転送で使われる
--587/TCP
---ユーザとサーバ間の転送で使われるサブミッションポート
-[[DNS]]のMXレコードを使い転送先のサーバを特定する。
-RFC5321

*システム構成 [#pd775c5b]
-SMTPサーバ
-SMTPクライアント

*SMTPパケットの構成 [#mea48f3a]
-IPヘッダ
-TCPヘッダ(ポート番号:25)
-SMTPデータ

**エンベロープ [#g79370c7]
-SMTPのメール配信で実際の送信元、送信先として使われる項目。(メールヘッダの項目が使われるわけではない)

-From
--SMTPのMAILコマンドの引数「MAIL FROM:」
--送信元メールアドレスで、メールヘッダ「Return-Path」に同じ値が設定されることがある。
-To
--SMTPのRCPTコマンドの引数「RCPT TO:」
--送信先メールアドレスで、メールヘッダ「Received」に同じ値が設定されることがある。

*SMTP の処理フロー [#h275ae8f]
-接続の確立
--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プロトコルのコマンド [#m7bbb548]
-HELO
--SMTP拡張機能をサポートしていない。

-EHLO
--Extended Hello
--SMTP拡張機能をサポートしている。

-MAIL FROM
--エラーが発生した場合のバウンスメールの送信先アドレス
--送信者のエンベロープアドレス
--メールヘッダの Return-Path: にセットされる

-RCPT TO
--宛先のメールアドレス
--受信者のエンベロープアドレス
--メールヘッダの Received: for にセットされる

-VRFY
--メールアドレスのアカウント情報を取得する

-EXPN
--メーリングリストに登録されているアカウントの情報を取得する

-DATA
--メール本文の送信要求

-QUIT
--接続終了の要求

*SMTPの認証 [#u44c5617]
-SMTP標準には認証の仕様を持たないので、以下の規格により認証を実現する。

**SMTP-AUTH [#w98b453f]
-SMTPの拡張機能で、SMTPに[[ユーザ認証]]機能を追加した方式。
-「[[SMTP-AUTH]]」参照

**POP before SMTP [#y5f5cf7a]
-[[POP3]]の[[ユーザ認証]]機能を使ってSMTPを利用する方式
--[[POP3]]で認証してから一定時間、メールの送信を許可する。
--メールを受信してから、メールを送信する順番になる。
-認証に成功したクライアントのIPアドレスをPOPサーバに一定時間登録しておき、SMTPサーバは送信要求してきたクライアントのIPアドレスが登録されている場合のみ、送信要求を受ける。

-RFC2476

*通信の暗号化方式 [#u6aa15eb]
**SMTPS [#hc9db91d]
-SMTP over SSL
-SMTP over [[TLS]]
-クライアント(MUA)と発信元メールサーバ間の通信を暗号化する。
-[[デジタル証明書]]による[[ユーザ認証]]を行うことも可能。
-ポート番号:465/TCP

**MTA-STS [#c38d7437]
-RFC8461
-SMTP Mail Transfer Agent Strict Transport Security

**SMTP-TLSRPT [#f521330f]
-RFC8460
-SMTP TLS Reporting

**[[STARTTLS]] [#wd25f57e]
-発信元メールサーバと受信側メールサーバ間の通信を暗号化するために使われる。
-暗号化されていない状態で通信を開始した後に、発信元メールサーバがSTARTTLSコマンドを実行して、受信側メールサーバが対応していると暗号化通信が開始される。
-ポート番号:25/TCP

*不正利用の対策 [#d289d2bf]
**[[ISP]]などが行っている対策 [#y323543a]
-[[IP25B]]
--外部から迷惑メールを着信しないようにする
--自社および他社の[[ISP]]から動的に割り当てられた[[IPアドレス]]を発信元とする[[ISP]]内のメールサーバの25番ポート宛の通信を遮断することで、[[ISP]]のユーザが迷惑メールを着信しないようにする
-[[OP25B]]
--[[オープンリレー]]対策
--[[ISP]]が指定したメールサーバ以外のメールサーバから外部のメールサーバの25番ポート宛の通信を遮断することで、[[ISP]]のユーザが迷惑メールを発信できないようにする

*関連用語 [#i9a40deb]
-[[電子メール]]
-[[ESMTP]] -Extended SMTP
-[[Mailgun]]
-[[MIME]]
-[[MSA]] -Message Submission Agent
-[[OSI参照モデル]]
-[[POP3]]
-[[Postfix]]