PostfixにDKIMを設定する / Rocky Linux9.4 on さくらのVPS

アフィリエイト広告を利用しています

このページの内容が役に立ったら X (旧twitter) でフォローして頂けると励みになります
挨拶や報告は無しで大丈夫です

さくらのVPSにRockyLinux9.4をインストールした覚書です。

今回は、PostfixにDKIMを設定し、メールの送信者認証を強化する手順をまとめます。

OpenDKIMを導入し、Postfixと連携させることで、送信メールにDKIM署名を付与し、受信側での信頼性を向上させる設定を行います。

なお本番環境で利用される場合はここにある内容だけを鵜呑みにせずセキュリティ専門家に相談されることをお勧めします。

環境

実施日2025-02-06
サーバさくらのVPS 2G
OSRocky Linux9.4
cat /etc/redhat-release
Rocky Linux release 9.5 (Blue Onyx)

前提

下記のページを行い、postfix がインストールされている状態で本記事は進めます。

メールサーバのPostfixをインストール / Rocky Linux9.4 on さくらのVPS

opendkimのインストール

dnfからインストールします。

dnf --enablerepo=epel install opendkim opendkim-tools

変数設定

DKIMで設定するドメインは、送信メールの From の @ の後ろです。

本記事では「sample@sub.example.com」を From とするメール設定を行う流れで進めます。
メールアドレス部分は読みかえてください。

# コピペせず、設定したいドメインに書き換えてください
# サブドメイン部分は外します
DKIM_MAIL_ADDRESS=example.com

opendkim のディレクトリを作成

まず、opendkim の鍵ファイルを保存するディレクトリを作成し、適切な権限を設定します。

mkdir -p /etc/opendkim/keys/$DKIM_MAIL_ADDRESS
chown -R opendkim:opendkim /etc/opendkim

DKIM 鍵(秘密鍵・公開鍵)を生成

次に、DKIM の秘密鍵と公開鍵を生成します。

opendkim-genkey -b 2048 -d $DKIM_MAIL_ADDRESS -s default -D /etc/opendkim/keys/$DKIM_MAIL_ADDRESS
chown opendkim:opendkim /etc/opendkim/keys/$DKIM_MAIL_ADDRESS/default.private
chmod 600 /etc/opendkim/keys/$DKIM_MAIL_ADDRESS/default.private

秘密鍵(default.private)と公開鍵(DNS用)(default.txt)が作られます

ls -la /etc/opendkim/keys/$DKIM_MAIL_ADDRESS

/etc/opendkim.conf を編集

opendkim.conf を編集し、Postfix と連携するように設定します。

# Mode を置換
sed -i "s|^Mode[[:space:]]\+.*$|Mode        sv|" /etc/opendkim.conf

# Domain を置換
sed -i "s|^#\s*Domain[[:space:]]\+.*$|Domain      $DKIM_MAIL_ADDRESS|" /etc/opendkim.conf

# KeyFile を置換
sed -i "s|^KeyFile[[:space:]]\+.*$|KeyFile     /etc/opendkim/keys/$DKIM_MAIL_ADDRESS/default.private|" /etc/opendkim.conf

chroot を使用している場合は Socket も変えておいたほうが良いです

# Socket を置換
sed -i "s|^Socket[[:space:]]\+.*$|Socket      inet:8891@localhost|" /etc/opendkim.conf

Postfix に opendkim を設定

Postfix に opendkim を連携させるため、main.cf を編集します。

vi /etc/postfix/main.cf

次の内容を末尾に追加します。

# DKIM
milter_default_action = accept
milter_protocol = 6
smtpd_milters = local:/var/run/opendkim/opendkim.sock
non_smtpd_milters = local:/var/run/opendkim/opendkim.sock

DKIM の公開鍵を DNS に登録

DKIM の公開鍵を DNS に TXT レコードとして登録 します。

生成された公開鍵を確認

cat /etc/opendkim/keys/$DKIM_MAIL_ADDRESS/default.txt

出力例

default._domainkey IN TXT "v=DKIM1; k=rsa; p=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

表示された内容を使って、DNSに登録を行います。

サブドメインに注意

本記事では前提に書いたとおり「sample@sub.example.com」を設定する流れで説明を進めています

サブドメインの場合は、DNSに設定するホスト名が変わります

default._domainkey.sub.example.com

こちらのように「default._domainkey」に「sub.example.com」を付ける形とします。

opendkim を起動

opendkim を起動し、サービスを有効化します。

# 起動
systemctl start opendkim

# 有効化
systemctl enable opendkim

# 確認
systemctl status opendkim

DKIM の設定を確認

コマンドから確認する

nslookup -type=txt default._domainkey.sub.example.com

WEBから確認する

次のページで DKIM の設定が正しく登録されているか確認できます。

https://toolbox.googleapps.com/apps/dig/?lang=ja#TXT

「名前」に default._domainkey.aulta.net のように入力します。

正しく設定されていれば、v=DKIM1; k=rsa; p=XXXXXX のような情報が表示されます。

メール送信テスト

ここまでできたら、実際にメールを送信して確認します。

gmail 宛に送信して、DKIMが付いたか確認するのが手軽でオススメです。

うまくいかないとき

maillog に Permission denied

次のようにパーミッションを調整します

chown opendkim:postfix /var/run/opendkim/opendkim.sock
chmod 660 /var/run/opendkim/opendkim.sock

chmod 770 /var/run/opendkim
chown opendkim:postfix /var/run/opendkim

usermod -aG opendkim postfix

# 変更後は再起動
systemctl restart opendkim
systemctl restart postfix