FreeBSD 14
Sponsored Link

Mail サーバー : DKIM の設定2024/07/18

 

Postfix に DKIM (Domain Keys Identified Mail) を設定します。

生成した公開鍵を DNS に登録するため、DNS サーバー が必要となります。

[1] OpenDKIM をインストールして設定します。
root@mail:~ #
pkg install -y opendkim
# DKIM を設定するドメイン用のディレクトリ作成

root@mail:~ #
mkdir -p /usr/local/etc/mail/keys/srv.world
# 鍵ペアを生成
# -D (鍵を格納するディレクトリ)
# -d (ドメイン名)
# -s (セレクター名) ⇒ 任意の名称で OK

root@mail:~ #
opendkim-genkey -D /usr/local/etc/mail/keys/srv.world -d srv.world -s $(date "+%Y%m")

root@mail:~ #
chown -R mailnull:mailnull /usr/local/etc/mail/keys/srv.world

root@mail:~ #
ls -l /usr/local/etc/mail/keys/srv.world

total 9
-rw-------  1 mailnull mailnull 920 Jul 18 14:22 202407.private
-rw-------  1 mailnull mailnull 311 Jul 18 14:22 202407.txt

root@mail:~ #
mv /usr/local/etc/mail/opendkim.conf /usr/local/etc/mail/opendkim.conf.org

root@mail:~ #
vi /usr/local/etc/mail/opendkim.conf
# 新規作成
# Mode : s = sign
# Mode : v = verify
Mode                    sv
Socket                  inet:8891@localhost
Syslog                  Yes
# 公開鍵を登録するネームサーバー
# 複数指定する場合はカンマ (,) 区切り
Nameservers             10.0.0.30
KeyTable                /usr/local/etc/mail/keys/KeyTable
SigningTable            refile:/usr/local/etc/mail/keys/SigningTable
ExternalIgnoreList      refile:/usr/local/etc/mail/keys/TrustedHosts
InternalHosts           refile:/usr/local/etc/mail/keys/TrustedHosts

root@mail:~ #
vi /usr/local/etc/mail/keys/KeyTable
# 新規作成
#
# (セレクター名)._domainkey.(ドメイン名) (ドメイン名):(セレクター名):(プライベートキーのパス)
#
# 複数のドメインを扱う場合は 改行して同様に登録する

202407._domainkey.srv.world srv.world:202407:/usr/local/etc/mail/keys/srv.world/202407.private

root@mail:~ #
vi /usr/local/etc/mail/keys/SigningTable
# 新規作成
#
# *@(ドメイン名) (セレクター名)._domainkey.(ドメイン名)
#
# 複数のドメインを扱う場合は 改行して同様に登録する

*@srv.world 202407._domainkey.srv.world

root@mail:~ #
vi /usr/local/etc/mail/keys/TrustedHosts
# 新規作成
# 信頼するホストを登録
127.0.0.1
::1

root@mail:~ #
chown mailnull:mailnull /usr/local/etc/mail/keys/KeyTable \
/usr/local/etc/mail/keys/SigningTable \
/usr/local/etc/mail/keys/TrustedHosts

root@mail:~ #
chmod 600 /usr/local/etc/mail/keys/KeyTable \
/usr/local/etc/mail/keys/SigningTable \
/usr/local/etc/mail/keys/TrustedHosts

root@mail:~ #
service milter-opendkim enable

milteropendkim enabled in /etc/rc.conf
root@mail:~ #
service milter-opendkim start

Starting milteropendkim.
[2] Postfix の設定です。
root@mail:~ #
vi /usr/local/etc/postfix/main.cf
# 最終行に追記
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept

root@mail:~ #
pw groupmod mailnull -m postfix

root@mail:~ #
service postfix reload

[3] DNS サーバー登録用の公開鍵を確認します。
# 公開鍵の内容

root@mail:~ #
cat /usr/local/etc/mail/keys/srv.world/202407.txt

202407._domainkey       IN      TXT     ( "v=DKIM1; k=rsa; "
          "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDFeK91Tel9nVcbMfltqWJNIm907AcXBVm/kf+zFE5LDES5wjJTdOB2CEaIuyvLq3xUzVb6FXnEjJBOOy9uAvBABe6dI96DEilFZB8U7LubRmIz4LZ+bTEffp4+ma+txtdjLYA1kdRO6KYFtxDK96aK/P1rJEm6IVnHL+JaBMs5OQIDAQAB" )  ; ----- DKIM key 202407 for srv.world

# ゾーンファイルへの登録は不要な文字を除いて 1 行にする

root@mail:~ #
sed "s/^\t *//g" /usr/local/etc/mail/keys/srv.world/202407.txt | perl -pe 's/\n//g' | sed "s/( //g" | cut -d')' -f1

202407._domainkey       IN      TXT     "v=DKIM1; k=rsa; ""p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDFeK91Tel9nVcbMfltqWJNIm907AcXBVm/kf+zFE5LDES5wjJTdOB2CEaIuyvLq3xUzVb6FXnEjJBOOy9uAvBABe6dI96DEilFZB8U7LubRmIz4LZ+bTEffp4+ma+txtdjLYA1kdRO6KYFtxDK96aK/P1rJEm6IVnHL+JaBMs5OQIDAQAB"
[4] DNS サーバーへ公開鍵を登録します。
BIND のゾーンファイル へ登録する場合を例にします。
root@dns:~ #
vi /usr/local/etc/namedb/primary/srv.world.wan
.....
.....
# 最終行に追記
202407._domainkey       IN      TXT     "v=DKIM1; k=rsa; ""p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDFeK91Tel9nVcbMfltqWJNIm907AcXBVm/kf+zFE5LDES5wjJTdOB2CEaIuyvLq3xUzVb6FXnEjJBOOy9uAvBABe6dI96DEilFZB8U7LubRmIz4LZ+bTEffp4+ma+txtdjLYA1kdRO6KYFtxDK96aK/P1rJEm6IVnHL+JaBMs5OQIDAQAB"

root@dns:~ #
rndc reload
[5] メールサーバー側で確認します。
root@mail:~ #
dig 202407._domainkey.srv.world. txt

.....
.....

# 登録した内容の応答があれば OK
;; ANSWER SECTION:
202407._domainkey.srv.world. 86400 IN   TXT     "v=DKIM1; k=rsa; " "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDFeK91Tel9nVcbMfltqWJNIm907AcXBVm/kf+zFE5LDES5wjJTdOB2CEaIuyvLq3xUzVb6FXnEjJBOOy9uAvBABe6dI96DEilFZB8U7LubRmIz4LZ+bTEffp4+ma+txtdjLYA1kdRO6KYFtxDK96aK/P1rJEm6IVnHL+JaBMs5OQIDAQAB"

.....
.....

root@mail:~ #
opendkim-testkey -d srv.world -s 202407 -x /usr/local/etc/mail/opendkim.conf -vvv

opendkim-testkey: checking key '202407._domainkey.srv.world'
opendkim-testkey: key not secure
opendkim-testkey: key OK
# [key OK] であれば OK
# * [key not secure] は DNSSEC に関するメッセージ
[6]

最後に Gmail にでもメール送信して、受信メールのヘッダーに [DKIM: 'PASS'(Domain: srv.world)] と表示されていれば OK です。

関連コンテンツ