FreeBSD/PostfixでDKIM対応
- 公開日: 2023/12/02(土) 19:42[JST]
- 更新日: 2023/12/05(火) 19:21[JST]
これまで20年以上利用していたドメイン業者さんが閉業するということで急遽ドメインを移管することになった。移管自体はわりとすんなり終わり、このサイトへのアクセスやメールの送受信なども普通にできている。しかし、自ドメインからGMailにメールを送信できなくなってしまったようだ。
これまでのメール環境は以下の図の通り。
自分が管理しているメールサーバからメールを送ろうとするとOP25BでブロックされてしまうのでISPのメールサーバを使っている。GMailはSPFかDKIMの設定がされていないメールは拒否するので、これまではSPFレコードの設定を行っていた。でも新しいドメイン業者ではSPFレコードの設定はできない(Aレコードの内容で固定されてしまう)ようなので、DKIMを設定することにした。
改良後のメール環境は以下の通りとなる。これまではPCのメーラーが直接ISPのサーバにアクセスしていたが、これをLAN側のPostfix経由にし、ISPメールサーバへの認証はPostfixにやってもらうことになる。LAN側にしているのは、ISPサーバのログイン情報を保存する必要があるのでDMZ側のPostfixをこの為に使うのはちょっと怖い、と思ったためだ。
Postfix-SASLのインストール
上記のようにするためにはPostfixが外部メールサーバに対して認証できるようにする必要があり、そのためにはSASL対応でビルドしたものを使う必要がある。pkgには postfix-sasl という名前で用意されているので、postfixの設定ファイルのバックアップ→postfixのアンインストール→postfix-saslのインストールという手順で作業する。今回やったときは設定ファイルはアンインストール後も保持されており、postfix-saslのインストール後もバックアップから設定ファイルを戻す必要はなかった。
OpenDKIMのインストールと設定
インストール、設定はQiita @Chun3氏のFreeBSD 12 で自宅サーバ作成 メールサーバ編その2を参考にした。ただ、この設定のままでは自分の環境ではメールを送信したときに署名をつけてくれないという問題が起きた。試行錯誤した結果、 opendkim.conf に InternalHosts refile:/usr/local/etc/mail/trustedhosts という行を追加し、 /usr/local/etc/mail/trustedhosts というファイルを以下のようにして、LAN内のPCからのメール送信にDKIM署名を追加してくれるようになった。
127.0.0.1 192.168.1.0/24 (←LAN内のネットワークアドレスとネットマスクを指定)
Postfixの設定
OpenDKIM関連については前述のQiitaの記事の通り。これに加えてメールリレーの設定を行う。参考にしたのは水銀室の「SMTP-AUTHを使って上位メールサーバへ転送する」という記事。基本的にはFreeBSDの流儀に合わせてパスワードファイルの保存先を /usr/local/etc/postfix にしただけ。
テスト結果
DKIMをチェックしていない宛先に送ってみたところ、DKIM署名がついていることを確認できた。GMailの送信は失敗。送信できたメールのヘッダには「no key for signature」という認証結果が付加されていたのでまだネームサーバの設定変更を検出できていないということだろうか。自宅のネームサーバにdigで確認してみてもまだ反映されていない。