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チェック
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