BLOG ベアメールブログ
2021.03.02 (火)
HowToガイドDKIMを導入するには? 仕組みや設定方法を解説
Last Updated on 2024.08.5
「DKIM」は、電子署名を用いてメール送信者のドメインを認証する技術です。2024年2月以降、Googleアカウント宛に1日5000通以上送信するユーザはSPFとDKIMによる認証、そしてDMARCの導入が義務化されました。ここでは、DKIMの仕組みや特長、導入・設定方法などについて解説します。
※本記事は最新の情報をもとに、2023/12/14に内容を更新いたしました。
目次
送信ドメイン認証「DKIM」とは
DKIMとは
DKIMは、「DomainKeys Identified Mail」の略称であり、送信者がメールに電子署名を付与し、受信者が署名の検証を行うことで、メールの内容がメール作成時点(オリジナル)から改竄されていないことを検証する仕組みです。
2005年頃、検索エンジン大手の米Yahoo!社とネットワーク関連機器大手の米Cisco社の2社は、偽装メールに対する技術開発で協力しはじめます。Yahoo!が持つ「DomainKeys」と、Ciscoが持つ「Identified Internet Mail(IIM)」という2つの署名ベースの認証技術が統合され、標準化が進められました。その結果、2007年5月に「RFC4871」として公開され、現在のDKIMの原型が出来上がりました。その後はいくつかの変遷をへて、2011年9月にRFC6376へ、2013年6月にSTD76(Standard)として規定され、インターネット標準の送信認証技術として認知されています。
「RFC 6376 – DomainKeys Identified Mail (DKIM) Signatures」https://datatracker.ietf.org/doc/html/rfc6376
DKIMの仕組み
DKIM認証の仕組みは、まず送信メールサーバー上で秘密鍵の所有者のみが作成可能な「電子署名」をヘッダフィールドにDKIM-Signatureとして付与します。秘密鍵に対応する公開鍵は、DKIMレコードとしてDNSサーバーに予め登録しておきます。電子署名されたメールはインターネットを通じて送信され、受信側メールサーバーのもとに到着します。このとき、受信側はDNSサーバーから取得した公開鍵情報を使用してメールに付与された電子署名を検証することで、送信者の身元と改竄されていないことをチェックします。
また、万が一メールが改竄されてしまった場合は電子署名の検証自体ができなくなるため、DKIMによってメールの内容が改竄されていないかもチェックすることができるのです。
DKIMによるメール保護のステップ
ステップ1 : DKIMに利用する秘密鍵を送信メールサーバーに登録する。ステップ2 : DKIMに利用する公開鍵は、送信ドメインの DNSサーバー(TXT レコード)に登録する。
ステップ3 : メール送信時に、メールのヘッダ・本文から作成したハッシュと送信メールサーバーの秘密鍵を使って電子署名を付与する。
ステップ4 : 受信者はメールのヘッダ・本文からハッシュを作成する。また、公開鍵を利用して電子署名からハッシュを復号し、受信者が作成したハッシュと比較することで偽装および改竄がされていないことを確認。
SPF・DKIM・DMARCの特長とメリット
ここでは、同じく送信ドメイン認証技術であるSPF・DMARCと比較しながら、DKIMの特長・メリットを解説します。
SPFの特長
・認証方式…送信メールサーバーのIPアドレスをもとに認証
・導入コスト…DNSにSPFレコードを設定するだけなので、導入コストが非常に低い
・メリット…送信元メールサーバーの正当性を確認できる。導入が簡単であり、最も普及している
DKIMの特長
・認証方式…送信メールサーバーで作成した電子署名をもとに認証
・導入コスト…メールサーバで電子署名を行う仕組みを実装する必要がある
・メリット…転送など配送経路に影響されない。配送経路上でメール内容が変更されると認証が失敗するため、改竄を検知できる。
DMARCの特長
・認証方式…ヘッダFromのドメインと、SPF・DKIMの認証結果をもとに認証
・導入コスト…導入自体はDNSにDMARCレコードを設定するだけなので容易。認証に合格するにはヘッダFromのドメインと、SPFまたはDKIMで認証したドメインが一致している必要がある
・メリット…ヘッダFromを中心に認証を行うため、悪意のある第三者によるなりすましを防げる。また認証失敗時のメールの処理を指定することができるため、自社ドメインになりすました可能性のあるメールを排除することができる。メール受信元のプロバイダからSPF・DKIMの認証結果のレポートを受け取ることができる。
SPFは送信に利用されたIPアドレスを確認する方式のため、送信者の「身元の正当性」はチェックできても、メールの内容についてはチェックすることができません。しかし、DKIMはこれらヘッダ情報への改竄も検知できるため、なりすましを防ぎメールの信頼性を強化できると言えます。 このように電子署名を使って「メール本文の改竄」を検知できることが、DKIMが持つ最大のメリットと言えます。
今までは送信ドメイン認証はSPFの導入だけでも十分とされていましたが、なりすましメールの巧妙化や、メールによるフィッシング詐欺やサイバー攻撃の脅威も高まる中で、さらなるメールの安全性を確保するためにDKIMやDMARCの導入も求められるようになってきています。
DKIMの導入・設定方法
DKIMを利用するためには、電子署名を付与する仕組みを用意する必要があります。ここではDKIM署名の種類と、自社メールサーバーで署名を行うにはどのような作業が必要なのか、簡易的な手順について解説します。
DKIMの種類
DKIMの電子署名には「作成者署名」と「第三者署名」の2種類があります。
作成者署名
メール送信者(作成者)のドメインで署名を付与する方式です。
自社のメールサーバで署名を行い、自社ドメインのDNSサーバにDKIMの公開鍵を設定します。
導入の手間はかかりますが、ヘッダFrom(メールソフト上で表示される差出人)のドメインとDKIM認証ドメインを一致させられるため、DMARCの認証にも合格することができます。
第三者署名
メール送信者(作成者)のドメインではなく、第三者のドメインで電子署名を付与する方式です。
例えばメール配信サービスを利用している場合、そのメールサービスのドメインを署名に使用し、メールへの署名の付与や公開鍵の設定などもサービス事業者が行うというパターンです。
利用者は特に対応することがないため導入のハードルは低いですが、ヘッダFromとDKIM認証ドメインが一致しないためDMARCの認証が失敗してしまいます。
メール作成・配信に外部サービスを利用する場合や、自社でDKIMを利用する仕組みを構築するリソースが無い場合は、第三者署名を利用するという選択肢もあるでしょう。ただしDMARCを導入したい場合は、第三者署名では認証が失敗してしまうため、作成者署名に対応する必要があります。
外部メールサービスを利用している場合でも、自社のドメインをDKIM署名に使用するカスタマイズを行うことでDMARC認証に合格することは可能です。具体的な対応方法については、利用中のサービスの仕様によって異なるためサービスの指示に従ってください。
DMARC認証とDKIMの関係について詳しく知りたい方はこちらの記事をご参照ください。
DMARCのアライメントとは? DMARC認証をクリアするためのポイント | ベアメールブログ
DKIMの導入手順
DKIMを導入する際に必要な作業・流れを簡単に説明します。ここではDKIMの署名を行うためのツールとして「OpenDKIM」を使用するものとしています。
OpenDKIMとは
OpenDKIMは、DKIMサービスを提供するためのオープンソースパッケージを開発・保守するためのコミュニティです。米Sendmail社によって開発および保守されているオープンソースの「dkim-milter」パッケージをもとにプロジェクトが開始されました。
OpenDKIMのパッケージには、DKIMサービスを実装するライブラリと、PostfixやSendmailといったMTAに機能を提供するミルターベースのフィルターアプリケーションで構成されています。
※ミルター(milter):PostfixやSendmailなどのMTAで利用できる拡張機能のこと、またはそのインターフェースのこと。
参考:OpenDKIM http://www.opendkim.org/ (2021/03/02/確認)
DKIM設定の流れ
(1)OpenDKIMパッケージのインストール
リポジトリからDKIMのパッケージをインストールします。
(2)OpenDKIMの設定
OpenDKIMのコンフィグファイルにドメインやログ、モード(送信時の署名・受信時の確認)など基本的な項目を設定します。
(3)MTAとの紐付け
OpenDKIMはPostfixやSendmailといったMTAと紐付ける設定をする必要があります。MTAのconfigにOpenDKIMのmilterを使用する記述を追加し、MTAを再起動します。
(4)鍵ペアの作成
鍵を格納するためのディレクトリを作成し、対象のドメイン・セレクタ名・保存先のディレクトリを指定して鍵を作成します。自動で鍵を作る設定になっている場合もありますが、自動作成の設定はオフにし、自分で鍵を作成することが推奨されています。
(5)DNSへの公開鍵の登録
作成した鍵ペアのうち、公開鍵をDNSにTXTレコードとして登録します。
作成した公開鍵を登録する場合のFQDNは以下のようになります。
<セレクタ>._domainkey.<ドメイン名>
TXTレコードはタグを利用することで、公開鍵データだけでなく方式などを指定することができ、具体的なレコードの例としては以下のような形になります。
xxxxxxx._domainkey.sample.jp 300 IN TXT “v=DKIM1; k=rsa; t=y; p=xxxxxxxxxxxxxxxxxxx…
【DKIMレコードのタグの意味】
v Keyレコードのバージョン番号を表し、「v=DKIM1」と記す。必須ではないが、レコードの最初に記述することが推奨されている。 k 電子署名の鍵の形式を表し、現在RSA形式のみサポートしているため「k=rsa」と記す。省略可能。 t フラグを指定する。コロン(:)で区切ることで複数指定することもできる。指定できるフラグには「y」と「s」があり、「y」はDKIMの運用がテストモードであることを示す。yのフラグが立っている場合、受信者は認証成功の可否はメールの処理に反映しない。 p 公開鍵のデータを保持するタグのため、必須。鍵データはBase64でエンコードする。
(6)動作確認
設定完了後は、実際にメールを送信してメールヘッダで確認するか、確認ツールなどを使用して正しく認証できているか動作確認をするようにしましょう。
DKIMの確認方法については、こちらの記事でも詳しく解説しています。
「なりすましメール対策「SPF」「DKIM」の具体的な確認方法」|ベアメールブログ
参考:
一般財団法人日本データ通信協会「送信ドメイン認証技術導入マニュアル第2版 ~第4章~」https://www.dekyo.or.jp/soudan/data/anti_spam/04-M11-C4.pdf
一般社団法人日本ネットワークインフォメーションセンター「送信ドメイン認証運用実践 DKIM設定・運用」https://www.nic.ad.jp/ja/materials/iw/2011/proceedings/s03/s03-03.pdf
一般財団法人インターネット協会「DKIM (Domainkeys Identified Mail)」https://salt.iajapan.org/wpmu/anti_spam/admin/tech/explanation/dkim/#20(2021/03/02/確認)
DKIM導入後の注意点
DKIMは導入して終わりではなく、運用時にもいくつか注意すべき点があります。せっかく導入したDKIMの認証を正しく機能させるためにも、以下について気をつけるようにしましょう。
鍵の管理
DKIMの電子署名の作成に使用した秘密鍵は、外部に漏洩しないよう管理する必要があります。もし秘密鍵が漏れてしまうと、第三者が同じ電子署名を作成できてしまうため、認証が成立しなくなります。
また、セキュリティの観点から秘密鍵・公開鍵のペアは定期的に変更することが望ましいとされています。鍵ペアの更新の際には、古い秘密鍵で署名したメールがまだ受信されていない可能性も鑑み、古い公開鍵もDNSに一定期間は残しておく必要があります。DKIMは「セレクタ」を利用することで同一ドメインに複数の鍵を設定することができるので、新しい鍵を並行してDNSを公開するようにしましょう。古い公開鍵は1週間〜10日ほど残し、その後削除するようにします。
DNSの運用
DKIMを導入すると以前に比べDNSへの負荷が高まります。DNSクエリ(DNSへのリクエスト/問い合わせ)が失敗してしまうとDKIM認証も失敗(DKIM fail)の原因になってしまうため、もし自社でDNSサーバーを運用している場合はDNSの監視運用についても以前より注意すべきでしょう。
OpenDKIMの監視
OpenDKIMが正しく稼働しているかも監視しておくことが望ましいでしょう。MTA(Postfix、Sendmail)のMilterが起動しているか、受信時の確認結果および送信時の署名結果についてのログを監視することで運用監視が可能です。
DKIMの普及率と導入の必要性
最後に、DKIMの普及率と必要性について解説します。
DKIMの普及率
総務省が発行している「電気通信事業者の送信ドメイン認証結果」の調査報告書によれば、2023年3月末時点のDKIMの普及率は73.8%とされています。これは電気通信事業者4社が受信したメールのうち、DKIMが設定されていた割合であり、必ずしもドメイン全体での普及率を表すものではありません。
同様の調査によれば、SPFが設定されていた割合は96.7%のため、SPFの普及率は非常に高いことがうかがえます。
参考: 総務省「迷惑メール対策」電気通信事業者4社の送信ドメイン認証結果https://www.soumu.go.jp/main_sosiki/joho_tsusin/d_syohi/m_mail.html(2023/12/13/確認)
DKIM導入の必要性
ECやオンラインバンキングの普及によって、送信元のみならず「内容の改竄」を防ぐ仕組みが注目されています。コロナ禍の影響からオンラインでの消費者行動が増えている今、メールは商取引の正当性を担保する重要な「証跡」です。SPFでは「送信者の身元」を検証し、DKIMでは「メールの内容が改竄されていないこと」を検証するため、本来は2つでひとつのソリューションと言えます。
DKIMはその設定の手間から敬遠されがちであり、SPFに比べると普及率がやや低くなっています。しかし巧妙化する迷惑メールへの対策として、メール送信者は SPF に加え DKIM への対応もより一層求められるようになっています。DKIM の普及率が高まるにつれ、DKIM に対応していないメールは迷惑メールとして扱われてしまい、宛先に届かなくなってしまうということも起こりかねません。
実際に2024年2月から適用される新しいGmailの送信者ガイドラインでは、1日5000通以上のメールをGmail宛に送信する場合はSPFとDKIM両方の認証が義務付けられることになりました。加えてDMARCの導入、認証に合格する必要もあるため、該当するユーザはDKIMも作成者署名(ヘッダFromのドメインで署名を行う)への対応も検討すべきでしょう。
自社システムでDKIM対応が難しいなら
ベアメール メールリレーサービスでは、お客さまシステムにDKIM認証の仕組みを導入せずとも、DKIMに対応できる「SMTP DKIMオプション」を提供しています。
ベアメール メールリレーサービスは、携帯キャリアやメールプロバイダからのブロックを避けて、高い到達率でメールを配信するサービスです。お客さまシステム/メールサーバがどこにあっても、メールのリレー設定をするだけで利用可能です。
お客さまシステムよりベアメールへSMTPでメールをリレーいただくことで、ベアメール上でお客さまのドメインを使用してDKIMの電子署名を付与します。お客さまシステムに手を加えることなく、DKIMの公開鍵をDNSサーバーに登録するだけで手軽にDKIM対応が可能となります。ご興味をお持ちの方は、ぜひお気軽にお問い合わせください。
まとめ
ここでは、DKIMの歴史や仕組み・特徴・ 設定方法と運用の注意点・ 普及率などについて解説してきました。DKIMは導入に一定の手間がかかります。しかし、SPFと併せることで強固な送信ドメイン認証システムを構築できるというメリットがあります。迷惑メールと判定されず、メールをより確実に相手に届けるためにも、DKIMの導入を検討してみてはいかがでしょうか。