Postfix 実用ガイド
Postfix の設計、設定、運用を詳しく確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
Ubuntu 26.04 で Postfix から送信するメールに DKIM 署名を付ける場合、OpenDKIM を milter として連携します。DKIM はメール本文だけでなく、DNS に公開する公開鍵、サーバー上に置く秘密鍵、selector、署名対象 domain を合わせて管理する仕組みです。
この記事では、Postfix 本体の設定とは分けて、OpenDKIM の導入、/etc/opendkim.conf、KeyTable、SigningTable、秘密鍵の権限、DNS TXT レコード、Postfix milter 連携の確認点をまとめます。
opendkimpackage の導入/etc/opendkim.confの基本設定/etc/dkimkeys/KeyTableとSigningTable- selector と DNS TXT レコードの関係
- Postfix から OpenDKIM milter を使う確認
| 対象 OS | Ubuntu 26.04 Server |
|---|---|
| package | opendkim |
| config | /etc/opendkim.conf |
| keys | /etc/dkimkeys/example.com/selector.private |
| tables | /etc/dkimkeys/KeyTable、/etc/dkimkeys/SigningTable |
| runtime | /run/opendkim、/etc/tmpfiles.d/opendkim.conf |
DKIM の役割を確認する
DKIM は送信 domain の秘密鍵でメールに署名し、受信側が DNS に公開された公開鍵で検証する仕組みです。Postfix はメール配送を担当し、OpenDKIM は署名と検証を担当します。
- 秘密鍵はメールサーバー上に置く
- 公開鍵は DNS TXT レコードとして公開する
- selector を使って鍵を切り替えられるようにする
- Postfix とは milter socket で連携する
OpenDKIM をインストールする
OpenDKIM 本体を導入します。設定後は opendkim.service と Postfix の両方を確認します。
sudo apt update
sudo apt install -y opendkim
systemctl status opendkim.service --no-pagertmpfiles 設定を作成する
OpenDKIM の socket や PID を置く /run/opendkim は tmpfs 上です。再起動すると消えるため、systemd-tmpfiles に再作成させます。
sudo tee /etc/tmpfiles.d/opendkim.conf >/dev/null <<'EOF'
d /run/opendkim 0755 opendkim opendkim -
EOF
sudo systemd-tmpfiles --create /etc/tmpfiles.d/opendkim.conf
ls -ld /run/opendkim鍵ディレクトリを作成する
DKIM の秘密鍵は /etc/dkimkeys 配下で domain ごとに分けます。秘密鍵は opendkim ユーザーだけが読める権限にします。
sudo install -d -o opendkim -g opendkim -m 0700 /etc/dkimkeys
sudo install -d -o opendkim -g opendkim -m 0700 /etc/dkimkeys/example.com
sudo ls -ld /etc/dkimkeys /etc/dkimkeys/example.comselector と鍵を用意する
selector は DNS 名と秘密鍵ファイル名の対応に使います。例では mail2026 を使います。秘密鍵の中身は公開せず、公開鍵だけを DNS に登録します。
sudo opendkim-genkey -b 2048 -d example.com -s mail2026 -D /etc/dkimkeys/example.com
sudo chown opendkim:opendkim /etc/dkimkeys/example.com/mail2026.private
sudo chmod 0600 /etc/dkimkeys/example.com/mail2026.private
sudo ls -l /etc/dkimkeys/example.comKeyTable を設定する
KeyTable は、selector の DNS 名、署名 domain、秘密鍵ファイルの対応を定義します。
sudo tee /etc/dkimkeys/KeyTable >/dev/null <<'EOF'
mail2026._domainkey.example.com example.com:mail2026:/etc/dkimkeys/example.com/mail2026.private
EOF
sudo chown opendkim:opendkim /etc/dkimkeys/KeyTable
sudo chmod 0600 /etc/dkimkeys/KeyTableSigningTable を設定する
SigningTable は、どの送信元アドレスにどの selector を使うかを定義します。
sudo tee /etc/dkimkeys/SigningTable >/dev/null <<'EOF'
*@example.com mail2026._domainkey.example.com
EOF
sudo chown opendkim:opendkim /etc/dkimkeys/SigningTable
sudo chmod 0600 /etc/dkimkeys/SigningTableopendkim.conf を設定する
OpenDKIM の基本設定では、mode、canonicalization、socket、InternalHosts、Nameservers、KeyTable、SigningTable を指定します。
sudo tee /etc/opendkim.conf >/dev/null <<'EOF'
Syslog yes
SyslogSuccess yes
LogWhy yes
Mode sv
Canonicalization relaxed/simple
SubDomains no
OversignHeaders From
UserID opendkim
UMask 007
Socket local:/run/opendkim/opendkim.sock
PidFile /run/opendkim/opendkim.pid
InternalHosts 127.0.0.1,10.0.0.0/8
Nameservers 127.0.0.53,1.1.1.1
TrustAnchorFile /usr/share/dns/root.key
KeyTable refile:/etc/dkimkeys/KeyTable
SigningTable refile:/etc/dkimkeys/SigningTable
EOF
sudo chown root:root /etc/opendkim.conf
sudo chmod 0644 /etc/opendkim.conf設定を検証して起動する
OpenDKIM の設定は、サービス再起動前に opendkim -n -x で確認します。
sudo opendkim -n -x /etc/opendkim.conf
sudo systemctl restart opendkim.service
systemctl status opendkim.service --no-pagerPostfix ユーザーを group に追加する
Postfix が OpenDKIM の local socket に接続できるように、postfix ユーザーを opendkim group に追加します。
sudo usermod -aG opendkim postfix
id postfixPostfix に milter を設定する
Postfix 側では OpenDKIM の socket を milter として指定します。OpenDMARC など他の milter を使う場合は、順序と socket を分けて管理します。
sudo postconf -e 'smtpd_milters = local:/run/opendkim/opendkim.sock'
sudo postconf -e 'non_smtpd_milters = local:/run/opendkim/opendkim.sock'
sudo postconf -e 'milter_default_action = accept'
sudo postfix check
sudo systemctl reload postfix.serviceDNS TXT レコードを公開する
公開鍵は DNS TXT レコードとして公開します。秘密鍵ファイルではなく、mail2026.txt に出力された公開鍵部分を登録します。
cat /etc/dkimkeys/example.com/mail2026.txt
dig TXT mail2026._domainkey.example.com +short署名結果を確認する
テストメールを送信し、ヘッダーに DKIM-Signature が付くこと、受信側で DKIM が pass になることを確認します。
echo test | mail -s dkim-test user@example.net
journalctl -u opendkim.service -n 100 --no-pager
journalctl -u postfix.service -n 100 --no-pager確認ポイント
opendkimpackage を導入している/run/opendkimを tmpfiles で作成している/etc/dkimkeysと秘密鍵を0700/0600で管理しているKeyTableとSigningTableで selector を対応付けているopendkim -n -x /etc/opendkim.confで検証している- DNS TXT レコードと送信メールの
DKIM-Signatureを確認している
まとめ
Ubuntu 26.04 の Postfix OpenDKIM 設定では、OpenDKIM を milter として構成し、selector、秘密鍵、KeyTable、SigningTable、DNS TXT レコードを一体で管理します。
Postfix 本体の配送設定と DKIM 署名を分けて確認すると、メールが送れない問題と、署名が付かない問題を切り分けやすくなります。OpenDMARC は DKIM / SPF の検証結果を扱う別の層として、OpenDKIM の署名が安定してから追加します。

