CentOS6から8へ移行するタイミングでVPSのサーバごと入れ替えたのですが、DNSレコードを確認しているタイミングで、DKIMレコードの移行が漏れている事に気がつきました・・・Centos8にopendkimを設定しているサイトが見当たらなかったので、英語のサイト(後述)を参考に設定した際の自分用メモというか次回用の備忘録です。
OpenDKIMのインストール
# dnf install opendkim
このコマンド一発でインストール自体は完了。ほんと、コンパイルも不要でさくっとインストールできる良い時代になったものですw
OpenDKIMの設定
/etc/opendkim.conf
Mode v
の行 を Mode sv
に修正。
vのみでは verify onlyとなり電子署名がなされず目的が達成できないので。
以下の行をそれぞれコメントアウトして有効にする
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
/etc/opendkim/SigningTable
minkymoon.jp全ドメインのメールに対応するDNSのTXTレコードを返答するサブドメイン名を記載する。セレクタ名は「default」(以降セレクタ名は全て同じ。紫色で表現)
*@minkymoon.jp default._domainkey.minkymoon.jp
/etc/opendkim/KeyTable
/etc/opendkim/SigningTable
で指定したセレクタ名のサブドメインに登録するDKIMレコードと紐づく秘密鍵のファイルを指定する default._domainkey.minkymoon.jp minkymoon.jp:default:/etc/opendkim/keys/default.private
/etc/opendkim/TrustedHosts
自分自身と自分のドメインのホストは信頼する 127.0.0.1
::1
*.minkymoon.jp
公開鍵と秘密鍵を作成
公開鍵と秘密鍵の作成手順
# cd /etc/opendkim/keys/
# opendkim-genkey -b 2048 -d minkymoon.jp -D /etc/opendkim/keys -s default -v
オプションは、-b 鍵長 -d ドメイン名 -D ファイルを保存するディレクトリ名 -s セレクタ名 -v 結果の冗長表示
注意)さくらインターネットではDNSレコードを254バイトまでしか登録できないという制限があるので、鍵長は2048bit(256byte)ではなく1024bit(128byte)で作成する必要がありました。
opendkim-genkeyの実行結果
opendkim-genkey: generating private key
opendkim-genkey: private key written to default.private
opendkim-genkey: extracting public key
opendkim-genkey: DNS TXT record written to default.txt
DKIMレコードの動作確認
DNSレコードを登録する
今回の場合は default._domainkey.minkymoon.jp ドメインのTXTレコードに、/etc/opendkim/keys/default.txt の内容(公開鍵)を登録します。
(実際に運用しているセレクタ名は別なので、上記ドメイン名を引いてもTXTレコードは出てきません)
DKIMレコードを確認する
# opendkim-testkey -d minkymoon.jp -s default -vvv
opendkim-testkeyの実行結果
opendkim-testkey: using default configfile /etc/opendkim.conf
opendkim-testkey: key loaded from /etc/opendkim/keys/default.private
opendkim-testkey: checking key 'default._domainkey.minkymoon.jp'
opendkim-testkey: key not secure ←このエラーは問題なし。DNSSECを使っていないから表示される。
opendkim-testkey: key OK
opendkimで使用するユーザーをpostfixグループに追加する
# gpasswd -a postfix opendkim
opendkimの自動起動設定とopendkimを起動する
# systemctl start opendkim
# systemctl enable opendkim
postfixの設定変更
postfixでの送信時にopendkimで署名するよう設定する
/etc/postfix/main.cf
設定ファイルの最終行あたりに下記の内容を追記する
# Milter configuration
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
postfixを再起動して設定を反映させる
# systemctl restart postfix
これで設定は完了。テストメールを送信したところ、以下のように正しくDKIMで署名されたヘッダが追加されていることを確認しました。
Received: by www.minkymoon.jp (Postfix, from userid 0)
id E67759BB2D; Sun, 14 Feb 2021 03:45:02 +0900 (JST)
DKIM-Filter: OpenDKIM Filter v2.11.0 www.minkymoon.jp E67759BB2D
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=minkymoon.jp; s=default;
t=1613241902; bh=0A9(中略)aw=;
h=From:To:Subject:Date:From;
b=p8O(中略)KBg=
参考にしたサイト
https://www.linuxbabe.com/redhat/set-up-opendkim-centos-8-rhel-8
コメント