読者です 読者をやめる 読者になる 読者になる

python-postfix-policyd-spfを使う

Python Postfix

python-postfix-policyd-spf
http://www.openspf.org/Software#python-postfix-policyd-spf

インストール前にあらかじめ、PyDNSとpyspfをインストールしておく。

配布物をダウンロードして、インストールする。

$ curl -O http://www.openspf.org/blobs/pypolicyd-spf-0.5.2.tar.gz
$ tar xzf pypolicyd-spf-0.5.2.tar.gz
$ cd pypolicyd-spf-0.5.2
$ sudo python setup.py install

普通にインストールすれば、/usr/binか/usr/sbin/にpolicyd-spfが、/usr/share/local/policyd-spfに設定ファイルpolicyd-spf.confがインストールされるはず。
正しくインストールされているならば、

$ policyd-spf

で、ImportError等が発生せず、入力待ちの状態になるはず。


適宜、/usr/share/local/policyd-spf/policyd-spf.confの設定ファイルを書き換える。今回はメール拒否等はせずに、ただReceived-SPFヘッダーをつけるだけにしたかったので、HELO_rejectとMail_From_rejectをFalseにしておく。

# 略
HELO_reject = False

# 略
Mail_From_reject = False


/etc/postfix/master.cfを設定。標準の場所以外に設定ファイルを起きたい場合は、policyd-spfの引数に渡してやればよい。

policy    unix -        n       n       -       -       spawn
  user=nobody argv=/usr/bin/python /usr/bin/policyd-spf /etc/postfix/policyd-spf.conf


/etc/postfix/main.cfを設定。

smtpd_recipient_restrictions = permit_mynetworks
  reject_unknown_sender_domain
  reject_unauth_destination
  check_policy_service unix:private/policy


postfixを再起動(reloadでもいいのかな?)。

$ sudo /sbin/service postfix restart


DoCoMoからメールを送信して、このサーバで受信すると、こんな感じでReceived-SPFヘッダーが入る。

Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=xxx.xxx.xxx.xxx; helo=docomo.ne.jp; envelope-from=xxxxxxxxxxx@docomo.ne.jp; receiver=test@example.com


Envelope Fromを偽装して送ると、期待通りにsoftfailとなる。

Received-SPF: Softfail (domain owner discourages use of this host) identity=mailfrom; client-ip=xxx.xxx.xx.xx; helo=s1.exmaple.org; envelope-from=xxxxxxxxxxx@docomo.ne.jp; receiver=test@example.com


Perl版のpostfix-policyd-spf-perlとの違いは・・・、設定ファイルで細かく動作を制御できることだろうか?