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)というのもあるんですが、今回はちゃんと署名しているメールが送れればあとはどうでもいいので、割愛します。