AlmaLinux9 postfixでspf認証

スポンサーリンク

Postfixの基本設定がなされていることが前提です。基本設定はこちらを確認ください。

CentOS7 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)・・・・・

また、これらのログはメールのヘッダにも記載されるようになります。

参考URL:https://blog.apar.jp/linux/766/

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする