CentOS7でSPFチェック機能導入 Postfix pypolicyd-spf で動作させるとメールが届かなくなる


既にPostfixは正常にメールの送受信ができる状態から始めます。

yum install pypolicyd-spf
でpypolicyd-spfを導入

いきなりSPF認証されてないメールを弾くのもアレなんで
認証結果をメールヘッダに追加するだけの設定にする。

/etc/python-policyd-spf/policyd-spf.conf
Mail_From_reject = False

あとはPostfixのmain.cfやmaster.cfを適宜編集
http://qiita.com/dumpty-alma@github/items/b89ef0ca4801034558b3
を参考にさせて頂きました。

そしてPostfixを再起動し、外部からメールを送ってみる。
、、、、こない。
別のメールアカウントからも送ってみる。
、、、、、、こない。

SPF認証できないメールを弾くような設定もしていないし
そもそも送信に使ったメールアカウントはSPF認証対応済みだし
なんで?ってことでPostfixのSPF連携を解除して同じくメール送信。
、、、届いた。

とりあえずログを見てみる。


Feb 11 17:36:39 www policyd-spf6490: Traceback (most recent call last):
Feb 11 17:36:39 www policyd-spf6490: File "/usr/libexec/postfix/policyd-spf", line 700, in <module>
Feb 11 17:36:39 www policyd-spf6490: instance_dict, configData, peruser)
Feb 11 17:36:39 www policyd-spf6490: File "/usr/libexec/postfix/policyd-spf", line 412, in _spfcheck
Feb 11 17:36:39 www policyd-spf6490: res = spf.check2(ip, helo_fake_sender, helo, querytime=configData.get('Lookup_Time'))
Feb 11 17:36:39 www policyd-spf6490: File "/usr/lib/python2.7/site-packages/spf.py", line 297, in check2
Feb 11 17:36:39 www policyd-spf6490: receiver=receiver,timeout=timeout,verbose=verbose,querytime=querytime).check()
Feb 11 17:36:39 www policyd-spf6490: File "/usr/lib/python2.7/site-packages/spf.py", line 378, in init
Feb 11 17:36:39 www policyd-spf6490: self.set_ip(i)
Feb 11 17:36:39 www policyd-spf6490: File "/usr/lib/python2.7/site-packages/spf.py", line 405, in set_ip
Feb 11 17:36:39 www policyd-spf6490: self.ipaddr = ipaddress.ip_address(i)
Feb 11 17:36:39 www policyd-spf6490: File "/usr/lib/python2.7/site-packages/ipaddress.py", line 163, in ip_address
Feb 11 17:36:39 www policyd-spf6490: ' a unicode object?' % address)
Feb 11 17:36:39 www policyd-spf6490: AddressValueError: 'xxx.xxx.xxx.xxx' does not appear to be an IPv4 or IPv6 address. Did you pass in a bytes (str in Python 2) instead of a unicode object?
Feb 11 17:36:39 www postfix/spawn6488: warning: command /usr/bin/python exit status 1

なんかエラーが出とる。

CentOS7のバグっぽい、ステータスを見るとまだ治って無さそう。

2017年11月22日追記
https://bugs.centos.org/view.php?id=12393&nbn=2
を見るとステータスは変わってないけどコメントにこの問題は解決しリポジトリにも登録っぽいことが書いてある。
自前サーバは自動的にupdateするようになっているのでspfのパッケージのバージョンを確認
対処版になっているようだ。
spf機能をONにしてメールをサーバに送信
ログ出力に
www policyd-spf[6007]: Pass;
が出力されているのを確認、受信メールのヘッダにも
Received-SPF: Pass (sender SPF authorized)
がついているのを確認した。
どうやらほぼ1年ぶりに治ったようです。