DKIM (Domainkeys Identified Mail)
送信ドメイン認証技術にはIPアドレスを利用するものと電子署名を利用するものがあり
今回は、電子署名を利用するタイプの送信ドメイン認証である「DKIM」を導入してみました。
DKIM のインストール
# yum -y --enablerepo=epel install opendkim : opendkim x86_64 2.11.0-0.1.el7 epel 222 k : libbsd x86_64 0.6.0-3.el7 epel 66 k libopendkim x86_64 2.11.0-0.1.el7 epel 75 k opendbx x86_64 1.4.6-6.el7 epel 46 k sendmail-milter x86_64 8.14.7-5.el7 base 71 k
設定ファイルの修正
以下に必要な設定をしていきます。
# vi /etc/opendkim.conf PidFile /var/run/opendkim/opendkim.pid Mode sv Syslog yes SyslogSuccess yes LogWhy yes UserID opendkim:opendkim Socket inet:8891@localhost Umask 002 SendReports yes SoftwareHeader yes Canonicalization relaxed/relaxed Domain sample.com Selector default MinimumKeyBits 1024 KeyTable refile:/etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable ExternalIgnoreList refile:/etc/opendkim/TrustedHosts InternalHosts refile:/etc/opendkim/TrustedHosts OversignHeaders From
電子署名用の鍵
保存用ディレクトリの作成
複数ドメイン運用も可能なのでドメイン毎のディレクトリを作成します。
# mkdir /etc/opendkim/keys/sample.com
鍵の作成
「default.private」が秘密鍵、「default.txt」がDNSに設定する公開鍵になります。
/usr/sbin/opendkim-genkey -D /etc/opendkim/keys/sample.com/ -d sampe.com -s default
所有者の変更
chown -R opendkim:opendkim /etc/opendkim/keys
KeyTableの設定
「/etc/opendkim/KeyTable」に鍵情報を追加していきます。
# vi /etc/opendkim/KeyTable default._domainkey.sample.com sample.com:default:/etc/opendkim/keys/sample.com/default.private
SigningTableの設定
署名するドメインの情報を「/etc/opendkim/SigningTable」に追加します。
# vi /etc/opendkim/SigningTable *@sample.com default._domainkey.sample.com
TrustedHostsの設定
# vi /etc/opendkim/TrustedHosts 127.0.0.1 ::1 mail.sample.com sample.com
DNSの設定
公開鍵をゾーンファイルに「/etc/opendkim/keys/sample.com/default.txt」の内容をそのまま追記します。
DKIMポリシーも追記します。(DKIMの規格を補うDKIM-ADSPという標準があり、RFC 5617で標準化されている。)
ゾーンのシリアル番号更新を忘れずに!!
_adsp._domainkey IN TXT "dkim=unknown" default._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=MIGf・・・・・・・・・・・・・・・・・・・・・" ) ; ----- DKIM key default
反映させます。
# systemctl reload named-chroot
opendkimの有効、起動
# systemctl enable opendkim # systemctl start opendkim
postfixの設定
postfixにopendkimを使用するように設定追加します。
# vi /etc/postfix/main.cf smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = $smtpd_milters milter_default_action = accept
設定反映
# systemctl reload postfix
送信テスト
署名が正常に確認されるかテストを行います。
「autorespond+dkim@dk.elandsys.com」に空メールを送信すれば結果のメールが送られてきます。
$ echo "Test Mail." | mail -s "test mail" -r admin@sample.com autorespond+dkim@dk.elandsys.com
メール本文
This is an automatic response. Replies to this message will not generate an automatic response. Do not reply to this message except for reporting a problem. The results are as follows: DKIM Signature validation: pass DKIM Author Domain Signing Practices: dkim=unknown
DKIM Signature validation: passとなっていれば成功です、
DNSの設定に誤りがあると「permerror」となってしまいます。
参考にさせて頂いたサイト
有限会社ルートリンクス CentOS 7にDKIMを導入
Configure DomainKeys (OpenDKIM) with Postfix on CentOS 7
一般財団法人インターネット協会 有害情報対策ポータルサイト 迷惑メール対策編