記事一覧

Cloudflare に DNS を移したついでに、Google Workspace のメールに SPF と DMARC を設定した

独自ドメインの DNS を Cloudflare に移したときに、SPF と DMARC が未設定だと分かりました。Google Workspace でメールを送っているドメインに、安全な設定から段階的に追加した手順です。

独自ドメインを設定した記事で、haai-to.com の DNS をお名前.com から Cloudflare に移しました。そのときに DNS レコードを見直していて、メールの SPF と DMARC が設定されていないことに気づきました。この記事では、その2つを追加した手順をまとめます。

SPF・DKIM・DMARC とは

どれも、「このドメインの名前で送られたメールは本物か」を受信側が判断するための仕組みです。

  • SPF:このドメインの名前でメールを送ってよいサーバーを、DNS で公開します
  • DKIM:送信するメールに電子署名を付けます。受信側は、DNS に公開した公開鍵で署名を検証します
  • DMARC:SPF と DKIM の検証に失敗したメールをどう扱ってほしいかを、受信側に伝えます。あわせて、検証結果のレポートを送ってもらえます

Gmail や Yahoo! メールは、2024年から送信者にこれらの設定を求めるようになっています。設定していないと、送ったメールが迷惑メールと判定されやすくなります。

設定前の状態

haai-to.com ではメールに Google Workspace を使っています。DNS に登録されていたメール関係のレコードは次のとおりでした。

  • MX:smtp.google.com
  • DKIM:google._domainkey に公開鍵あり
  • SPF:なし
  • DMARC:なし

メールは届いていたので、これまで気づいていませんでした。

設定する前に確認したこと

このドメインの名前でメールを送っているサービスはどれか

SPF には、ドメインの名前でメールを送るサービスをすべて書く必要があります。書き漏れがあると、そのサービスから送ったメールが迷惑メール扱いになります。たとえばメルマガ配信、問い合わせフォーム、請求書サービスなどが該当します。

haai-to.com では Google Workspace(Gmail)からしか送っていないので、Google だけを書けば足ります。

追加したレコード

Cloudflare ダッシュボードの「DNS」→「レコード」から、TXT レコードを2件追加しました。

SPF

タイプ: TXT
名前:   @
内容:   v=spf1 include:_spf.google.com ~all
  • include:_spf.google.com で、Google のメールサーバーからの送信を許可します
  • 末尾の ~all は、それ以外のサーバーから送られたメールを「怪しい」と扱ってもらう指定です(softfail)。いきなり拒否する -all よりも安全に始められます

ドメイン直下にはすでに Google のドメイン確認用の TXT があります。それとは別のレコードとして追加しました。同じ名前の TXT が複数あっても問題ありませんが、v=spf1 で始まるレコードは1件だけにする必要があります。

DMARC

タイプ: TXT
名前:   _dmarc
内容:   v=DMARC1; p=none; rua=mailto:<レポートの受信アドレス>
  • p=none は、受信側に何も処置させず、レポートを集めるだけのモードです。正規のメールが検証に通っているかを確かめないまま厳しい設定にすると、自分のメールまで届かなくなるおそれがあります。そのため、まずはここから始めます
  • rua= に書いたアドレスに、Google などの受信側から集計レポート(XML)が毎日届きます。件名に「Report domain: haai-to.com」と入るので、Gmail のフィルタでラベルを付けて受信トレイから外しておくと邪魔になりません

反映を確認する

DNS over HTTPS で、外から見えるかを確認しました。

curl -s "https://dns.google/resolve?name=haai-to.com&type=TXT"
curl -s "https://dns.google/resolve?name=_dmarc.haai-to.com&type=TXT"

Google の DNS(8.8.8.8)では、追加してすぐに SPF と DMARC の両方が見えました。

一方、Cloudflare の DNS(1.1.1.1)では、しばらく見えませんでした。少し前にネームサーバーを切り替えたばかりで、切り替え前のお名前.com の情報がキャッシュに残っていたためです。キャッシュの期限が切れれば見えるようになります。ネームサーバーを切り替えた直後にレコードを追加すると、DNS サーバーによって反映の時期がずれるので、慌てないようにしましょう。

DKIM が有効かを確認する

DKIM の公開鍵は DNS に登録されていましたが、それだけでは署名が付いているとは限りません。Google 管理コンソールで「認証を開始」していないと、メールに署名が付かないためです。

確認するには、haai-to.com のアドレスから社外のアドレスにメールを送ります。受信側の Gmail で「メッセージのソースを表示」を開き、次の3つが PASS になっているかを見ます。

SPF:   PASS
DKIM:  PASS
DMARC: PASS

DKIM が PASS でない場合は、Google 管理コンソールの「アプリ」→「Google Workspace」→「Gmail」→「メールの認証」で、ドメインの「認証を開始」を押します。

今後の予定

  • 2〜4週間ほど DMARC のレポートを見て、正規のメールが SPF と DKIM に通っているかを確認する
  • 問題がなければ、DMARC を p=quarantine(検証に失敗したメールを迷惑メールフォルダへ)に強める
  • 最終的には p=reject(検証に失敗したメールを受け取り拒否)を目指す

Cloudflare に DNS を移したことで、レコードの追加や確認がしやすくなりました。ブログの独自ドメイン設定のついでに、メールの設定も見直せてよかったです。

コメント

No comments yet