メール送信のプロトコル TCP25番ポートを使用する。 SMTPクライアント(MUA, Mail User Agent) → 自ドメインのSMTPサーバ(MTA, Mail Transfer Agent) → 送信先のSMTPサーバ → 受信ノード
コマンド
- HELO: 通信開始
- MAIL FROM: 送信者を挿入するフィールド
- RCPT TO: 受信者を挿入するフィールドに
- DATA: 電子メール本文
メッセージの構造
- エンベロープ:
MAIL FROM
やRCPT 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による認証を補完する技術。 受信側が認証処理に失敗したとき、送信者が認証失敗メールをどう処理してほしいかを指定する。