FreeBSD/PostfixでSPF/DKIM認証
- 公開日: 2023/12/23(土) 15:55[JST]
- 更新日: 2023/12/23(土) 15:55[JST]
前回の投稿は送信側の設定だったが、今回は受信側の設定。
SPF
SPFについてはSPF Engineというのが良さそう。ということで # pkg py39-spf-engine でインストール。SPFは送信元のメールサーバとDNSのSPFレコードとを比較するので、インストール先はDMZのサーバとなる。インストール後に設定用のメッセージが表示されるのでそれに基づいて設定していく。まず、 master.cf に以下の二行を追加する。
policyd-spf unix - n n - 0 spawn user=nobody argv=/usr/local/bin/policyd-spf
続いて、 main.cf を編集し、以下の行を追加した。
smtpd_recipient_restrictions = reject_unauth_destination check_policy_service unix:private/policyd-spf policyd-spf_time_limit = 3600
dmnote.paix.jpの記事を参考に、 /usr/local/etc/python-policyd-spf/policyd-spf.conf と /etc/rc.conf を編集し、 pyspf_milter の起動とpostfixの再起動を行う。gmailなどからテストしてみたところ、 Received-SPF ヘッダが追加されたことを確認できた。
DKIM
一方、DKIMのチェックにはopendkimを使うので、送信用としてインストールした自宅サーバ側でやるのが良さそうだ。実のところ、前回のDKIM送信の設定は受信用の設定も兼ねていたようなのだが、受信用としては一箇所設定漏れがあった。具体的にはopendkimはシステムのDNS設定を参照しないため、設定ファイル内でネームサーバを指定する必要があった。したがって、 /usr/local/etc/mail/opendkim.conf に Nameservers ネームサーバのIPアドレス,2番めのネームサーバのIPアドレス という行を追加し[1]、milter-opendkimを再起動した。gmailからメールを送ってみたところ、 Authentication-Results ヘッダが追加されたことを確認できた。なお、 DKIM-Signature ヘッダの無いメールに対しては Authentication-Results ヘッダは追加されないようだ。
メールの振り分け
ヘッダをもとにメールの振り分けを行う。振り分けポリシーとしては以下の通り
プロバイダのアカウントから転送されたメールについては、プロバイダのサーバがつけた Authentication-Results ヘッダに基づいて振り分ける。具体的には、SPFとDKIMの双方でアウトだったものを INBOX.プロバイダ.suspect フォルダに保存する。どちらか一方を通過したものは INBOX.プロバイダ フォルダに
自ドメイン宛のメールについては、自サーバがつけた Received-SPF ヘッダと Authentication-Results ヘッダから判断し、双方でアウトだったものを INBOX.suspect フォルダに保存する。
もともとprocmailで振り分けをしているので ~/.procmailrc に以下の行を追加してみた。
:0 * ^Authentication-Results: プロバイダ;.*(spf=pass|dkim=pass) .プロバイダ/ :0 * ^Authentication-Results: プロバイダ; .プロバイダ.suspect :0 * ^Received-SPF: Softfail * !^Authentication-Results: 自宅サーバ;.*dkim=pass .suspect/
とりあえずこれで様子を見てみることにする