Memo

メモ > サーバ > 構築: メールサーバ設定 > DKIMの設定

DKIMの設定
■OpenDKIMインストール OpenDKIM で迷惑メール判定を回避する - Qiita https://qiita.com/bezeklik/items/a3619b5abc01ab38bec4 自ドメインのDNSとPostfixをSPF/DKIM対応させてみた - Qiita https://qiita.com/Sabuuuuu---nn/items/fc5448b7f5e3057365a1 CentOSのPostfixで迷惑メール判定されないようDKIMを設定する - レムシステム エンジニアブログ https://www.rem-system.com/dkim-postfix04/
# amazon-linux-extras install -y epel … EPELのインストール。 # yum install -y opendkim … OpenDKIMのインストール。
■OpenDKIMの設定
# mkdir /etc/opendkim/keys/refirio.net … キーペア保存用ディレクトリ作成。(管理ドメイン毎にキーペアを生成するため。) # mkdir /etc/opendkim/keys/stg.refirio.net … stg.refirio.net も設定する場合。
以降にある「20200409」は「default」でもいいか。 もしくは、複数回作成したり定期的にキーを変更したりするなら、記載のとおり日付の方がいいか。
# opendkim-genkey -D /etc/opendkim/keys/refirio.net -d refirio.net -s 20200409 … キーペアの作成。 # opendkim-genkey -D /etc/opendkim/keys/stg.refirio.net -d stg.refirio.net -s 20200409 … stg.refirio.net も設定する場合。 # chown -R opendkim:opendkim /etc/opendkim/keys … 所有者の一括変更。 # vi /etc/opendkim/KeyTable … KeyTableの変更。
20200409._domainkey.refirio.net refirio.net:20200409:/etc/opendkim/keys/refirio.net/20200409.private 20200409._domainkey.stg.refirio.net stg.refirio.net:20200409:/etc/opendkim/keys/refirio.net/20200409.private … stg.refirio.net も設定する場合。
※上記設定のフォーマットは以下のとおり。 [セレクタ名]._domainkey.[ドメイン名] [ドメイン名]:[セレクタ名]:[秘密鍵へのパス]
# vi /etc/opendkim/SigningTable … SigningTableの変更。
*@refirio.net 20200409._domainkey.refirio.net *@stg.refirio.net 20200409._domainkey.stg.refirio.net … stg.refirio.net も設定する場合。
※上記設定のフォーマットは以下のとおり。 *@[ドメイン名] [セレクタ名]._domainkey.[ドメイン名]
# vi /etc/opendkim.conf … 設定ファイルの編集。
#Mode v Mode sv … 「s」送信時の署名「v」受信の確認の両方行う。 #KeyFile /etc/opendkim/keys/default.private … コメントアウト。 # KeyTable /etc/opendkim/KeyTable KeyTable /etc/opendkim/KeyTable … コメント解除。 # SigningTable refile:/etc/opendkim/SigningTable SigningTable refile:/etc/opendkim/SigningTable … コメント解除。 # ExternalIgnoreList refile:/etc/opendkim/TrustedHosts ExternalIgnoreList refile:/etc/opendkim/TrustedHosts … コメント解除。 # InternalHosts refile:/etc/opendkim/TrustedHosts InternalHosts refile:/etc/opendkim/TrustedHosts … コメント解除。
■Postfixの設定
# vi /etc/postfix/main.cf … 最終行へ設定を追記。
# DKIM smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = $smtpd_milters milter_default_action = accept
# systemctl restart postfix
※sendmailとPostfixでは、Milterと呼ばれるAPIが提供されている。 Milterを利用して外部プログラムと連携し、メールの受信や配送を制御する機能を追加できる。 Milterは通常、127.0.0.1の8891番ポートで稼働している。 DKIM署名を行なうための外部プログラムは、このアドレスとポートで待機している。 OpenDKIMの場合 /etc/opendkim.conf でポートを設定できるが、通常変更する必要は無い。また内部通信用なので、ファイヤーウォールで開放する必要も無い。 MTAとMilterによる外部連携 | OSSのデージーネット https://www.designet.co.jp/ossinfo/postfix/milter/ Postfix で dkim-milter(dkim-filter) を使ってDKIM に対応する(Debian/Ubuntu編) | レンタルサーバー・自宅サーバー設定・構築のヒント https://server-setting.info/debian/postfix-dkim-milter.html ■OpenDKIM起動
# systemctl start opendkim # systemctl enable opendkim
■DNSの設定 No サブドメイン 種別 内容 優先度 4 20200409._domainkey TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDFzmEY4m3v2bNRL68kIGwtTkmFxs5IU+cQdZHLOEtNAi+7m33wvgEz/AAbWqxMUX5+lTNpon0nLSKRlcvKGmNfQWCtwAbQOt3n5HleiZrtme66G8o0cpWryI9YF7lWFzw0OPYm+oNwCZEd9x5aSEIWwtCxuiJjnDu7iZGnDwNtKwIDAQAB" 5 _adsp._domainkey TXT "dkin=unknown" ※20200409._domainkey の内容は /etc/opendkim/keys/refirio.net/20200409.txt の内容を参照する。 複数行で以下のように記載されているので、上のように1行にして記載する。
# cat /etc/opendkim/keys/refirio.net/20200409.txt 20200409._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDFzmEY4m3v2bNRL68kIGwtTkmFxs5IU+cQdZHLOEtNAi+7m33wvgEz/AAbWqxMUX5+lTNpon0nLSKRlcvKGmNfQWCtwAbQOt3n5HleiZrtme66G8o0cpWryI9YF7lWFzw0OPYm+oNwCZEd9x5aSEIWwtCxuiJjnDu7iZGnDwNtKwIDAQAB" ) ; ----- DKIM key 20200409 for refirio.net
■反映の確認 別サーバから以下で反映を確認。
$ dig 20200409._domainkey.refirio.net any $ dig _adsp._domainkey.refirio.net any
反映されていれば、Gmailに対してメールを送信してみる。 メッセージのソースを表示して以下のように表示されていれば成功。 2020年4月時点に試したところ、SPFとDKIMの両方を設定して初めて、Gmailに迷惑メール扱いされなくなった。
DKIM: 'PASS'(ドメイン: refirio.net)
■PHPから送信 ※未検証。 ※PHPの標準命令で送信する場合、PHPMailerでSMTPを使って送信する場合、の両方で。 普通に送信すればDKIM署名付きで送信できているみたい。 PHPでDKIM署名を作成する | Tricorn Tech Labs https://lab.tricorn.co.jp/yamada/4109 反映されていれば、Gmailに対してメールを送信してみる。 メッセージのソースを表示して以下のように表示されていれば成功。
DMARC: 'PASS'

Advertisement