環境 CentOS Stream release 9 Apache/2.4.57 (CentOS Stream) Xserver VPS
まず DNS が下記のように設定されていて postfix dovecot でメールサーバーが構築されているのが前提。
もちろん example.com と 162.xx.xx.xx は仮のドメインとIPアドレス。自分の環境に置き換えて捉えてほしい。
| ホスト名 | 種別 | 内容 | TTL | 優先度 |
|---|---|---|---|---|
| example.com | A | 162.xx.xx.xx | 3600 | – |
| example.com | MX | mail.example.com | 3600 | 10 |
| example.com | TXT | v=spf1 mx ~all | 3600 | – |
| mail.example.com | TXT | v=spf1 ip4:162.xx.xx.xx ~all | 3600 | – |
下記のようにしてる人もいるようだがオワコンのやり方(仮に今現在、有効であっても無効になるのは時間の問題なのでおススメしない)
# main.cf relayhost = [smtp.gmail.com]:587
DNS で include:_spf.google.com」を追記・・・ なんて解説してるページもあるが、そんなことをしなくても gmail との送受信は可能。
そもそもネット上に生息する身としては「誰も信じない」が鉄則であり、部外企業サーバーをリレーホストに使用するなど、それこそがセキュリティ的にどうなの?・・・と言いたくなる。
もちろんそれが「google」であっても例外ではない。
OpenDKIM OpendMarc のインストール
dnf config-manager --set-enabled crb; dnf install epel-release; dnf update; dnf -y install opendkim opendkim-tools opendmarc
秘密鍵と公開鍵の作成
opendkim-genkey --directory=/etc/opendkim/keys --domain=example.com --verbose
所有者とグループを opendkim ユーザーに変更
chown -R opendkim:opendkim /etc/opendkim/keys/
opendkim の設定
vi /etc/opendkim.conf
Mode sv 最終行に追記 KeyTable /etc/opendkim/KeyTable # 署名用の秘密鍵を指定 SigningTable refile:/etc/opendkim/SigningTable # 署名用のドメイン名を指定 Socket local:/run/opendkim/opendkim.sock # Postfix から参照するソケット
KeyTable の設定
vi /etc/opendkim/KeyTable
下記のようになってれば良い
default._domainkey.example.com example.com:default:/etc/opendkim/keys/default.private
SigningTable の設定
vi /etc/opendkim/SigningTable
下記のようになってれば良い
*@example.com default._domainkey.example.com
opendkim の起動と自動起動設定
systemctl start opendkim && systemctl enable opendkim
opendmarc の設定
vi /etc/opendmarc.conf
# Authentication-Results ヘッダーに表示される名前 #AuthservID HOSTNAME ↓ AuthservID HOSTNAME # SMTP AUTH 認証済みクライアントのチェックはスキップ # IgnoreAuthenticatedClients false ↓ IgnoreAuthenticatedClients true # スキップリストのパス # IgnoreHosts /etc/opendmarc/ignore.hosts ↓ IgnoreHosts /etc/opendmarc/ignore.hosts # DMARC 評価に失敗した場合はメッセージを拒否する # RejectFailures false ↓ RejectFailures true # メールのヘッダーが RFC5322 に準拠していない場合は拒否する # RequiredHeaders false ↓ RequiredHeaders true # 信頼済みとする [authserv-id] を指定 # TrustedAuthservIDs HOSTNAME ↓ TrustedAuthservIDs HOSTNAME
スキップするホストのリスト作成
vi /etc/opendmarc/ignore.hosts
127.0.0.1 ::1
opendmarc の起動と自動起動設定
systemctl start opendmarc && systemctl enable opendmarc
postfix の設定
vi /etc/postfix/main.cf
最終行に追加
smtpd_milters = unix:/var/run/opendkim/opendkim.sock non_smtpd_milters = $smtpd_milters milter_default_action = accept
postfix ユーザーを opendmarc グループに追加
usermod -aG opendmarc postfix
postfix リスタート
systemctl restart postfix
公開鍵の確認
cat /etc/opendkim/keys/default.txt
default._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ) ; ----- DKIM key default for example.com
() 内をコピー
| ホスト名 | 種別 | 内容 | TTL | 優先度 |
|---|---|---|---|---|
| default._domainkey.example.com | TXT | コピー内容を貼り付け(ダブルクォーテーションや半角スペースは不要) | 3600 | – |
| _dmarc.example.com | TXT | v=DMARC1; p=none; rua=mailto:info@example.com | 3600 | – |
rua=mailto: dmarc レポートを受信するメールアドレス
Thunderbird 等のメールソフトを使い自分の gmail アドレス宛にテストメールを送信
受信トレイに届いたメールを開き上部右側にある「その他」タブ→ソースを表示
Authentication-Results: に下記が含まれていれば成功
dkim=pass spf=pass dmarc=pass
