メール送信のプロトコル TCP25番ポートを使用する。 SMTPクライアント(MUA, Mail User Agent) 自ドメインのSMTPサーバ(MTA, Mail Transfer Agent) 送信先のSMTPサーバ 受信ノード

コマンド

  • HELO: 通信開始
  • MAIL FROM: 送信者を挿入するフィールド
  • RCPT TO: 受信者を挿入するフィールドに
  • DATA: 電子メール本文

メッセージの構造

  • エンベロープ: MAIL FROMRCPT TO など、配信に使う情報
  • ペイロード: ヘッダやボディなどのコンテンツ。ヘッダにも送信元や送信先が含まれているがこちらはユーザに見せる情報で書き換え可能

envelop from は封筒の差出人に当たる情報で書き換えが不可能 header from はメールソフトで見えている情報で、簡単に詐称できる。

エラーコード

  • 200番台: OK
  • 300番台: DATAコマンドに対する肯定
  • 400番台: 転送エラー
  • 500番台: 中断エラー

セキュリティ

POP before SMTP

メール送信を行う前に POP3 で認証を行いなりすましを防ぐ

SMTP Authentication

SMTPにユーザID、パスワードによる認証機構を埋め込むもの。 OP25B を回避するためサブミッションポートを使うのが一般的。

送信ドメイン認証

スパムメールの対策として、送信者を認証したいニーズが高まっている。

  • SPF: IPアドレスを使うもの
  • DKIM: デジタル署名を使うもの

SPF(Sender Policy Framework)

メールを送信するIPアドレスレンジをSPF情報としてまとめて、DNSサーバのTXTレコードで公開する。 受信側メールサーバは、エンベロープFromドメインを管理するDNSサーバからSPFレコードを取得し、送信元メールサーバのIPアドレスと一致するかどうかを確認することで正当なメールかどうかを確認する。

DKIM (DomainKeys Identified Mail)

送信側メールサーバがメールに対してデジタル署名を行う方法。 デジタル署名はメールヘッダに含まれており、署名の検証のための公開鍵はTXTレコードに登録されている。 この検証によって、なりすましやメールの改ざんの有無を確認することができる。

DMARC

SPFやDKIMによる認証を補完する技術。 受信側が認証処理に失敗したとき、送信者が認証失敗メールをどう処理してほしいかを指定する。