おつかれさまです。Dです。
メールの到達率を上げるためにSPFやDKIMの設定をすることがあると思うのですが
サーバー側でのDKIM設定は実際にやったことがなかったので、試しにやってみたいと思います。
今回はAlmaLinux8.7で実施していきます。
---------------------------------------------------------
# cat /etc/redhat-release
AlmaLinux release 8.7 (Stone Smilodon)
---------------------------------------------------------
まずはdkim設定に必要なパッケージをインストールします。
---------------------------------------------------------
# dnf install opendkim
Last metadata expiration check: 1:37:27 ago on Sat 25 Mar 2023 10:04:36 AM JST.
Dependencies resolved.
========================================================================================================================================================================
Package Architecture Version Repository Size
========================================================================================================================================================================
Installing:
opendkim x86_64 2.11.0-0.28.el8 epel 244 k
Installing dependencies:
libbsd x86_64 0.11.7-2.el8 epel 120 k
libmd x86_64 1.0.4-2.el8 epel 37 k
libopendkim x86_64 2.11.0-0.28.el8 epel 83 k
opendbx x86_64 1.4.6-21.el8 epel 56 k
sendmail-milter x86_64 8.15.2-34.el8 appstream 81 k
Transaction Summary
========================================================================================================================================================================
Install 6 Packages
Total download size: 621 k
Installed size: 1.4 M
Is this ok [y/N]: y
Downloading Packages:
(1/6): sendmail-milter-8.15.2-34.el8.x86_64.rpm 1.5 MB/s | 81 kB 00:00
(2/6): libmd-1.0.4-2.el8.x86_64.rpm 256 kB/s | 37 kB 00:00
(3/6): libopendkim-2.11.0-0.28.el8.x86_64.rpm 251 kB/s | 83 kB 00:00
(4/6): libbsd-0.11.7-2.el8.x86_64.rpm 296 kB/s | 120 kB 00:00
(5/6): opendbx-1.4.6-21.el8.x86_64.rpm 202 kB/s | 56 kB 00:00
(6/6): opendkim-2.11.0-0.28.el8.x86_64.rpm 1.8 MB/s | 244 kB 00:00
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 453 kB/s | 621 kB 00:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : opendbx-1.4.6-21.el8.x86_64 1/6
Installing : libmd-1.0.4-2.el8.x86_64 2/6
Installing : libbsd-0.11.7-2.el8.x86_64 3/6
Installing : libopendkim-2.11.0-0.28.el8.x86_64 4/6
Installing : sendmail-milter-8.15.2-34.el8.x86_64 5/6
Running scriptlet: sendmail-milter-8.15.2-34.el8.x86_64 5/6
Running scriptlet: opendkim-2.11.0-0.28.el8.x86_64 6/6
Installing : opendkim-2.11.0-0.28.el8.x86_64 6/6
Running scriptlet: opendkim-2.11.0-0.28.el8.x86_64 6/6
Verifying : sendmail-milter-8.15.2-34.el8.x86_64 1/6
Verifying : libbsd-0.11.7-2.el8.x86_64 2/6
Verifying : libmd-1.0.4-2.el8.x86_64 3/6
Verifying : libopendkim-2.11.0-0.28.el8.x86_64 4/6
Verifying : opendbx-1.4.6-21.el8.x86_64 5/6
Verifying : opendkim-2.11.0-0.28.el8.x86_64 6/6
Installed:
libbsd-0.11.7-2.el8.x86_64 libmd-1.0.4-2.el8.x86_64 libopendkim-2.11.0-0.28.el8.x86_64 opendbx-1.4.6-21.el8.x86_64 opendkim-2.11.0-0.28.el8.x86_64
sendmail-milter-8.15.2-34.el8.x86_64
Complete!
# dnf install opendkim-tools
Last metadata expiration check: 1:37:56 ago on Sat 25 Mar 2023 10:04:36 AM JST.
Dependencies resolved.
========================================================================================================================================================================
Package Architecture Version Repository Size
========================================================================================================================================================================
Installing:
opendkim-tools x86_64 2.11.0-0.28.el8 epel 84 k
Transaction Summary
========================================================================================================================================================================
Install 1 Package
Total download size: 84 k
Installed size: 201 k
Is this ok [y/N]: y
Downloading Packages:
opendkim-tools-2.11.0-0.28.el8.x86_64.rpm 606 kB/s | 84 kB 00:00
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 195 kB/s | 84 kB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : opendkim-tools-2.11.0-0.28.el8.x86_64 1/1
Running scriptlet: opendkim-tools-2.11.0-0.28.el8.x86_64 1/1
Verifying : opendkim-tools-2.11.0-0.28.el8.x86_64 1/1
Installed:
opendkim-tools-2.11.0-0.28.el8.x86_64
Complete!
※上記パッケージのインストールには「EPELリポジトリ」が必要なため、「dnf install epel-release」で事前にインストールしておきましょう。
dkim設定に必要な鍵を格納するディレクトリを作成します。
※設定ドメインについては例として「example.com」を使用します。
---------------------------------------------------------
# cd /etc/opendkim/keys/
# mkdir example.com
# chmod 750 example.com
# chown -R opendkim:opendkim /etc/opendkim/keys/
---------------------------------------------------------
設定するドメイン用の鍵を作成します。
※-Dオプションで鍵の出力先ディレクトリを指定し、-dオプションでドメインを指定します。
---------------------------------------------------------
# opendkim-genkey -D /etc/opendkim/keys/example.com/ -d example.com
---------------------------------------------------------
鍵作成時に指定したディレクトリ内にdkim設定用のTXTレコードが出力されているので確認し
ドメインが利用しているネームサーバーにレコード情報を登録しておきます。
※レコード登録については割愛します。
---------------------------------------------------------
# cat /etc/opendkim/keys/example.com/default.txt
default._domainkey IN TXT ( "v=DKIM1; k=rsa; "
"p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7SVO+gjyJu10yoFVUDSeQQvDa2Iwd40AgYatGN3ABFVl6MFf8cxtrqOwDE7PkYE5Wqfh4uY7G8JOEUOWo3tQnOACwiKuphKDvgg49LTYHjibOPKt7BrNH7A+RpI/FyYOQD1i0cWVqW3b00LWIDvI/F2ZbSAsQEmNO3JOYLlkgCwIDAQAB" ) ; ----- DKIM key default for example.com
---------------------------------------------------------
opendkimの設定ファイルを一部修正します。
----------------------------------------------------------------------------------------
# cp -ip /etc/opendkim.conf /etc/opendkim.conf.org
# vi /etc/opendkim.conf
※変更箇所
=========================================================
Mode sv
KeyTable /etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
=========================================================
----------------------------------------------------------------------------------------
Modeの「s」は署名(サイン)の意味でメール発信時に署名をする際に必要です。
設定ファイルで指定したKeyTableに使用する鍵を指定します。
----------------------------------------------------------------------------------------
# vi /etc/opendkim/KeyTable
※以下を追記
=========================================================
default._domainkey.example.com example.com:default:/etc/opendkim/keys/example.com/default.private
=========================================================
----------------------------------------------------------------------------------------
設定ファイルで指定したSigningTableに使用するドメインを指定します。
----------------------------------------------------------------------------------------
# vi /etc/opendkim/SigningTable
※以下を追記
=========================================================
*@example.com default._domainkey.example.com
=========================================================
----------------------------------------------------------------------------------------
opendkimサービスの起動を実施。
---------------------------------------------------------
# systemctl status opendkim
# systemctl start opendkim
# systemctl status opendkim
---------------------------------------------------------
postfixとopendkimの連携設定を追記しpostfixサービスの再起動を実施。
----------------------------------------------------------------------------------------
# vi /etc/postfix/main.cf
※以下を追記
=========================================================
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
=========================================================
# systemctl restart postfix
----------------------------------------------------------------------------------------
telnetでメールサーバーへ接続し動作テストを実施。
---------------------------------------------------------
# telnet localhost 587
mail from:noreplay@example.com
rcpt to:***@***
data
from:noreplay@example.com
to:d.***@***
subject:test
test
.
quit
---------------------------------------------------------
※宛先メールアドレスは会社用アドレスのため伏せておきます。
正常に署名されていれば、メール送信時のメールログに以下のようなログが記載されます。
---------------------------------------------------------
# cat /var/log/maillog
=========================================================
opendkim[906220]: 7952F12A73E: DKIM-Signature field added (s=default, d=example.com)
=========================================================
正常に署名されていれば受信したメールのヘッダを確認すると、以下のような項目が確認出来ます。
-----------------------------------------------------------------------
DKIM-Filter: OpenDKIM Filter v2.11.0 ****** 7952F12A73E
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=example.com;
s=default; t=1679817365;
bh=g3zLYH4xKxcPrHOD18z9YfpQcnk/GaJedfustWU5uGs=;
h=from:to:subject:Date:From;
b=rESgbDI0kshMS+b7p2i32yLuHgHaUQL44Ia4QxMIb9ekN3UGHU3Ga3qw1AcSM5fHz
GkkW+s0IouSI28xS2aFUYLYZ6h0OIGTzFnFmZUYUMZgRhiSplus33mK2xAVV/hgtDo
KIFIpES34xMTskuCLt75c/h5V8tecwlVwSt67SN0=
-----------------------------------------------------------------------
※Opendkimのバージョン情報が表示されてしまっているので、これを秘匿するには「SoftwareHeader no」をopendkim設定ファイルに追記すれば可能です。
【まとめ】
dkimの設定は難しいイメージがあったのですが、実際試してみると手軽に出来るので
一度試してみると良いかと思います。