postfix + spf-engine + opendmarc + opendkim
定番の組み合わせに spf-engine https://launchpad.net/spf-engine を追加しました。spf-engine は以前よく使われていた pypolicyd-spf(開発終了) の後継であり更に spfmilter の機能も引き継いで現在も開発が続けられている spf ユーティリティです。
dmarc は spf か dkim のどちらかの認証に成功するとメールを pass を返します。
逆に言うと、spf, dkim 両方の認証に失敗した時 fail を返し、メールの受信者は送信者の dmarc 設定を参照、参考にしてそのメールの処遇を決めます。
実際に認証の可否を受け持つのは dkim については opendkim が、spf-engine が無い場合は spf については opendmarc が担当します。その場合、dmarc は spf の認証について成功か失敗の二つしか返しません。そこでspf の認証についてより細かく制御する為に、spf 認証ユーティリティとして spf-engine を追加します。
spf-engine 以外にも spf ユーティリティとして以下の物が見つかりましたが
p5-Mail-SPF
postfix-policyd-spf-perl
spf-engine が最終更新が2022年2月と一番新しく現在も開発が続けられていて、またかつて広く使用されていた pypolicyd-spf の後継であることなどから2022年10月の段階では一番高機能で信頼できるユーティリティと私は判断しました。
spf 認証結果についておさらいしておきましょう。
認証結果 | 意味 |
---|---|
none | SPFレコードが無い |
Neutral | ?all にマッチした |
Pass | SPF認証に成功 |
Fail | SPF認証に失敗 |
Softfail | ~all にマッチした |
TempError | 一時的な障害で認証失敗 |
PermError | SPFレコードが不正 |
spf-engine の主なパラメータとして次の様な物があります。
- HELO/EHLO コマンドから得た from 送信ドメインについて spf 認証
# HELO check rejection policy. Options are:
# HELO_reject = SPF_Not_Pass (default) - Reject if result not Pass/None/Tempfail.
# HELO_reject = Softfail - Reject if result Softfail and Fail
# HELO_reject = Fail - Reject on HELO Fail
# HELO_reject = Null - Only reject HELO Fail for Null sender (SPF Classic)
# HELO_reject = False - Never reject/defer on HELO, append header only.
# HELO_reject = No_Check - Never check HELO.
- SMTP の MAIL FROM (envelope From)の spf 認証
# Mail From rejection policy. Options are:
# Mail_From_reject = SPF_Not_Pass - Reject if result not Pass/None/Tempfail.
# Mail_From_reject = Softfail - Reject if result Softfail and Fail
# Mail_From_reject = Fail - Reject on Mail From Fail (default)
# Mail_From_reject = False - Never reject/defer on Mail From, append header only
# Mail_From_reject = No_Check - Never check Mail From/Return Path.
- spf レコードが不正の場合
# Policy for rejecting due to SPF PermError. Options are:
# PermError_reject = True
# PermError_reject = False
- spf レコードが一時的に不正(dns サーバーが落ちているとかかな?)
# Policy for deferring messages due to SPF TempError. Options are:
# TempError_Defer = True
# TempError_Defer = False
その他、特定のドメインで Netural/Softfail が出た場合とか FQDN や IP アドレスでのホワイト・ブラックリストなど、dmarc では出来ない細かな spf 認証についての処理が出来ます。
実はよく使い方が分からない、理解出来ないパラメータもあります。w
自分のサーバーですので、万一正しいメールを弾いてしまっても自己責任と言う事で色々実験中ですのでその内おすすめ設定をアップできる様に頑張っている最中です。生暖かい目でご期待ください。
ではでは
コメント