はじめに
SPF, DKIM, DMARCについてのメモです。自分用。厳密な確認は行っていません。無保証でお願いします。
どれもDNSを使う
- SPF, DKIM, DMARC全てDNSを使う
SPF
- SPFは、ざっくり、クライアントのドメイン名とIPアドレスが正しいかの検証を行うものだが、ドメイン名の情報として、どこの情報を用いるかを明確にしたい
- 当初は、メール本文の発信アドレスにあるドメイン名を用いるのかと思ったが、spf=passのメールで、平気で全く異なるメールアドレスが記載されているものが、普通にあることに気づく
- そこで、SMTPに立ち戻って考え直してみたが、SMTPで最初に交換するドメイン名を使うだろうと推測。このドメイン名とIPアドレスの組み合わせが、DNSのSPFの情報と一致すれば、passになるだろうと推測(厳密には未確認)
- 意味的には、名乗ってきたSMTPサーバが正しいか(なりすましではない)ことを検査することか
- 以下のエンティティ図に当てはめると、smtp.example-b.comが、smtp.example-a.comを認証する。なお、メールクライアントが、smtp.example-a.comに、メールを送信する際もSMTPを使うが、こちらは、ユーザのパスワード認証等が使える
- メール本文には関与しないので、メール本文のFromのメールアドレスが自ドメインと全く異なっても、SPF的にはエラーしない
- RFC7208: Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1
DKIM
- 送信側が署名して、受信側で検証
- DNSには、公開鍵を登録
- メール本文の改ざん検出が対象と推測(未確認)
- メール本文のFromのメールアドレスが自ドメインと全く異なっても、署名後改竄されない限り、エラーにならない
DMARC
- SPFとDKIMの検証がエラーした際の、メールの扱い方のポリシーを伝える
- ポリシーには、廃棄、隔離、受信がある
- メール本文のFromのメールアドレスが自ドメインと全く異なっても、SPFやDKIMでもエラーにならない
- spf=pass, dkim=passで、mail bodyのFrom addressが異なるドメインなら、スパム対応なメールサーバから送信されていることを意味しそう
- spf=pass, dkim!=passで、mail bodyのFrom addressが異なるドメインなら、途中でFrom addressが改竄されている可能性があるが、スパム対応なメールサーバから送信されている可能性もありそう
SMTPのおさらい
- クライアント - サーバ型、テキストベース
- クライアントがサーバに接続すると、サーバがドメイン名を名乗る
- クライアントが自身のドメイン名を知らせる
- クライアントが、発信メールアドレス、宛先メールアドレスをサーバに知らせる
- メール本文をクライアントに送信する。その際、メール本文に、発信メールアドレス、宛先メールアドレスを含む
- ドットでメール本文送信完了
- サーバは、Receivedヘッダフィールドを追加する。このフィールドには、上記のやりとりで通知されたドメイン名とIPアドレス、そして、メッセージIDを含む
- 上記のやり取りの中で、ドメイン名は、3箇所出てくる。最初はドメイン名を名乗る際、次は発信メールアドレスを知らせる際、最後は、メール本文内の発信メールアドレス
(メール本文内にアドレスがあるか要確認)
エンティティ
example-a.com : : example-b.com
+--------+ +--------+ : : +--------+ +--------+
| client +--------------+ Mail +--------------+ Mail +--------------+ client |
| | --SMTP-> | server | --SMTP--> | server | --POP/IMAP-> | |
+--------+ +--------+ : : +--------+ +--------+
smtp.exampie-a.com : : smtp.example-b.com
スパムの可能性
- 交換するドメイン名、通知するメールアドレス、メール本文に記載されているメールアドレスが同じであれば問題ない
- ドメイン名、メールアドレス、メール本文に記載のメールアドレスが異なることがありうる
昔の記憶より
- 昔々、telnet smtp.example-a.com smtpみたいなことをして、メールを出してみたことを思い出した。また、VRFYコマンドも思い出す
略語
SPF: Sender Policy Framework
DKIN: DomainKeys Identified Mail
DMARC: Domain-based Message Authentication, Reporting and Conformance