Dovecot无法收到外部邮件AddressValueError

更新后

from dovecot-1:2.2.10-7.el7.x86_64 to 1:2.2.10-8.el7.x86_64
dovecot-mysql-1:2.2.10-7.el7.x86_64 1:2.2.10-8.el7.x86_64
from dovecot-pigeonhole-1:2.2.10-7.el7.x86_64 to 1:2.2.10-8.el7.x86_64

我无法接收来自外部邮件地址的电子邮件。 发送邮件的工作正常,以及从本地邮件地址发送邮件时收到邮件。 在/ var / log / maillog我有以下错误:

Oct 30 15:11:21 hostname postfix/smtpd[28227]: connect from sonic304-22.consmr.mail.ir2.yahoo.com[77.238.179.147] Oct 30 15:11:21 hostname postfix/smtpd[28227]: Anonymous TLS connection established from sonic304-22.consmr.mail.ir2.yahoo.com[77.238.179.147]: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits) Oct 30 15:11:21 hostname policyd-spf[28530]: Traceback (most recent call last): Oct 30 15:11:21 hostname policyd-spf[28530]: File "/usr/libexec/postfix/policyd-spf", line 707, in <module> Oct 30 15:11:21 hostname policyd-spf[28530]: instance_dict, configData, peruser) Oct 30 15:11:21 hostname policyd-spf[28530]: File "/usr/libexec/postfix/policyd-spf", line 419, in _spfcheck Oct 30 15:11:21 hostname policyd-spf[28530]: res = spf.check2(ip, helo_fake_sender, helo, querytime=configData.get('Lookup_Time')) Oct 30 15:11:21 hostname policyd-spf[28530]: File "/usr/lib/python2.7/site-packages/spf.py", line 297, in check2 Oct 30 15:11:21 hostname policyd-spf[28530]: receiver=receiver,timeout=timeout,verbose=verbose,querytime=querytime).check() Oct 30 15:11:21 hostname policyd-spf[28530]: File "/usr/lib/python2.7/site-packages/spf.py", line 378, in __init__ Oct 30 15:11:21 hostname policyd-spf[28530]: self.set_ip(i) Oct 30 15:11:21 hostname policyd-spf[28530]: File "/usr/lib/python2.7/site-packages/spf.py", line 405, in set_ip Oct 30 15:11:21 hostname policyd-spf[28530]: self.ipaddr = ipaddress.ip_address(i) Oct 30 15:11:21 hostname policyd-spf[28530]: File "/usr/lib/python2.7/site-packages/ipaddress.py", line 163, in ip_address Oct 30 15:11:21 hostname policyd-spf[28530]: ' a unicode object?' % address) Oct 30 15:11:21 hostname policyd-spf[28530]: AddressValueError: '77.238.179.147' 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? Oct 30 15:11:21 hostname postfix/spawn[28087]: warning: command /usr/libexec/postfix/policyd-spf exit status 1 Oct 30 15:11:21 hostname postfix/smtpd[28227]: warning: premature end-of-input on private/policy-spf while reading input attribute name 

任何想法是什么原因的错误?

我已经解决了我的问题。 正如评论中所述,相应的Bug报告是https://bugs.centos.org/view.php?id=12393

Yohei TOMIYAMA在评论中提供的修复为我工作。

在修复之前,确保它是相同的错误。 以下版本的软件包必须匹配:

 yum list installed | grep pypolicyd-spf pypolicyd-spf.noarch 1.3.2-2.el7 @epel yum list installed | grep python-ipaddress python-ipaddress.noarch 1.0.16-2.el7 @base 

python-ipaddress软件包只能被pypolicyd-spf需要,否则这个修复会破坏其他任何东西。 你可以检查这个

 rpm -q --whatrequires python-ipaddress pypolicyd-spf-1.3.2-2.el7.noarch 

现在修复:

 rpm -e --nodeps python-ipaddress vim /usr/libexec/postfix/policyd-spf 

在第40行改变行如下:

 - import ipaddress + import ipaddr as ipaddress 

而已。 根据邮件提供商的configuration,他们会重试间隔发送邮件。 一小时左右后,大部分丢失的邮件都应该收到。

如上所述,感谢Tommy Yohei提供这个修复。