メールサーバー

>

OpenDKIMとOpenDMARCを導入

公開日 : 2026/03/03

最終更新日時 : 2026/03/03 19:52:36

環境
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