Cloudflare で DKIM を設定する手順
目次
この記事でわかること
- Cloudflare で DKIM を扱う 3 つの方式(受信 / 送信 / 外部 SaaS 連携)
- それぞれのセットアップ手順
- DKIM レコードを Cloudflare DNS で登録する具体例
- よくある失敗パターン
Cloudflare における DKIM の整理
「Cloudflare で DKIM を設定」と言っても、シナリオが 3 つに分かれます。
方式 A: Email Routing(受信転送)の DKIM 検証
Cloudflare Email Routing は受信メールを自社ドメインで受け取って Gmail 等に転送するサービス。受信時の DKIM 検証は Cloudflare が自動で行います。利用者側で DKIM 鍵を発行する必要はありません。
方式 B: Workers Mail API(送信)の DKIM 署名
Cloudflare Workers から送信する場合、SendGrid / Resend / Mailgun 等の SMTP サービスを経由するのが一般的。この場合は経由先 SaaS で DKIM 鍵を発行・登録します。Cloudflare 自体は中継するだけです。
方式 C: 外部 SaaS(SendGrid 等)との TXT 連携
自社ドメインを Cloudflare DNS で管理しつつ、SendGrid / Mailgun 等から自社ドメイン名義で送信する場合、SaaS が指定する CNAME / TXT レコードを Cloudflare DNS に登録します。これが最も一般的なシナリオです。CNAME で送信サービス側へ鍵を委ねる仕組みと TXT 直書きとの違いはDKIM の CNAME 委譲とは|SaaS 送信で詳しく解説しています。
方式 C の具体手順(最も一般的)
ステップ 1: SaaS 側で DKIM 設定を開始
SendGrid を例にすると、「Settings → Sender Authentication → Authenticate Your Domain」で対象ドメインを入力。SendGrid が CNAME 3 本を提示します。
s1._domainkey.example.co.jp CNAME s1.domainkey.uXXXXX.wlYYYYY.sendgrid.net
s2._domainkey.example.co.jp CNAME s2.domainkey.uXXXXX.wlYYYYY.sendgrid.net
em1234.example.co.jp CNAME uXXXXX.wlYYYYY.sendgrid.net
ステップ 2: Cloudflare DNS に登録
Cloudflare ダッシュボード → 該当ドメイン → DNS → Records → Add record。Type に CNAME を選択し、SaaS から提示された値を 3 本登録します。
重要: 各レコードの Proxy status は「DNS only」(グレー雲) にします。プロキシ(オレンジ雲)にすると DKIM 検証時に CNAME 先が正しく解決されません。
ステップ 3: SaaS 側で検証
SendGrid の管理画面に戻り、「Verify」ボタンを押します。CNAME が正しく登録されていれば「Verified」になります。
ステップ 4: テストメール送信 + DKIM 検証
テストメールを Gmail に送信し、受信したメールのヘッダ Authentication-Results で dkim=pass を確認します。DKIM 確認の詳細は DKIM 確認 コマンド を参照。
自前で鍵を生成する場合(BYODKIM)
特定 SaaS の鍵生成に依存せず、自社で鍵管理したい場合は BYODKIM 方式を取れます。Cloudflare DNS には TXT レコードで公開鍵を直接登録します。
selector1._domainkey.example.co.jp TXT "v=DKIM1; k=rsa; p=<公開鍵>"
BYODKIM の詳細は BYODKIM とは|AWS SES / Cloudflare の設定 を参照。
Cloudflare 固有のよくある失敗
失敗 1: Proxy(オレンジ雲)が ON のままで CNAME 検証失敗
Cloudflare DNS の初期設定で CNAME が自動的にプロキシ ON になることがあります。DKIM の CNAME は 必ず DNS only(グレー雲) にします。
失敗 2: 値の改行コードやスペースで TXT が壊れる
TXT に公開鍵を貼るとき、改行や余分なスペースが混入すると DKIM 検証が失敗します。SaaS が提示した値を 手動編集せずコピー します。
失敗 3: 上限を超えた TXT 文字列分割
DNS TXT レコードの 1 文字列上限は 255 文字。これを超える長い公開鍵は複数文字列に分割する必要があります。Cloudflare UI は通常自動で分割しますが、API で登録する場合は要確認です。
失敗 4: Email Routing と SaaS 送信の混同
Email Routing は受信専用です。「Cloudflare で送信したい」場合は別途 Workers Mail API か外部 SaaS が必要になります。詳しくは Cloudflare Email Routing と認証 を参照。
DMARC との整合性
DKIM を設定したら、DMARC との整合性(alignment)も合わせて確認します。From ヘッダのドメインと DKIM 署名ドメインが一致していないと DMARC は fail します。詳しくは DMARC アライメント。
設定後の運用は DMARC レポート解析ツール おすすめ 7 選 で fail の集中箇所を継続観察します。
まとめ
- Cloudflare の DKIM 設定は受信(Email Routing)/ 送信(Workers)/ SaaS 連携 の 3 方式
- 最も一般的なのは方式 C(CNAME 委任で SaaS の鍵を使う)
- Cloudflare DNS では Proxy を必ず「DNS only」に
- 自社管理が必要なら BYODKIM で TXT 直接登録
- DMARC との整合性確認まで含めて 1 セット
設定したのに DKIM 署名が付かない・反映されない場合は、Cloudflare で DKIM が反映されないときの対処に切り分け手順をまとめています。
まずは現状を把握しましょう
自社ドメインのメール認証(SPF / DKIM / DMARC)の状態は、ドメイン番人の無料診断で 30 秒で確認できます。設定にお困りの場合はお問い合わせからご相談ください。