「DKIMが設定されていない可能性があります」と出たとき|3ステップで確かめる

診断で「DKIMが設定されていない可能性があります」と表示されることがあります。要修正として出していますが、「可能性があります」と書いているとおり、本当に無いと確定したわけではありません。
先に結論を書きます。
- この表示は、利用中のメールサービスの既定のセレクタを実際に引いて、公開鍵が無かったときに出しています
- DKIMのセレクタ名は自由に決められるため、別の名前で署名している可能性が残ります
- 確かめ方は2つあります。自分宛にメールを1通送ってヘッダーを見る方法とセレクタ名が分かっている場合にそれを指定して診断し直す方法です
- 署名が付いていなければ、メールサービス側でDKIMを有効にします。DNS事業者の管理画面ではありません
- このドメインからメールを送らないのであれば、設定は要りません
この記事は、サイトやサービスでドメインを使っていて、DKIMを自分で設定したかどうかがはっきりしない方に向けて書いています。
用語をここで揃えます。すでにご存じの場合は読み飛ばしてください。
| 用語 | 意味 |
|---|---|
| DKIM | 送信時にメールへ電子署名を付け、その検証に使う公開鍵をDNSで公開する仕組み |
| セレクタ | 公開鍵を置く場所の名前。selector1._domainkey.example.jp の selector1 の部分 |
署名ドメイン(d=) |
その署名がどのドメインを名乗っているか |
| メールサービス | メールの送信を担うサービス。Google Workspace、Microsoft 365、レンタルサーバーのメール機能など |
DKIMが無いと何が起きるか
DKIMが無くてもメールが届かなくなるとは限りません。事実として言えるのは次の2つです。
1つ目は、メールが途中で書き換えられていないかを受信側が確認できないことです。DKIMはメールに電子署名を付ける仕組みで、署名が無ければその検証もできません。
2つ目は、転送されたときにDMARCの判定が難しくなることです。RFC 9989 セクション7.4 は、同窓会の転送アドレスや役職ごとの転送アドレスを例に挙げて、次のように書いています。
When such mail is delivered to the actual recipient mailbox, it will most likely fail SPF checks unless the RFC5321.MailFrom address is rewritten by the relaying MTA ... DKIM signatures will generally remain valid in these relay situations.
(そうしたメールが実際の受信者のメールボックスへ届くとき、中継するMTAがRFC5321.MailFromのアドレスを書き換えない限り、SPFの検査はほとんどの場合失敗する……DKIMの署名は、こうした中継の状況でもおおむね有効なままである)
「ほとんどの場合」「おおむね」と書かれているとおり、どちらも常にそうなるわけではありません。DKIMがあれば転送に強くなるとまでは言えませんが、SPFだけの状態より経路が1本増えます。
同じ節には、p=reject を宣言するドメインについての規定もあります。
It is therefore critical that domains that publish "p=reject" MUST NOT rely solely on SPF to secure a DMARC pass and MUST apply valid DKIM signatures to their messages.
(したがって、「p=reject」を公開するドメインが、DMARCの合格を確保するためにSPFだけに依存してはならず(MUST NOT)、自分のメッセージに有効なDKIM署名を適用しなければならない(MUST)ことは極めて重要である)
急いで直すかどうかの目安は次のとおりです。
| 状況 | どうするか |
|---|---|
| メールがいま届いていて、DMARCも設定していない | まず確認を優先してください。確かめてから判断できます |
DMARCを p=none で設定している |
先に確認を済ませてください。ポリシーを上げる前にDKIMが要ります |
DMARCを p=reject で運用している |
上のRFCの規定に当てはまります。確認と設定を優先してください |
この表示は何を根拠に出しているか
診断は、推測だけでこの表示を出しているわけではありません。次の条件をすべて満たしたときだけ「設定されていない可能性があります」と表示します。
- 試したセレクタで公開鍵が1つも見つからなかった
*._domainkeyのワイルドカードが設定されていない- MXとSPFから、既定のセレクタが分かっているメールサービスを判定できた
- そのドメインがDMARCを強制的なポリシー(
quarantineまたはreject)で運用していない
3番目が要点です。利用中のサービスが特定できて、そのサービスが決まったセレクタ名を使うと分かっている場合にだけ、実際にその名前を引きに行きます。そこに無かったという事実にもとづいた表示です。
4番目は、誤って断定しないための条件です。DMARCを強制的なポリシーで運用できているドメインは、何らかの経路で認証が通っている可能性が高くなります。その場合、既定とは別の名前で署名していると考えるほうが自然です。
ここで注意していただきたいのはDMARCのポリシーを強めればこの表示が消えるという意味ではないことです。表示のしかたが「特定できませんでした」に変わるだけで、鍵が無い状態は変わりません。
「見つからない」と「設定されていない」は別のことです
DKIMのセレクタ名には決まりがありません。RFC 6376 セクション3.1 は、セレクタの使いみちを次のように例示しています。
For example, selectors might indicate the names of office locations (e.g., "sanfrancisco", "coolumbeach", and "reykjavik"), the signing date (e.g., "january2005", "february2005", etc.), or even an individual user.
(たとえばセレクタは、事業所の名前(「sanfrancisco」「coolumbeach」「reykjavik」など)、署名した日付(「january2005」「february2005」など)、あるいは個々の利用者を示すこともある)
さらに、外部から辿られないようにする使い方も想定されています。
While some domains may wish to make selector values well-known, others will want to take care not to allocate selector names in a way that allows harvesting of data by outside parties.
(セレクタの値を広く知られるようにしたいドメインもあれば、外部の第三者によるデータの収集を許すような形でセレクタ名を割り当てないよう注意したいドメインもあるだろう)
外から名前を推測できないことは、仕様のうえで正常な状態です。よく使われる名前を試して見つからなくても不在の証明にはなりません。本サイトが「可能性があります」という書き方をしているのはこの理由です。
ステップ1/3: 自分宛にメールを1通送る
いちばん確実なのは実際に送られたメールを見ることです。
送信元は、そのドメインで普段使っている経路にしてください。サイトの問い合わせフォーム、普段使っているメールソフト、業務システムからの自動送信など、確かめたい経路を使います。
受信側は、ヘッダーを表示できるものであれば何でもかまいません。表示の手順はサービスごとに違います。
ステップ2/3: ヘッダーで署名を確認する
見るのは3か所です。3つは別々の条件で、揃って初めてDMARCに使える署名になります。
| 見る場所 | 何が分かるか |
|---|---|
DKIM-Signature: の行があるか |
署名そのものが付いているか |
Authentication-Results: の dkim= |
受信側が検証をどう判定したか |
DKIM-Signature: の d= |
その署名がどのドメインを名乗っているか |
判定に入る前に、読む行を1つに絞ってください。転送を経由したメールでは Authentication-Results: が複数並ぶことがあります。中継したサーバーが付けた行も、最後にあなたのメールボックスへ届けた側が付けた行も残るためです。
読むのは最後に受け取った側が付けた行です。中継した側の行を読むと別のドメインについての判定を自分の判定だと取り違えます。どの行かは Authentication-Results: の直後に書かれているサーバー名で見分けます。自分が使っている受信サービスの名前が入っている行を選んでください。
そのうえで判定します。
| 見えたもの | 意味 |
|---|---|
dkim=pass で d= が自分のドメイン |
DKIMは設定されています。表示は誤検知です |
dkim=pass で d= が配信サービスのドメイン |
署名は付いていますが、自分のドメインの鍵ではありません |
dkim=none、または DKIM-Signature: の行が無い |
署名が付いていません。ステップ3へ進んでください |
dkim=fail |
署名はありますが検証に失敗しています。別の記事で扱います |
DKIM-Signature: の s= に続く値が、そのメールで使われているセレクタ名です。これが分かれば、メール認証の診断でセレクタを指定して引き直せます。これが2つ目の確かめ方です。
ヘッダーの読み取りはメールヘッダー解析に貼り付けて行えます。貼り付けた内容はブラウザの中だけで処理され、サーバーには送信されません。
1通のメールに複数のDKIM署名が付くこともあります。その場合は d= が自分のドメインになっている署名があるかを見てください。
ステップ3/3: 署名が無ければメールサービス側で有効にする
DKIMの鍵はメールサービスが発行します。DNS事業者の管理画面には、鍵を作る機能がありません。ここを取り違えるとDNSの画面をいくら探しても見つからないことになります。
作業の順序は次のとおりです。
- いまのDNSレコードを控えます。 あとで戻せるようにするためのものです
- メールサービスの管理画面でDKIMを有効にします
- 表示された値をDNSに登録します
- メールサービス側で署名を開始します
3番目の形は2つに分かれます。どちらになるかはサービスによります。
| 形 | 何を登録するか | 特徴 |
|---|---|---|
| TXTレコード | 公開鍵そのもの | 鍵を入れ替えるたびにDNSを直します |
| CNAMEレコード | サービスが用意したホスト名 | 鍵の中身は自分のドメインに置きません。入れ替えはサービス側で完結します |
事業者ごとの登録手順は事業者別のガイドにあります。
登録した内容が外から見えるまでには時間がかかることがあります。同じ名前のレコードを以前に置いていた場合、そのレコードに設定されていた有効期間(TTL)のあいだ、古い内容が使われ続けることがあります。
| 以前に設定していたTTL | 古い内容が使われうる最大の時間 |
|---|---|
| 300秒 | 5分 |
| 3600秒 | 1時間 |
| 86400秒 | 24時間 |
時間が経っても反映されない場合はDNSの変更が反映されないときを読んでください。
反映されたかどうかはメール認証の診断で確認できます。そのうえでもう一度自分宛にメールを送り、dkim=pass が出ることを確かめてください。
直さなくてよい場合
このドメインからメールを送らないのであれば、DKIMは要りません。署名する対象のメールがないためです。
診断は、SPFで「このドメインからメールを送らない」と宣言しているドメインに対して、この表示を出しません。代わりに「DKIMの設定は不要です」と表示します。
条件は -all が書いてあることではありません。送信を許可する記述(include: や ip4: など)が1つも無く、all を - で閉じている形のときだけです。
| SPFレコード | 送らないと宣言しているか |
|---|---|
v=spf1 -all |
しています |
v=spf1 include:_spf.example.jp -all |
していません(このドメインは送信します) |
メールを使わないドメインの閉じ方はNull MXでメールを受け取らないドメインにするで扱っています。
似た表示との違い
DKIMに関する表示は4つあります。それぞれ意味が違います。
| 表示 | 意味 | 読む記事 |
|---|---|---|
| DKIMが設定されていない可能性があります | 既定のセレクタを引いて、そこに無かった | この記事 |
| DKIMセレクタを特定できませんでした | どのセレクタを試せばよいかが分からなかった | DKIMのセレクタが分からないとき |
| レコードは見つかるが検証できない | 書式の誤り、失効、重複 | DKIMの認証に失敗する原因 |
| 鍵が短い | 1024bit以下の鍵を使っている | DKIMの鍵長 |
元に戻すには
DKIMを有効にしたあとで問題が起きた場合、戻す順序があります。
- 先にメールサービス側の署名を止めます
- そのうえでDNSのレコードを消します
逆にすると署名は付くのに公開鍵を引けない状態になります。受信側は署名の検証に失敗し、DMARCを運用している場合はその結果に影響します。
すでに送信済みで配送中のメールにも署名が付いています。公開鍵を消すとそれらの検証も失敗します。急いで消さないでください。
戻す判断をするのはDKIMを有効にしたあとにメールの到達が悪化した場合などです。判断のためにステップ3の最初でいまのレコードを控えておいてください。
SPFも設定していない場合
この表示は、「DMARCが機能しない状態です」と同時に出ることがあります。DMARCレコードはあるものの、SPFもDKIMも無い状態です。
その場合は「DMARCが機能しない状態です」と出たときを読んでください。直す順序が変わります。
SPFはすでに設定してあり、DKIMを入れるかどうかを判断したい場合はSPFだけでDKIMは不要かを読んでください。
まずは全体を診断してみましょう
専門知識がなくてもいまの設定状況と具体的な対処方法をわかりやすく確認できます。
ドメイン設定を診断する利用中のDNS事業者が分かっているなら事業者別の設定手順から直接進めます。