送信メールが迷惑メール扱いされないための設定 ~DKIM認証編~

はじめに

前回の投稿でSPF認証対策を行いました。
今回はDKIM認証対策を行いたいと思います。DKIM認証というのは、

「送信ドメインのDNSに公開鍵を登録し、送信元SMTPサーバーは自身の秘密鍵で暗号化した電子署名を付加してメールを送信する。受信側SMTPサーバは受信したメールヘッダから特定した送信元ドメインのDNSサーバから公開鍵を取得し、電子署名を検証する。」

だそうです。
前回の投稿で触れたとおり「SPF認証についてはリレー先のOCNサーバーの力でpassできちゃう」という事実があり、2020年5月現在 Gmailにしても携帯キャリアにしてもDKIM認証/DMARC認証の成否に関わらず受信してくれているようです。ありがたい話です。

とはいえ、いつDKIM認証/DMARC認証へのpassが必須となってしまうか分かりません。今のうちに対策をしたいと思います。今回はまずDKIM認証です。

前提とする環境は以下の通りです。

  • CentOS 7.8
  • Postfix 2.10.1

OpenDKIMのインストール

CentOSにOpenDKIMをインストールします。
EPELリポジトリをまだ追加していない場合は追加してください。

# yum install epel-release
# yum install opendkim

秘密鍵/公開鍵の作成

キーペアを保存するディレクトリを作成し、その中にキーペアを作成します。

# mkdir /etc/opendkim/keys/example.com
# opendkim-genkey -D /etc/opendkim/keys/lsmodena.com -d lsmodena.com -s 20200516
# ls /etc/opendkim/keys/example.com
20200505.private  20200516.txt
# chown -R opendkim:opendkim /etc/opendkim/keys/example.com/

“-s” で指定するセレクタ名は任意の名前ですが、ファイル作成日を利用することが多いようです。
秘密鍵20200516.privateと公開鍵20200516.txtが作成されました。
アクセス権も変更しておきました。

DNSサーバーへの登録

公開鍵の登録

先ほど作成した公開鍵20200516.txt の中身を覗いてみると、DNSサーバーに登録する内容がそのまま記載されています。この通りに「お名前.com」のDNSサーバーに登録します。

ホスト名   :20200516._domainkey (.example.com)
TYPE        :TXT
VALUE      :v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3D ・・・

DKIM Record Checker のサイトにドメイン名とセレクタ名を入力すれば、ちゃんと登録できているか確認することができます。

ADSPレコードの登録

続いて ADSPレコードを登録します。これはDKIM認証にfailした場合の取り扱いを送信者側として伝えておくためのものです。

ホスト名   :_adsp._domainkey (.example.com)
TYPE        :TXT
VALUE      :dkim=unknown

「dkim=」の部分は「all」「unknown」「discardable」のいずれかを指定しますが、「unkown」が良いらしいです。

Opendkimの設定

「/etc/opendkim.conf」の編集

オリジナルのバックアップを取ったら、以下のように編集します。

</etc/opendkim.conf>

Mode s                                               # "s"=送信時に署名
# KeyFile /etc/opendkim/keys/default.private         # コメントアウト
KeyTable /etc/opendkim/KeyTable                      # コメントアウト解除
SigningTable refile:/etc/opendkim/SigningTable       # コメントアウト解除
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts # コメントアウト解除
InternalHosts refile:/etc/opendkim/TrustedHosts      # コメントアウト解除

この中に登場する「/etc/opendkim/KeyTable」「/etc/opendkim/SigningTable」「/etc/opendkim/TrustedHosts」はこの後で編集します。

KeyTableに秘密鍵を登録

「/etc/opendkim/KeyTable」のバックアップを取ってから以下を追記します。

20200516._domainkey.lsmodena.com lsmodena.com:20200516:/etc/opendkim/keys/lsmodena.com/20200516.private

信頼できるホストの指定

「/etc/opendkim/TrustedHosts」を確認します。

# cat /etc/opendkim/TrustedHosts
127.0.0.1

デフォルトでループバックアドレスが指定されているので、変更の必要はなさそうです。

ドメインの指定

「/etc/opendkim/SigningTable」のバックアップを取ってから、以下を追記します。

*@lsmodena.com 20200505._domainkey.lsmodena.com

OpenDKIM の起動

# systemctl start opendkim
# systemctl enable opendkim
# systemctl is-enabled opendkim
enabled

 

Postfixの設定

「/etc/postfix/main.cf」に以下を追記します。

smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept

最後に Postfixをreloadします。

# systemctl reload postfix

 

動作確認

試しにGmailアカウント宛てにメールを送信してみます。
メールヘッダーを見てみると、mx.google.com から「dkim=pass」の判定をもらっているようです。

コメント

タイトルとURLをコピーしました