ビジネスメールのセキュリティ対策にはさまざまなものがあります。その中で「DKIM」という技術をご存じでしょうか。
「DKIM」は電子署名を用いてメールの正当性を証明する技術です。
似ているものとして「SPF」「DMARC」などのドメイン認証技術があります。
それぞれの技術は異なる目的や仕組みがあり、組み合わせることでよりセキュリティを高めることができます。
この記事では「ビジネスメールのセキュリティ対策を行いたい」「そもそも『DKIM』ってなに?」という方に向けて、ドメイン認証技術の1つであるDKIM(DomainKeys Identified Mail)の設定方法について解説していきます。
DKIMとは
「DKIM」とは「DomainKeys Identified Mail」の略で「SPF」と同様にドメイン認証技術の一つです。電子署名を用いてメールの正当性を証明できます。
DKIMの仕組み
- 送信メールサーバーより秘密鍵を用いて署名を付与したメールが送信される。
- 受信メールサーバーがメールを受信する。
- 受信メールサーバーがDNSへDKIMの正規の情報を問い合わせる。
- DNSへ登録されている公開鍵との認証チェックする。
事前にDNSへDKIMの正規の情報を登録しておきます。
メール送信の際に電子署名を付与し、メールを取得した際に受信者側がDNSより取得した正規のDKIM情報を用いて検証することでメールの正当性を確認します。
認証失敗時は受信者側のセキュリティ状況により、スパムメール扱いされ、受信者の迷惑メールフォルダに振り分けられることがあります。
また、受信サーバー側が受信拒否を行う場合があります。
送信者側がDMARCの設定を行っている場合は、DMARCの設定によりメールを「受信」「隔離」「拒否」します。
SPFとの違い
ドメイン認証方式で似ている認証技術にSPFが有ります。
SPFについては別記事で詳しく解説しています。
SPFは送信元のIPアドレスを元にドメイン認証を行います。IPアドレスを利用するため送信元の正当性への認証に効果が有ります。
しかし、メールの改ざんなどの検知は行わないためメールの内容の正当性を保証はできません。
DKIMは、メールの改ざんの検知を行うため、メール内容の正当性への認証に効果が有ります。
しかし、送信元の正当性は完全に保証できません。
よって、SPFとDKIMは似ている点が多いですが特徴が異なるため、ともに対応を行う事が望まれます。
設定方法
それでは実際に対応した際の設定を記載していきます。
設定環境
- CentOS 7
- Postfix
- DNSはお名前ドットコム様
※メールの送信は本サーバーにて行います。
設定の流れ
- SMTPサーバーにてDKIMの設定
- DNSへのDKIM情報の登録
- SMTPサーバーへのDKIMの反映
- SMTPサーバーにてDKIMの設定
DKIMの設定
epelをインストール ※インストール済みの場合はスキップ
$ sudo yum install epel-release
openDKIMをインストール
$ sudo yum install opendkim
※エラーになる場合はリポジトリを一時的に有効にしてインストール
$ sudo yum --enablerepo=epel install opendkim
鍵を保管場所を作成
$ sudo mkdir /etc/opendkim/keys/※任意のディレクトリを作成
例:$ sudo mkdir /etc/opendkim/keys/example.com
鍵の生成
$ sudo opendkim-genkey -D [ファイルの保存先のパス ※3で作成したディレクトリ] -b 2048 -d [ドメイン名] -s [セレクタ名 ※任意]
例:$ sudo opendkim-genkey -D /etc/opendkim/keys/example.com -b 2048 -d example.com -s 20220901
$ sudo chown opendkim:opendkim -R /etc/opendkim/keys/example.com/
各種テーブルの設定、DKIMの設定
$ sudo vi /etc/opendkim/KeyTable
※「#default._domainkey.example.com example.com:default:/etc/opendkim/keys/default.private」の下に追記
[セレクタ名 ※作成したセレクタ名]._domeinkey.[ドメイン名] [ドメイン名]:[セレクタ名 ※作成したセレクタ名]:[セレクタ名 ※鍵の名前].private
例:20220901._domainkey.example.com example.com:20220901:/etc/opendkim/keys/example.com/20220901.private
$ sudo vi /etc/opendkim/SigningTable
※「#example.com default._domainkey.example.com」の下に追記
*[※アカウントの@以降] [セレクタ名 ※作成したセレクタ名]._domainkey.[ドメイン名] ※全てのメールに適用させるためワイルドカードにて指定
例:*@example.com 20220901._domainkey.example.com
$ sudo vi /etc/opendkim.conf
※変更変更箇所のみ記載しています。
1.モードの変更
Mode sv ← 「Mode v」を変更
2.keyfileをkeytableの利用へ変更
#KeyFile /etc/opendkim/keys/default.private ※コメントアウト
KeyTable /etc/opendkim/KeyTable ※「#」を削除し有効化
SigningTable refile:/etc/opendkim/SigningTable ※「#」を削除し有効化
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts ※「#」を削除し有効化
InternalHosts refile:/etc/opendkim/TrustedHosts ※「#」を削除し有効化
$ sudo vi /etc/opendkim/TrustedHosts
127.0.0.1 ※末尾に追記
$ sudo vi /etc/sysconfig/opendkim
AUTOCREATE_DKIM_KEYS=NO ※末尾に追記
$ sudo systemctl restart opendkim
$ sudo systemctl enable opendkim ※自動起動の設定の設定のため必須では有りませんが、推奨します。
DNSへのDKIM情報の登録
次にDNSへの登録を行います。登録に必要な情報を抜き出します。
公開鍵の情報取得
$ cat /etc/opendkim/keys/[ファイルの保存先のパス ※鍵を作成したディレクトリ]/[鍵の名前].txt
例:$ cat /etc/opendkim/keys/example.com/20220901.txt
◎実行結果例:
20220901._domainkey IN TXT ( "v=DKIM1; k=rsa; "
"p=******************************************" ) ; ----- DKIM key 20220901 for example.com
※"P="の中身が公開鍵の情報です。
TXTレコードの設定
<セレクタ>._domainkey.<ドメイン名> IN TXT “v=DKIM1; k=rsa; p=xxxxxxxxxxxxxxxxxxx…"
例:20220901._domainkey.example.com IN TXT "v=DKIM1; k=rsa; p=xxxxxxxxxxxxxxxxxxx…"
そのため、先にDKIMの設定をPostfixへ反映させてしまうと、DNSの反映を待っている間正当なメールの認証が失敗し迷惑メール扱いを受ける場合がございます。
ご注意ください!!
Postfixの設定・反映
$ sudo vi /etc/postfix/main.cf
※末尾に追記
## DKIM
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
$ sudo postfix check ※Postfixのチェック
$ sudo systemctl restart postfix
以上で設定は完了です。
設定の確認
設定がうまくいっているか確認します。確認方法は複数あります。
DNSへの設定を外部サイトにて確認
確認可能なサイト:「MXTOOLBOX」内の「SuperTool」
https://mxtoolbox.com/SuperTool.aspx
- 上記サイトへ遷移する。
- 検索ボタン(ドメイン入力欄右のオレンジのボタン)を「DKIM Lookup」へ変更する。
- 対象のセレクタ名とドメインを入力し検索ボタンを押下する。
- 下記のように設定情報が表示される。
メールへの設定を確認
※Gmailを元に紹介します。
- Gmailユーザーへ設定した送信サーバーよりメールを送信する。
- 受信したGmailユーザーにて受信したメールのメッセージのソースを表示する。
- メールのヘッダーを確認しうまくいっていれば下記のようにDKIMの欄が「PASS」という表示になっている。
DKIMについて
以上、うまく完了しましたでしょうか?
今回は設定変更を行うためバックアップを取っての作業をお勧めいたします。
もし本記事にてご自身にてやってみよう!という初学者の方や専門知識をお持ちでない方、通常業務の片手間でシステム管理を行っておりじっくりとサーバーを触る時間がない!といった方にはご自身での作業はあまりお勧めいたしません。
メールサービス自体の設定を変更するので、失敗すると「今まで送れていたメールが送れない…」なんてことも…。
「DKIMの設定を自社でやるのが難しい…」という方はぜひオフィスドクターの利用をご検討ください!