Postfix に SPF(Sender Policy Framework) を導入する
日本 SPF の普及率が9割近くなった事や、Gmail では SPF が設定されていないメールは受信拒否する仕様になっているので、SPF によるメールのフィルタリングを実施すべく導入する事にしました。
この方法はメール受信に対する設定です。送信に関する設定は「gmail-宛のメールが送信失敗になる」をご覧下さい。
インストール
$ sudo dnf install pypolicyd-spf
※ Fedora では「python3-authres」などの依存関係の問題も無いみたいです。
「/etc/python-policyd-spf/policyd-spf.conf」の編集
# For a fully commented sample config file see policyd-spf.conf.commented
debugLevel = 1
TestOnly = 0
HELO_reject = SPF_Not_Pass
Mail_From_reject = SPF_Not_Pass
PermError_reject = True
TempError_Defer = True
skip_addresses = 127.0.0.0/8,::ffff:127.0.0.0/104,::1, 192.168.0.0/16
※ この設定では、SPF を設定していないサーバーからの受信は全て拒否されます。もしも例外サーバーなどの記述が必要な場合は、「Domain_Whitelist」などを設定して下さい。
参考:https://www.linuxcertif.com/man/5/policyd-spf.conf/
「/etc/postfix/master.cf」の編集
以下の記述を追加
# ====================================================================
# SPF based Blocking
# ====================================================================
# ===================================================================
# service type private unpriv chroot wakeup maxproc command
# (yes) (yes) (yes) (never) (100)
# ===================================================================
policyd-spf unix y n n - 10 spawn
user=nobody argv=/usr/libexec/postfix/policyd-spf
「/etc/postfix/main.cf」の編集
以下の記述を追加
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
check_policy_service unix:private/policyd-spf
Postfix の再起動
# systemctl restart postfix
Gmail などのアドレスからメールの送信と確認
Gmail アカウントなどからメールを送信して、受信出来る事を確認する。
また、メールのソースを確認し「Received-SPF: Pass」などの記述がある事を確認する。