送信ドメインのDNSにDKIMの公開鍵(TXTレコード)を登録し、受信サーバー側で電子署名を検証してメールのなりすましを防ぐ仕組みのイメージ図

「No DKIM Record Found」エラーの原因と解決方法


著者: Maitham Al Lawati
翻訳: 古川 綾乃

この記事はPowerDMARCのブログ記事 How to fix “No DKIM record found”? の翻訳です。
Spelldataは、PowerDMARCの日本代理店です。
この記事は、PowerDMARCの許可を得て、翻訳しています。


このページをご覧になっている方は、以下のいずれかのメッセージを目にしたことがあるかもしれません。

DKIM は、送信メールに電子署名を付与し、受信側のMTAが送信元を検証できるようにする、広く利用されているメール認証規格です。
「No DKIM record found」というメッセージが表示された場合、お使いのドメインにDKIMが設定されていないことを意味します。

ドメインにDKIMを設定することで、セキュリティを向上させることができます。
当社のDKIMレコードチェッカーを使用して、ドメインがなりすまし攻撃に対して適切に保護されているか確認してください。

主なポイント

  1. DKIMは、送信メールの真正性を検証し、メールのなりすましを防ぐために重要な仕組みです。
  2. DKIMを設定することで、ドメインのセキュリティを強化し、メール配信率の向上が期待できます。
  3. DKIM署名付きメールはスパムと判定されにくくなり、受信トレイに届く可能性が高まります。
  4. DKIMレコードを公開するには、公開鍵と秘密鍵のペアを生成し、公開鍵をDNSのTXTレコードとして公開する必要があります。
  5. なりすましやフィッシング対策を強化するため、DKIMはSPFやDMARCと併せて運用することが推奨されます。

DomainKeys Identified Mail(DKIM)とは

DomainKeys Identified Mail(DKIM)は、第三者が正規の送信者になりすましてメールを送信することを防ぐためのメール認証規格です。
これは、受信者やメールサーバーが検証できる電子署名によって実現されます。
送信者はDKIM用の公開鍵と秘密鍵のペアを生成し、公開鍵をDNSのTXTレコードとして公開します。

送信メールには秘密鍵を用いて署名が行われ、受信側はDNSに公開された公開鍵を使ってその署名を検証します。
DKIMでは、送信者がメールの一部に電子署名を付与することで、そのメールが送信途中で改竄されていないことや、正当な送信元から送信されたことを検証できるようになります。
その主な目的は、メールアドレスのなりすましを防ぐことです。

なぜDKIMを設定する必要があるのか

おそらく、DKIMメール認証を導入するよう勧められたことがあるでしょう。
では、なぜ企業はDKIMを導入する必要があるのでしょうか。
また、このプロトコルを実装することでどのようなメリットが得られるのでしょうか。

企業は通常、組織内で大量のメールをやり取りし、日々のメール送信やメールマーケティングキャンペーンを実施しています。
DomainKeys Identified Mail(DKIM)は、組織が送信するあらゆるメールの信頼性を高める効果的なメール認証技術です。
これは、メールの検証、認証、および配信のためにRFC6376で規定されている仕組みの一つです。

DKIMは公開鍵と秘密鍵のペアを使用し、メール送信処理の最後にドメインがメールへ電子署名を付与できるようにします。
これにより、転送サービスやフィルタリングサービスを含む第三者によってメッセージが改竄されたかどうかを検証できます。
DKIMはメール配信率の向上に役立つだけでなく、ドメインのなりすまし対策にも有効です。

DKIMレコードの構文

検証プロセスの前提として、ドメインにDKIMを設定すると、送信サーバは各メールの送信時にDKIM署名を付与します。
メール送信時には、メッセージヘッダの内容からハッシュ値が生成され、そのハッシュ値に対して秘密鍵で署名が行われます。
生成されたDKIM署名は次のようになります。

DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; s=s1; d=yourdomain.com;
h=From:Date:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:To:Message-ID;
i=support@yourdomain.com; bh=wAsbKJhhfgqwOy8qkdk1MjM0NTY3ODkwMTI=;
b=aBecQ+7rHDjakhQs3DPjNJKSAAHHsgasZSv4i/Kp+sipUAHDJhaxhBGf+SxcmckhbsbHObMQsCNAMNBSHmnljHAGjaxk2V+baNSHKJBjhdjajdHHXASHSjlhcskOtc+sSHKASJKsbakbsjhhHJAJAHlsjdljka4I=+

DKIM-Signatureタグの説明

タグ 説明
v DKIMのバージョン
c ヘッダおよび本文の正規化(Canonicalization)方式
s DKIMセレクタ
d 署名ドメイン
h メッセージヘッダ
i 署名ドメインの識別子
bh 本文のハッシュ値
b ヘッダおよび本文に対するDKIM署名

この署名は送信サーバによってメールヘッダに追加されます。
これにより、受信サーバはメールを認証できる状態になり、メッセージが改竄されていないことを確認できます。
受信メールサーバは、まず以下の項目を確認することでメールの検証を開始します。

送信メールを認証する際、受信サーバはドメイン名とDKIMセレクタを使用してDNS参照を実行し、送信ドメインのDNSから公開鍵を取得します。
検索対象となるTXTレコードは次のようになります。

s1._domainkey.yourdomain.com

上記の例では、s1 = DKIMセレクタを意味します。

DKIMレコードの例

ドメイン用に生成されたDKIMレコードは次のようになります。
(このDNS TXTレコードはドメインのDNSに公開され、DKIM検証時に受信MTAが公開鍵を取得するために使用されます。)

v=DKIM1;
p=QUFBQUIzTnphQzF5YzJFQUFBQURBUUFCQUFBQWdRRE1zN1pVUVVTbnFnU3hSRWVxMnM4cm4zZDhRV1JDd0VncDlQQ0NMUXIzQWsraWs3WWp6QzhSVDN4R29NeXdFWGQ3emxXaWRGS2pBWU93Q3l1Sy9va1FiZVBqcnVHMkQyRWdmYU9hQ1c0N3F1U2dlOCtxNTRYQVMyMEhFc1c0TVVXN1dKanhHTGlNRjN6WnkxNjJoZFc2RmRhaFFralpFTWtsY2J3enZENngxdz09IA==

DKIM DNS TXTレコードのタグ説明

タグ 説明
v 使用するDKIMバージョンを指定します
p 受信サーバがDKIM検証時に取得する公開鍵を指定します

「No DKIM Record Found」メッセージを解決する方法

「No DKIM record found」というメッセージを解消するには、DNSにDKIMレコードを公開して、ドメインにDKIMを設定する必要があります。
当社の無料DKIMレコード生成ツールを使用すると、DNSへ公開するための正しい形式のDKIMレコードを簡単に生成できます。
必要な手順は次のとおりです。

手順内容

「No DKIM Record Found」を解決した後は?

DKIMだけでは、ブランドやドメインのなりすましを完全に防ぐことはできません。
ドメインのなりすまし、フィッシング攻撃、およびBEC(Business Email Compromise)からより高い保護効果を得るには、SPFとDMARCも併せて設定する必要があります。
これらの認証プロトコルを組み合わせることで、ドメインアラインメントを確認し、メールが正当な送信元から送信されていることを検証できます。

さらに、認証に失敗したメールを受信サーバがどのように処理するかを指定することもできます。
この仕組みにより、ドメインの偽装やなりすまし攻撃から組織を保護できます。

この記事が問題解決の助けとなり、「No DKIM record found」というメッセージに悩まされることがなくなれば幸いです。
無料トライアルに登録して、メール配信率の向上とメールセキュリティの強化をぜひご体験ください。