Postfixの基本設定がなされていることが前提です。基本設定はこちらを確認ください。
外部から直接受け付けるメールサーバをpostfixで構築した際に、postfix自体にセキュリティ対策を講じることも重要ですが、spamメールに対してはspf / dkim などで対策することも非常に効果的です。
ここではpostfixでメールを受信した際にspf認証をかけて、認証に失敗したものについてはメール自体を弾く設定をしてみたいと思います。
spf認証はMTA(postfix)に組み込んで動作しますので、それ用のソフトをインストールします。関連するパッケージもインストールされます。
# dnf install pypolicyd-spf Last metadata expiration check: 1:45:17 ago on Fri Aug 30 08:32:34 2024. Dependencies resolved. ======================================================================================================================== Package Architecture Version Repository Size ======================================================================================================================== Installing: pypolicyd-spf noarch 2.9.3-4.el9 epel 62 k Installing dependencies: python3-authres noarch 1.2.0-6.el9 epel 42 k python3-py3dns noarch 3.2.1-7.el9 epel 48 k python3-pyspf noarch 2.0.14-13.el9 epel 51 k |
設定ファイルは /etc/python-policyd-spf/policyd-spf.conf ですが、英語ながら設定項目の解説つきのconfファイルがあるのでそちらと入れ替えます。
# mv /etc/python-policyd-spf/policyd-spf.conf /etc/python-policyd-spf/policyd-spf.conf.old # cp /usr/share/doc/pypolicyd-spf/policyd-spf.conf.commented /etc/python-policyd-spf/policyd-spf.conf |
編集箇所は以下となります。デフォルトではspf認証に失敗するとメールをrejectするようになっていますが、Fallseにすることでrejectまではせずにヘッダに追記するのみという挙動になります。
# vi /etc/python-policyd-spf/policyd-spf.conf HELO_reject = False Mail_From_reject = False skip_addresses = 192.168.0.0/24 (自組織が使用しているipアドレス) |
これをpostfixに組み込んでいきます。master.cfの最後に以下の記述を追記します。
# vi /etc/postfix/master.cf # # SPF検証設定 # policyd-spf unix - n n - 0 spawn user=nobody argv=/usr/libexec/postfix/policyd-spf |
さらにmain.cfにも以下の追記をします。
# vi /etc/postfix/main.cf smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination check_policy_service unix:private/policyd-spf ←追加 policyd-spf_time_limit = 3600 ←追加 |
設定内容に間違いがないかチェックし、postfixを再起動します。
# postfix check # systemctl restart postfix |
実際にメールを送って/var/log/maillogに以下のようなログがでれば正常に動いています。
policyd-spf[589068]: prepend Received-SPF: Pass (mailfrom)・・・・・ |
また、これらのログはメールのヘッダにも記載されるようになります。