CentOS8にOpenDKIMを導入してみた

CentOS8にOpenDKIMを導入してみた

2021年2月14日 0 投稿者: ぱる☆ミ

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