Googleが発表した送信ガイドライン関連で改めて調べ直したので、まとめてみた
- エンベロープFromとヘッダーのFromの違い
- SPFレコードとは(Sender Policy Framework)
- DKIMとは(DomainKeys Identified Mail)
- DMARCの前にSPFとDKIMの問題について
- DMARCとは
- 参考書籍
エンベロープFromとヘッダーのFromの違い
まずはエンベロープFromとヘッダーのFromの違いを知っておく必要があるのでまとめる
エンベロープFrom | ヘッダーのFrom | |
---|---|---|
用途 | メールの配信ルートを制御 | メール本文に表示される送信者情報 |
受信者が参照するか | 通常は参照しない | 参照する |
表示内容 | 送信者のメールサーバー情報 | 送信者の名前とメールアドレス |
スパム判定 | エンベロープFromが偽造されたメールはスパムと判定される可能性がある | ヘッダーのFromが偽造された場合、受信者に誤解を招く可能性がある |
SPFレコードとは(Sender Policy Framework)
SPFレコードは、ドメイン所有者が「このドメインからメールを送っていいサーバーはこれだよー」という情報を公開するためのもの
DNSのレコードに追加するだけなので対応としては容易。
フォームなどメール送信する機能がサイトにある場合、サーバーの引っ越し時に変更する必要があるので気をつける
注意点
- 確認するFromはエンベロープFromで、ヘッダーのFromではない
- 受信メールサーバー側がドメインのSPFレコードを確認してOKなら正しい送信元と判定するが、NGの場合は、必ずスパムと判断される訳では無い
- すべてのメールサーバーがチェックをしているわけではないので完全な防御策ではなく、信頼性を高める仕組み
SPFレコードチェックの流れ
SPFレコードの書き方
- TXTレコードに記載をする
- v=spf1で始め、複数指定する場合は半角スペースで区切る
- IP指定の場合
- ip4:XXXXで。CIDR 表記も可能
- 他のドメインのSPFレコードを参照させる場合
- include:[参照先のドメイン]
- ドメインのAレコードを指定する場合
- 最後はallをつける
- 条件に一致しないときは、allのルールに従う
- allの前に処理の指定の記号をいれる(限定子というらしい)
- 外部のレコード参照は最大10回まで
例
v=spf1 include:example.com +ip4:192.168.0.1 ~all
SPFレコードの限定子の種類
限定子 | 意味 | 説明 |
---|---|---|
"+" | PASS | 条件に一致したらパス |
"-" | FAIL | 条件に一致したらFail |
"~" | SOFTFAIL | 条件に一致したらSoftfail、一時的なエラー |
"?" | NEUTRAL | 条件に一致したら中立、結果を左右しない |
DKIMとは(DomainKeys Identified Mail)
「ディーキム」って読みます。
メールが特定のドメインから送信されたことを証明するための電子署名技術
メールの改ざんを保証する。
DNSに加えて送信元のメールサーバーにも設定が必要なので、SPFレコードに比べるとハードルが高い
注意点
- 確認するFromはエンベロープFromで、ヘッダーのFromではない
- すべてのメールサーバーがチェックをしているわけではないので完全な防御策ではなく、信頼性を高める仕組み
DKIMレコードチェックの流れ
`
DMARCの前にSPFとDKIMの問題について
どちらもエンベロープFromを見ているので、エンベロープFromに記載したドメインに正しく設定していれば、受信側は正しいと判断できてしまうため、なりすましの完全な対策にはならない。
DMARCとは
「ディーマーク」って読みます。
上記の問題の対策として作成。
ヘッダーのFromの情報も確認し、認証結果に対してどう対処するかの指定をする。
また、認証の結果を報告する仕組みもある。
DMARCのポリシー
ポリシー | 意味 | 説明 |
---|---|---|
none | 何もしない | 通常通りメールを扱ってもらう。 |
quarantine | 迷惑メールとする | 迷惑メールとして扱ってもらう |
reject | 受け取らない | 拒否してもらう |
DMARCのチェックの流れ
DMARCの書き方
- ドメインの前に「_dmarc.」をつけたものが、DMARCのレコードの名前となる
- TXTレコードに記載をする
- v=DMARC1;で始める
- p=[ポリシー]でポリシーを指定
- rua=mailto:[メールアドレス]でレコートのメールアドレスを指定
例
_dmarc.example.com. IN TXT "v=DMARC1; p=none; rua=mailto:hoge@example.com;"
この場合、認証に失敗しても何もしない。レポートはhoge@example.comに送信
他にも細かいルールがあるが、一旦最低限のルールのみ記載している