2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OpenDKIM

2
Last updated at Posted at 2025-12-09

AlmaLinux 9 + Postfix + OpenDKIM で DKIM 署名を有効化する手順

AlmaLinux 9 上の Postfix で、OpenDKIM を使って DKIM 署名を付与する手順をまとめます。

検証環境

  • Postfix
    • 3.5.25
  • OpenDKIM
    • 2.11.0

検証用ドメインとして example123.local を利用します。


1. パッケージインストール

CRB リポジトリを有効化

sudo dnf config-manager --set-enabled crb

OpenDKIM 本体とツールをインストール

sudo dnf install -y opendkim opendkim-tools

2. DKIM 鍵ペア(秘密鍵・公開鍵)の作成

/etc/opendkim/keys/ 配下に鍵を作成します。
セレクタ名はわかりやすく dkim-example123 としておきます。

cd /etc/opendkim/keys/

# 2048bit 鍵を作成
sudo opendkim-genkey \
  -b 2048 \
  -D ./ \
  -d example123.local \
  -s dkim-example123

ls -l
# 生成されるファイル例
# dkim-example123.private  … 秘密鍵
# dkim-example123.txt      … 公開鍵(DNS レコード用)

権限を制限します。

sudo chown -R opendkim:opendkim /etc/opendkim/keys/
sudo chmod 600 /etc/opendkim/keys/dkim-example123.private

3. OpenDKIM の基本設定

/etc/opendkim.conf を編集します。

sudo vi /etc/opendkim.conf

最低限、以下のような設定を追加・修正します。

# 送受信両方に対して署名・検証を行う
Mode        sv

# Postfix から参照するソケット
Socket      local:/run/opendkim/opendkim.sock

# 鍵と送信元アドレスのマッピング
SigningTable    refile:/etc/opendkim/SigningTable
KeyTable        /etc/opendkim/KeyTable

# ログ関連(任意だがデバッグしやすくなる)
Syslog      yes
SyslogSuccess  yes
LogWhy      yes

※ 既存設定との重複に注意して調整してください。


4. OpenDKIM の UNIX ソケット権限調整

Postfix から OpenDKIM のソケットにアクセスできるように、systemd のサービス定義を修正します。

# /usr/lib/systemd/system は パッケージ更新で上書きされる
sudo cp /usr/lib/systemd/system/opendkim.service /etc/systemd/system/
sudo vi /etc/systemd/system/opendkim.service

# または
sudo systemctl edit httpd

以下のように Grouppostfix に変更します。

[Service]
User=opendkim
Group=postfix    # postfix グループがソケットにアクセスできるようにする

編集後は systemd の設定をリロードします。

sudo systemctl daemon-reload

5. DKIM 署名対象の送信者設定(SigningTable)

どの送信元アドレスにどのセレクタを使うかを定義します。

sudo vi /etc/opendkim/SigningTable

例:example123.local ドメインからのメールすべてに、dkim-example123 セレクタを使う

*@example123.local dkim-example123._domainkey.example123.local

書式(単純な例):

*@ドメイン名    セレクタ名._domainkey.ドメイン名

6. DKIM レコードと秘密鍵パスの関連付け(KeyTable)

セレクタ名と秘密鍵ファイルの対応を定義します。

sudo vi /etc/opendkim/KeyTable
dkim-example123._domainkey.example123.local example123.local:dkim-example123:/etc/opendkim/keys/dkim-example123.private

書式:

[セレクタ名]._domainkey.[ドメイン名] [ドメイン名]:[セレクタ名]:[秘密鍵ファイルのフルパス]

7. Postfix への Milter 設定

Postfix に OpenDKIM を milter として連携させます。

sudo vi /etc/postfix/main.cf

以下を追記または修正します。

# SMTP で受信したメールに対して Milter を適用
smtpd_milters = unix:/run/opendkim/opendkim.sock

# ローカルから送信されるメール(sendmail コマンド等)に対しても同じ Milter を適用
non_smtpd_milters = $smtpd_milters

# Milter がエラーのときの動作(ここではメールを受け入れる)
milter_default_action = accept

8. サービス起動・自動起動設定

# Postfix 再起動
sudo systemctl restart postfix
sudo systemctl status postfix

# OpenDKIM 自動起動設定&起動
sudo systemctl enable opendkim
sudo systemctl start opendkim
sudo systemctl status opendkim

エラーがあれば journalctl -u opendkim -u postfix などでログを確認します。


9. DNS に DKIM 公開鍵を登録

/etc/opendkim/keys/dkim-example123.txt の内容を、DNS の TXT レコードとして登録します。

cat /etc/opendkim/keys/dkim-example123.txt

中身の例:

dkim-example123._domainkey.example123.local. IN TXT (
  "v=DKIM1; k=rsa; "
  "p=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..."
)

DNS 登録時は、以下のイメージになります。

  • ホスト名: dkim-example123._domainkey.example123.local
  • タイプ: TXT
  • 値: v=DKIM1; k=rsa; p=...(1行でOK)

DNS の反映に数分〜数時間かかる場合があります。


10. DKIM 設定の確認(opendkim-testkey)

OpenDKIM の設定(秘密鍵)と、DNS に公開した公開鍵が正しく対応しているか確認します。

sudo opendkim-testkey -d example123.local -s dkim-example123 -k /etc/opendkim/keys/dkim-example123.private -vvv
  • -d:ドメイン名
  • -s:セレクタ名(_domainkey やドメインは付けない)
  • -k:秘密鍵

まとめ

  • OpenDKIM を入れて DKIM 署名を付けるには、
    1. 鍵ペア作成(セレクタ名を決める)
    2. SigningTable / KeyTable でセレクタとドメイン/秘密鍵を関連付け
    3. Postfix に Milter として OpenDKIM を連携
    4. DNS に公開鍵(TXT レコード)を登録
    5. opendkim-testkey で DNS と設定の整合性を検証
      という流れになります。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?