DKIMの導入 AlmaLinux8+CentOS7

DKIMの導入の前にDKIM署名とは

DKIMの導入の前にDKIMについてまとめてみた。

認証の主要な機能で、メッセージ内の様々な構成要素によって作成されるハッシュのことです。送信者はメッセージのドメイン、本文、その他の部分を用いて署名を作成することができます。これらの構成要素はメッセージの送信時に決定されるため、後で変更することはできません。

署名を作成するために、送信者はドメインの秘密鍵を使用してメッセージを暗号化し、ハッシュを作成します。次に受信者のメールサーバーは、送信者の公開鍵を使用して、メッセージから同じ構成要素を暗号化します。受信者は暗号化された結果であるハッシュ値を受け取り、復号化された送信者のハッシュと比較します。もし両方の文字列が同じであれば、DKIM認証にパスします。メッセージ内の文字が1つでも変わっていれば、公開鍵で暗号化して返されるハッシュは、送信者のメールサーバーから送信されたものと同一にはなりません。

DKIMセレクタとは

セレクタは、公開鍵はハッシュを作成し、秘密鍵で作成された同じハッシュと照合するために使用します。

DKIM-Signature: v=1; a=rsa; c=relaxed/relaxed; d=mydomain.com; s=s837fhs;

「s」タグにある値は、DKIMセレクタです。このセレクタは、秘密鍵/公開鍵のペアを作成するときに生成されます。メールサーバーでDKIMを設定し、自分宛にメッセージを送信すると、自分のDKIMセレクタを見つけることができます。電子メールメッセージのヘッダを表示し、ヘッダのDKIM署名セクションを見つけます。ヘッダの「s」タグの中の値がDKIMセレクタです。

DKIMの導入 opendkimとPostfix

DKIM導入に関して、DKIMセレクタは default を設定した。ドメインは linuxexpert.ne.jp とする。

# dnf -y install epel-release
# dnf -y install opendkim
# dnf -y install opendkim-tools

# cd /etc/opendkim/keys/
# mkdir linuxexpert.ne.jp
# chmod 750 linuxexpert.ne.jp

# opendkim-genkey -D /etc/opendkim/keys/linuxexpert.ne.jp/ -d linuxexpert.ne.jp -b 2048 [-s YYYYMMDD]
※ -s はセレクタ名、指定しない場合のセレクタは default となる

# chown -R opendkim:opendkim /etc/opendkim/keys/
# cat /etc/opendkim/keys/linuxexpert.ne.jp/default.txt
DNSレコードの登録
default._domainkey.linuxexpert.ne.jp TXT 0 "v=DKIM1; k=rsa;" "p=XXX" "XXXX"
_adsp._domainkey.linuxexpert.ne.jp TXT "dkim=unknown"

# vi /etc/opendkim.conf
Mode  sv
#KeyFile /etc/opendkim/keys/default.private
SoftwareHeader  no
KeyTable  /etc/opendkim/KeyTable
SigningTable  refile:/etc/opendkim/SigningTable
ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
InternalHosts   refile:/etc/opendkim/TrustedHosts

# vi /etc/opendkim/KeyTable
default._domainkey.linuxexpert.ne.jp linuxexpert.ne.jp:default:/etc/opendkim/keys/linuxexpert.ne.jp/default.private

# vi /etc/opendkim/SigningTable
*@linuxexpert.ne.jp default._domainkey.linuxexpert.ne.jp

# systemctl start opendkim
# systemctl enable opendkim

# vi /etc/postfix/main.cf
##### DKIM
smtpd_milters = local:/run/opendkim/opendkim.sock
non_smtpd_milters = $smtpd_milters
milter_default_action = accept

# usermod -a -G opendkim postfix
# systemctl restart postfix

DKIMチェック

DKIMの導入とチェック

Ymailにメールを送信

# echo "テストDKIM" | mail -s "DKIMのテスト" XXXX@ymail.ne.jp

Ymailの詳細ヘッダーを確認

X-Z-SenderAuth: yahooip=false; suspicious=false; domainkeys-result=neutral(nosig); dkim-result=pass(ok); spf-result=pass;

関連記事:
SMTP配送の仕組み

CentOS7にDKIM適用

# yum install opendkim

# cd /etc/opendkim/keys/
# mkdir cosmo-telecom.co.jp
# chmod 750 cosmo-telecom.co.jp/

# opendkim-genkey -D /etc/opendkim/keys/xxx.co.jp/ -d xxx.co.jp -b 2048 -s default

# chown opendkim:opendkim -R /etc/opendkim/keys/xxx.co.jp/

# cp /etc/opendkim.conf /etc/opendkim.conf.org
# vi /etc/opendkim.conf

# vi /etc/opendkim/KeyTable
default._domainkey.xxx.co.jp xxx.co.jp:default:/etc/opendkim/keys/xxx.co.jp/default.private

# vi /etc/opendkim/SigningTable
*@xxx.co.jp default._domainkey.xxx.co.jp

# vi /etc/sysconfig/opendkim
++ AUTOCREATE_DKIM_KEYS=NO

# systemctl restart opendkim
# systemctl enable opendkim

# vi /etc/postfix/main.cf
## DKIM
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept