Edited at

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

More than 1 year has passed since last update.

既に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

なんかエラーが出とる。

https://bugs.centos.org/view.php?id=12393&nbn=2

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年ぶりに治ったようです。