PostfixとOpenDKIMで実現する、Gmail送信者ガイドライン対応のDKIM設定
はじめに
2024年からGmailの送信者ガイドラインが厳格化され、独自ドメインからGmail宛にメールを送るにはSPFとDKIMの設定が事実上必須となりました。これらが設定されていないと、送信したメールが迷惑メールに振り分けられたり、ブロックされたりする可能性があります。
この記事では、自身の作業メモを元に、CentOS 7のPostfix環境にOpenDKIMを導入し、DKIM署名付きでメールを送信するための具体的な手順をまとめます。
DKIMとは?
DKIM (DomainKeys Identified Mail)は、メールが正当な送信元から送られ、途中で改ざんされていないことを証明するための「電子署名」技術です。
- 送信サーバーは、メールの内容から生成した署名をヘッダーに付与して送信します。
- 受信サーバーは、送信元ドメインのDNSに公開されている「公開鍵」を使って、その署名が正しいか検証します。
この仕組みにより、送信者のなりすましを防ぎ、メールの信頼性を高めることができます。
Step 1: OpenDKIMのインストール
まずはEPELリポジトリを有効にし、opendkimパッケージをインストールします。
sudo yum install epel-release
sudo yum install opendkim
# OS起動時に自動起動するように設定
sudo systemctl enable opendkim
Step 2: 秘密鍵と公開鍵の作成
次に、電子署名に使用する鍵のペアを作成します。
opendkim-genkeyコマンドを使うと、セレクタ(鍵の識別子)を指定して簡単に生成できます。
# ドメインごとに鍵を管理するディレクトリを作成
sudo mkdir -p /etc/opendkim/keys/your-domain.com
# 鍵ペアを生成
# -D: 出力先ディレクトリ
# -b: 鍵のビット数 (2048が推奨)
# -d: ドメイン名
# -s: セレクタ (日付など分かりやすいものが良い)
sudo opendkim-genkey -D /etc/opendkim/keys/[your-domain.com/](https://your-domain.com/) -b 2048 -d your-domain.com -s 20250331
# opendkimユーザーが読み取れるように所有者を変更
sudo chown opendkim:opendkim -R /etc/opendkim/keys/[your-domain.com/](https://your-domain.com/)
これにより、/etc/opendkim/keys/your-domain.com/配下に20250331.private(秘密鍵)と20250331.txt(DNS設定用の公開鍵情報)が作成されます。
Step 3: OpenDKIMの設定
opendkim.confと、そこから参照される3つの設定ファイルを編集します。
/etc/opendkim.conf
# 送信時に署名(s), 受信時に検証(v) を行うモード
# 今回は送信専用なので s のみ
Mode s
# どの鍵を使うかを定義するテーブル
KeyTable /etc/opendkim/KeyTable
# どのドメインに署名するかを定義するテーブル
SigningTable refile:/etc/opendkim/SigningTable
# 署名しない(信頼する)ホストのリスト
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts
# Postfixと連携するためのソケット設定
Socket inet:8891@localhost
/etc/opendkim/KeyTable
どのセレクタがどの秘密鍵に対応するかを記述します。
# <セレクタ名> <ドメイン>:<セレクタ>:<秘密鍵のパス>
20250331._domainkey.your-domain.com your-domain.com:20250331:/etc/opendkim/keys/[your-domain.com/20250331.private](https://your-domain.com/20250331.private)
/etc/opendkim/SigningTable
どのメールアドレス(ドメイン)に、どのセレクタで署名するかを記述します。
# <メールアドレス(ワイルドカード可)> <KeyTableで定義したセレクタ名>
*@your-domain.com 20250331._domainkey.your-domain.com
Step 4: Postfixの設定
次に、Postfixがメールを送信する際に、OpenDKIMに署名を依頼するように設定します。
/etc/postfix/main.cfの末尾に以下を追記します。
# Milter (Mail Filter) の設定
# opendkim.confのSocket設定と合わせる
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
設定が完了したら、OpenDKIMとPostfixを再起動します。
sudo systemctl restart opendkim
sudo systemctl restart postfix
Step 5: DNSに公開鍵を登録する
最後に、Step 2で作成された公開鍵を、あなたのドメインのDNSにTXTレコードとして登録します。
20250331.txtファイルの中身を確認すると、DNSに設定すべき内容が表示されています。
# 公開鍵情報を確認
sudo cat /etc/opendkim/keys/[your-domain.com/20250331.txt](https://your-domain.com/20250331.txt)
20250331._domainkey IN TXT ( "v=DKIM1; k=rsa; "
"p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxyFGx7SglFdgF4/hBTAjXAVjoYIaTbTLhA+TWjZJVP+9Ukhzkh/xXKdQ3NJJclMTNIbdSNAy+jWRc1tkrXsDz1X77Igd5xPNsihdi1mUJQk2t6+uymdm/ni2wF/YLjDgILyKwyRzrVSsI/ioHZdrD/GwlvE52YeeBG+5xrhjUxkkr6MOjfI73UlmIMt8j6XrZiaBynobniVLan82urMJoELKW"
"ppfg1P8mQr57gtopW+gYHMjKqXWnfuygj/uzaokVY0o+tnS0rOBi3WaCx7nrah2Ov0+i922EcouL0SgDuc8jYZ77Z2god22yuNbwBPEfp+FgxdihxqKF0molS2LswIDAQAB" ) ; ----- DKIM key 20250331 for your-domain.com
この内容を、お使いのDNSサービスの管理画面で、20250331._domainkeyというホスト名(サブドメイン)のTXTレコードとして登録します。p=以降の公開鍵データは、引用符などを外して1行に繋げて入力してください。
おわりに
DKIMの設定は、ファイル間の連携やDNSの設定など、少し手順が多く複雑に感じられるかもしれません。しかし、一度設定してしまえば、あなたのサーバーから送られるメールの信頼性が格段に向上します。
設定後は、実際にGmail宛にテストメールを送り、GoogleのMessageheaderツールなどで「DKIM: PASS」と表示されることを確認しましょう。
この記事で紹介した内容以外にも、技術情報をブログで発信しています。
MEANTECH
Discussion