CentOSにOpen DKIMを導入する

DKIMを利用してメールを送信する必要に駆られました。SPFだけではもうちゃんと送れなくてですね。
というわけで、重い腰を上げて導入します。CentOSでDKIMを利用したいときは、オープンソースのパッケージ「Open DKIM」一択です。

さあ、どんどん行きましょう。

epelレポジトリのインストール

DKIMのパッケージはEPELレポジトリにあるので、もしまだ導入していなければインストールしておきます。

$ sudo yum install epel-release

opendkimのインストール

インストールの準備として、まずは「yum search」でopendkimパッケージの確認をしておきます。

[dacelo@space ~]$ sudo yum search opendkim
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: download.cf.centos.org
 * epel: ftp.iij.ad.jp
 * extras: download.cf.centos.org
 * updates: download.cf.centos.org
mariadb                                                                                                                                                               | 2.9 kB  00:00:00
=================================================================================== N/S matched: opendkim ===================================================================================
libopendkim-devel.x86_64 : Development files for libopendkim
libopendkim.x86_64 : An open source DKIM library
opendkim.x86_64 : A DomainKeys Identified Mail (DKIM) milter to sign and/or verify mail

「yum info」でバージョン等の詳細も確認しておきましょう。

[dacelo@space ~]$ sudo yum info opendkim
[sudo] dacelo のパスワード:
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: download.cf.centos.org
 * epel: ftp.iij.ad.jp
 * extras: download.cf.centos.org
 * updates: download.cf.centos.org
インストール済みパッケージ
名前                : opendkim
アーキテクチャー    : x86_64
バージョン          : 2.11.0
リリース            : 0.1.el7
容量                : 589 k
リポジトリー        : installed
提供元リポジトリー  : epel
要約                : A DomainKeys Identified Mail (DKIM) milter to sign and/or verify mail
URL                 : http://opendkim.org/
ライセンス          : BSD and Sendmail
説明                : OpenDKIM allows signing and/or verification of email through an open source
                    : library that implements the DKIM service, plus a milter-based filter
                    : application that can plug in to any milter-aware MTA, including sendmail,
                    : Postfix, or any other MTA that supports the milter protocol.

opendkimパッケージのインストール

“yum install”コマンドでopendkimパッケージをインストールします。

[dacelo@space ~]$ sudo yum install opendkim
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: download.cf.centos.org
 * epel: ftp.iij.ad.jp
 * extras: download.cf.centos.org
 * updates: download.cf.centos.org
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ opendkim.x86_64 0:2.11.0-0.1.el7 を インストール
--> 依存性の処理をしています: libopendkim(x86-64) = 2.11.0-0.1.el7 のパッケージ: opendkim-2.11.0-0.1.el7.x86_64
--> 依存性の処理をしています: libbsd.so.0(LIBBSD_0.0)(64bit) のパッケージ: opendkim-2.11.0-0.1.el7.x86_64
--> 依存性の処理をしています: libbsd.so.0()(64bit) のパッケージ: opendkim-2.11.0-0.1.el7.x86_64
--> 依存性の処理をしています: libmilter.so.1.0()(64bit) のパッケージ: opendkim-2.11.0-0.1.el7.x86_64
--> 依存性の処理をしています: libopendbx.so.1()(64bit) のパッケージ: opendkim-2.11.0-0.1.el7.x86_64
--> 依存性の処理をしています: libopendkim.so.11()(64bit) のパッケージ: opendkim-2.11.0-0.1.el7.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ libbsd.x86_64 0:0.8.3-1.el7 を インストール
---> パッケージ libopendkim.x86_64 0:2.11.0-0.1.el7 を インストール
---> パッケージ opendbx.x86_64 0:1.4.6-6.el7 を インストール
---> パッケージ sendmail-milter.x86_64 0:8.14.7-6.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

=============================================================================================================================================================================================
 Package                                           アーキテクチャー                         バージョン                                          リポジトリー                            容量
=============================================================================================================================================================================================
インストール中:
 opendkim                                          x86_64                                   2.11.0-0.1.el7                                      epel                                   222 k
依存性関連でのインストールをします:
 libbsd                                            x86_64                                   0.8.3-1.el7                                         epel                                    85 k
 libopendkim                                       x86_64                                   2.11.0-0.1.el7                                      epel                                    75 k
 opendbx                                           x86_64                                   1.4.6-6.el7                                         epel                                    46 k
 sendmail-milter                                   x86_64                                   8.14.7-6.el7                                        base                                    71 k

トランザクションの要約
=============================================================================================================================================================================================
インストール  1 パッケージ (+4 個の依存関係のパッケージ)

総ダウンロード容量: 498 k
インストール容量: 1.2 M
Is this ok [y/d/N]: y
Downloading packages:
(1/5): libbsd-0.8.3-1.el7.x86_64.rpm                                                                                                                                  |  85 kB  00:00:00     
(2/5): libopendkim-2.11.0-0.1.el7.x86_64.rpm                                                                                                                          |  75 kB  00:00:00     
(3/5): opendbx-1.4.6-6.el7.x86_64.rpm                                                                                                                                 |  46 kB  00:00:00     
(4/5): opendkim-2.11.0-0.1.el7.x86_64.rpm                                                                                                                             | 222 kB  00:00:00     
(5/5): sendmail-milter-8.14.7-6.el7.x86_64.rpm                                                                                                                        |  71 kB  00:00:00     
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
合計                                                                                                                                                         1.1 MB/s | 498 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : libbsd-0.8.3-1.el7.x86_64                                                                                                                                    1/5 
  インストール中          : libopendkim-2.11.0-0.1.el7.x86_64                                                                                                                            2/5 
  インストール中          : opendbx-1.4.6-6.el7.x86_64                                                                                                                                   3/5 
  インストール中          : sendmail-milter-8.14.7-6.el7.x86_64                                                                                                                          4/5 
  インストール中          : opendkim-2.11.0-0.1.el7.x86_64                                                                                                                               5/5 
  検証中                  : libopendkim-2.11.0-0.1.el7.x86_64                                                                                                                            1/5 
  検証中                  : libbsd-0.8.3-1.el7.x86_64                                                                                                                                    2/5 
  検証中                  : opendkim-2.11.0-0.1.el7.x86_64                                                                                                                               3/5 
  検証中                  : sendmail-milter-8.14.7-6.el7.x86_64                                                                                                                          4/5 
  検証中                  : opendbx-1.4.6-6.el7.x86_64                                                                                                                                   5/5 

インストール:
  opendkim.x86_64 0:2.11.0-0.1.el7                                                                                                                                                           

依存性関連をインストールしました:
  libbsd.x86_64 0:0.8.3-1.el7               libopendkim.x86_64 0:2.11.0-0.1.el7               opendbx.x86_64 0:1.4.6-6.el7               sendmail-milter.x86_64 0:8.14.7-6.el7              

完了しました!

すんなり完了しました。

opendkimインストール後の確認

yum listをgrepしてちゃんとインストールされていることを確認します。

[dacelo@space ~]$ yum list installed | grep opendkim
libopendkim.x86_64                    2.11.0-0.1.el7                 @epel      
opendkim.x86_64                       2.11.0-0.1.el7                 @epel

OKですね。

opendkim 秘密鍵の作成

キーペア保存用のフォルダ作成

opendkimは標準で”/etc/opendkim/keys”以下にキーペア(秘密鍵/公開鍵)の情報が記載されたファイルを作成します。
この中に、ドメイン単位のフォルダを作って管理していく手法がよくとられています。
ここでもそれに習いましょう。

広告

[dacelo@space ~]$ sudo mkdir -v /etc/opendkim/keys/example.com

キーペア(秘密鍵/公開鍵)の作成

ではいよいよキーペアの作成ですが、これも特に難しいことはありません。
以下が作成コマンドです。

opendkim-genkey -D [ファイルの保存パス] -d [ドメイン名] -s [セレクタ名]

“-s”のセレクタ名というのが、電子署名ヘッダーに表示されるラベルになります。任意の文字列が設定できます。ここで日付を使う手法がよく取られています。が、レコードが多いDNSだったりすると、「これはどこのサーバで設定しているDKIMだろう…?」と後からわからなくなるので、サーバホスト名などを入れると良いと思います。

[dacelo@space ~]$ sudo opendkim-genkey -D /etc/opendkim/keys/example.com -d example.com -s 20220607space

このコマンドは特にリターンエコーがなく、静かに完了するので、ちゃんとできているか、念の為に確認してみましょう。

[dacelo@space ~]$ sudo ls -laht /etc/opendkim/keys/dacelo.space
合計 8.0K
-rw------- 1 root     root     318  6月  7 15:08 20220607space.txt
-rw------- 1 root     root     887  6月  7 15:08 20220607space.private

ちゃんとできてますね。
鍵ファイルである”181026.private”と公開鍵の情報が記載された”181026.txt”が作成されています。

opendkim-genkey: コマンドが見つかりません(opendkim-genkey: command not found)のエラーが出てうまくいかない場合!

/usr/sbin/opendkim-genkey はありますか?あればフルパスでアクセスするか、/sur/sbinを$PATHに追加しましょう。もしなければ、以下のコマンドを実行して、追加インストールします。この現象は、CentOS 8/RHEL8で起こることがあります。

$ yum install opendkim-tools

[dacelo@space ~]$ $ sudo yum install opendkim-tools
メタデータの期限切れの最終確認: 17:01:51 時間前の 2023年04月11日 16時11分25秒 に実施しました。
依存関係が解決しました。
=============================================================================================================================================================================================
 パッケージ                                       アーキテクチャー                         バージョン                                           リポジトリー                           サイズ
=============================================================================================================================================================================================
インストール:
 opendkim-tools                                   x86_64                                   2.11.0-0.28.el8                                      epel                                    84 k

トランザクションの概要
=============================================================================================================================================================================================
インストール  1 パッケージ

ダウンロードサイズの合計: 84 k
インストール後のサイズ: 201 k
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
opendkim-tools-2.11.0-0.28.el8.x86_64.rpm                                                                                                                    923 kB/s |  84 kB     00:00    
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
合計                                                                                                                                                         372 kB/s |  84 kB     00:00     
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                                                                                                                                     1/1 
  インストール中   : opendkim-tools-2.11.0-0.28.el8.x86_64                                                                                                                               1/1 
  scriptletの実行中: opendkim-tools-2.11.0-0.28.el8.x86_64                                                                                                                               1/1 
  検証             : opendkim-tools-2.11.0-0.28.el8.x86_64                                                                                                                               1/1 
インストール済みの製品が更新されています。

インストール済み:
  opendkim-tools-2.11.0-0.28.el8.x86_64                                                                                                                                                      

完了しました!

これで、opendkim-genkeyコマンドが使えるようになっているはずです。

キーペア(秘密鍵/公開鍵)ファイルの所有者変更

存在が確認できたら、所有者をrootからopendkimに変更します。rootのままだと、肝心のDKIMさんがこれらの鍵ファイルにアクセスできません。

opendkimサービスからファイルにアクセスできるようにファイルの所有者を変更します。chownコマンドを以下のように実行します。

[dacelo@space ~]$ sudo chown -R opendkim:opendkim /etc/opendkim/keys/dacelo.space

ちゃんと変わってるか確認。

[dacelo@space ~]$ sudo ls -laht /etc/opendkim/keys/dacelo.space
合計 8.0K
-rw------- 1 opendkim opendkim 318  6月  7 15:08 20220607space.txt
-rw------- 1 opendkim opendkim 887  6月  7 15:08 20220607space.private

OKですね。
ここまででキーペア(秘密鍵/公開鍵)ファイルの作成は完了です。

DNSの設定

それでは、作成できたDKIMの鍵情報を、DNSに登録していきましょう。

公開鍵の確認

DNSサーバーへ登録する公開鍵の情報は[ 20220607space.txt ]に記載されているので、内容を確認しましょう。

[dacelo@space ~]$ sudo cat /etc/opendkim/keys/dacelo.space/20220607.txt
20220607space._domainkey     IN      TXT     ( "v=DKIM1; k=rsa; "
          "p=ggoghskdhawwmfxgdudhvfqaabnkaussadgivxphvuhtchvwghnodvjxtbijlvoghdttymatylqglkxfdmsfwnikbiqbncukfkdjiwnprmsxuvt3swxroqxxokgq8ecrdxi%bofhxucbfblojudbZuyqwgubtprbzwaglgwneZjdodrbvgrwgkgbpimmsmtnujvcfucuhjfqarqixdldmplb" )  ; ----- DKIM key 20220607 for dacelo.space

この情報をDNSレコード(TXT)に登録します。

DNSサーバーへの公開鍵設定

ホスト名:20220607space._domainkey
タイプ:TXT
設定値:v=DKIM1; k=rsa; p=ggoghskdhawwmfxgdudhvfqaabnkaussadgivxphvuhtchvwghnodvjxtbijlvoghdttymatylqglkxfdmsfwnikbiqbncukfkdjiwnprmsxuvt3swxroqxxokgq8ecrdxi%bofhxucbfblojudbZuyqwgubtprbzwaglgwneZjdodrbvgrwgkgbpimmsmtnujvcfucuhjfqarqixdldmplb

設定値は、ダブルクオーテーションや改行を取って、上記のように;の後は半角スペース区切りでつなげます。

DKIM署名が有効ではないメールの扱いを設定するDKIMポリシー用レコード、ADSP(Author Domain Signing Practice)というのもあるんですが、今回はちゃんと署名しているメールが送れればあとはどうでもいいので、割愛します。

About: dacelo


Leave a Reply

Your email address will not be published. Required fields are marked *