Postfix SPF


PostfixにSPF認証(受信側)を組み込んだ時のメモ。

  • Vine Linux 5.0
  • Postfix 2.6.6
  • Perl 5.10.0

SPFについてテストを兼ねて組み込んでみる。
まずは必要なperlモジュールで自動で入らないYAMLモジュールをインストール。

# perl -MCPAN -e shell

cpan[1]> install YAML

続いてMail::SPF::Queryモジュールをインストール。

cpan[1]> install Mail::SPF::Query

が、ビルドされてインストールできないので、手動でインストールしてくれとメッセージが出る。
で自分でビルドしてインストールする。

# cd ~/.cpan/build/Mail-SPF-Query-1.999.1

# make install


そしてSPFスクリプトを落としてくる。

# wget http://cri.univ-tlse1.fr/documentations/spam/outils/spf.pl

Postfixのライブラリディレクトリにコピーする。

# mv spf.pl /usr/lib64/postfix/smtpd-policy.pl
# chmod 755 /usr/lib64/postfix/smtpd-policy.pl

Postfixのmainコンフィグファイルのsmtpd_recipient_restrictionsパラメータの最後に追記。

# vi /etc/postfix/main.cf

smtpd_recipient_restrictions = 
...
check_policy_service unix:private/policy

次にmasterコンフィグファイルに追記。

# vi /etc/postfix/master.cf

policy    unix  -       n       n       -       -       spawn
        user=nobody argv=/usr/bin/perl /usr/lib64/postfix/smtpd-policy.pl

Postfixをリロードして届いたメールのログをチェックする。

# service postfix reload

postfix/postfix-script: refreshing the Postfix mail system
# cat /var/log/maillog

May  2 05:29:34 localhost postfix/smtpd[7233]: connect from example.com[***.***.***.***]
May  2 05:29:35 localhost postfix/policy-spf[7237]: : SPF pass: smtp_comment=Please see http://www.openspf.org/why.html?sender=user%40example.com&ip=***.***.***.***&receiver=localhost.localdomain: example.com A ***.***.***.***, header_comment=localhost.localdomain: domain of user@example.com designates ***.***.***.*** as permitted sender
May  2 05:29:35 localhost postfix/policy-spf[7237]: handler sender_permitted_from: PREPEND Received-SPF: spf-pass
May  2 05:29:35 localhost postfix/policy-spf[7237]: handler sender_permitted_from: PREPEND Received-SPF: spf-pass is decisive.
May  2 05:29:35 localhost postfix/policy-spf[7237]: decided action=PREPEND Received-SPF: spf-pass

メールヘッダをチェックする。

Received-SPF: spf-pass

と出ていればOK。