SPF、DKIM、DMARCの設定メモ

Kagoyaのメールプランをセキュアにプラン変更した時のメモ。
Gmailにメールが届くようにするためにSPF、DKIM、DMARCを設定。
前提
メールサーバーはカゴヤ。
DNSサーバーは外部。
この条件で送信ドメイン認証設定を行う。
MXレコードの設定
カゴヤの場合、外部DNSだとこれ一択らしい。
レコードはこうなる
確認
SPFの設定
外部DNSの場合、セキュアプランだろうが何だろうがカゴヤのSPFはこれ一択らしい。
専用サーバーにした場合は不明。
外部DNS設定
確認
DKIMの設定
まずメールサーバー側でセレクターを指定して秘密鍵と公開鍵を生成する。
セレクターは任意の文字列。
セレクターを決める
セレクターは任意の文字列。
メールヘッダーの DKIM-Signature に s=セレクター名; として入る。
秘密鍵と公開鍵の生成
メールサーバー側で、秘密鍵と公開鍵を生成する。
- 秘密鍵はメールサーバーで保持。
- 公開鍵はDNSサーバーに登録。
メールサーバーで署名を有効化
Postfix, Exim, Sendmail などで「どのドメイン・セレクターを使って署名するか」を設定し、秘密鍵を利用して送信時に署名する。
DNSサーバーに公開鍵を登録
TXTレコードに登録。
Gmail, mail-tester.com, dig/nslookup nなどで公開鍵が正しく引けるか確認する。
DMARCの設定
DNSサーバーにポリシーを登録。
- v=DMARC1 → バージョン固定
- p= → ポリシー(none / quarantine / reject)
- rua= → 集計レポート送付先(任意)
- ruf= → フォレンジックレポート送付先(任意)
例)
- p=quarantine
DMARCに失敗したメールを「隔離(Spamフォルダ行き)」扱いにするポリシー
他の選択肢:
none(何もしない、レポートのみ)
reject(受信拒否) - pct=100
適用率。100%のメールに対してポリシーを適用。
(試験的に一部だけ適用したい場合は50などにする) - ri=86400
レポート送信間隔(秒)。86400秒=1日ごとに集計レポート送信。 - adkim=s
DKIMの整合性チェックを strict(厳格一致) にする。
(r にすると relaxed、一致範囲が緩やか) - aspf=s
SPFの整合性チェックを strict(厳格一致) にする。
(r にすると relaxed) - sp=none
サブドメインに対するポリシー。
-
none→ サブドメインは制御しない -
quarantine/rejectを指定可能
-
-
メールを送信
-
送信元のSMTPサーバーへ
-
MTAでDKIM署名を追加
-
DNSで MXレコード を引いてメールサーバーを確認
送信MTA → 受信MTAへメールを転送 -
受信メールサーバーで認証チェック
・SPFチェック(送信サーバーのIPが SPFレコードで許可されているか確認)
・DKIM検証(秘密鍵と公開鍵をチェックして署名が正しいか検証)
・DMARCポリシーの適用(SPFとDKIMの結果をもとに判定) -
SPF / DKIM が PASS → 正常に受信トレイへ
失敗した場合は、DMARCのポリシーに従って処理
チェック
設定後に自分のメールアドレスに送信してヘッダー情報を確認。
Gmailのメールアドレスに送信して届くか確認。
設定後、Mail-Tester にアクセスして指定のアドレスにメールを送信するとスコアを付けてくれるので簡単にチェックできる。