I'm still seeing the first of these errors after adding official python-3.x support to policyd-spf in Gentoo. We've got,
* policyd-spf-1.2
* pyspf-2.0.9
* pydns-3.0.2
* python-3.3.x or python-3.4.x
The machine on which I reproduced the error has python-3.3 built with python ipv6 support, but ipv6 disabled in the kernel. Below are the logs for one of the failed transactions.
May 10 00:19:10 mx1 postfix/smtpd[16219]: connect from smtprelay130c.careerbuilder.com[208.82.4.175]
May 10 00:19:10 mx1 postfix/smtpd[16219]: discarding EHLO keywords: DSN
May 10 00:19:10 mx1 policyd-spf[1301]: Starting
May 10 00:19:10 mx1 policyd-spf[1301]: Config: {'Mail_From_reject': 'Fail', 'Header_Type': 'SPF', 'debugLevel': 3, 'Mail_From_pass_restriction': 'spf_pass_from', 'defaultSeedOnly': 1, 'PermError_reject': 'False', 'skip_addresses': '127.0.0.0/8,::ffff:127.0.0.0/104,::1', 'Reject_Not_Pass_Domains': 'aexp.com,aim.com,aol.com,apple.com,dhl.com,gmail.com,googlemail.com,hallmark.com,hotmail.com,linkedin.com,live.com,msn.com,paypal.com,e.paypal.com,verizon.net', 'HELO_reject': 'Fail', 'TempError_Defer': 'False', 'HELO_pass_restriction': 'spf_pass_helo'}
May 10 00:19:10 mx1 policyd-spf[1301]: spfcheck: pyspf result: "['None', '', 'helo']"
May 10 00:19:10 mx1 policyd-spf[1301]: None; identity=helo; client-ip=208.82.4.175; helo=smtprelay130c.careerbuilder.com; <email address hidden>; <email address hidden>
May 10 00:19:10 mx1 policyd-spf[1301]: Traceback (most recent call last):
May 10 00:19:10 mx1 policyd-spf[1301]: File "/usr/lib64/python3.3/site-packages/DNS/Base.py", line 192, in getSource
May 10 00:19:10 mx1 policyd-spf[1301]: self.s.bind(('', source_port))
May 10 00:19:10 mx1 policyd-spf[1301]: OSError: [Errno 98] Address already in use
May 10 00:19:10 mx1 policyd-spf[1301]:
May 10 00:19:10 mx1 policyd-spf[1301]: During handling of the above exception, another exception occurred:
May 10 00:19:10 mx1 policyd-spf[1301]: Traceback (most recent call last):
May 10 00:19:10 mx1 policyd-spf[1301]: File "/usr/lib/python-exec/python3.3/policyd-spf", line 662, in <module>
May 10 00:19:10 mx1 policyd-spf[1301]: instance_dict, configData, peruser)
May 10 00:19:10 mx1 policyd-spf[1301]: File "/usr/lib/python-exec/python3.3/policyd-spf", line 508, in _spfcheck
May 10 00:19:10 mx1 policyd-spf[1301]: res = spf.check2(ip, sender, helo)
May 10 00:19:10 mx1 policyd-spf[1301]: File "/usr/lib64/python3.3/site-packages/spf.py", line 310, in check2
May 10 00:19:10 mx1 policyd-spf[1301]: receiver=receiver,timeout=timeout,verbose=verbose,querytime=querytime).check()
May 10 00:19:10 mx1 policyd-spf[1301]: File "/usr/lib64/python3.3/site-packages/spf.py", line 555, in check
May 10 00:19:10 mx1 policyd-spf[1301]: spf = self.dns_spf(self.d)
May 10 00:19:10 mx1 policyd-spf[1301]: File "/usr/lib64/python3.3/site-packages/spf.py", line 1120, in dns_spf
May 10 00:19:10 mx1 policyd-spf[1301]: a = [t for t in self.dns_txt(domain) if RE_SPF.match(t)]
May 10 00:19:10 mx1 policyd-spf[1301]: File "/usr/lib64/python3.3/site-packages/spf.py", line 1169, in dns_txt
May 10 00:19:10 mx1 policyd-spf[1301]: dns_list = self.dns(domainname, rr,ignore_void=ignore_void)
May 10 00:19:10 mx1 policyd-spf[1301]: File "/usr/lib64/python3.3/site-packages/spf.py", line 1300, in dns
May 10 00:19:10 mx1 policyd-spf[1301]: for k, v in DNSLookup(name, qtype, self.strict, timeout):
May 10 00:19:10 mx1 policyd-spf[1301]: File "/usr/lib64/python3.3/site-packages/spf.py", line 135, in DNSLookup
May 10 00:19:10 mx1 policyd-spf[1301]: resp = req.req()
May 10 00:19:10 mx1 policyd-spf[1301]: File "/usr/lib64/python3.3/site-packages/DNS/Base.py", line 238, in req
May 10 00:19:10 mx1 policyd-spf[1301]: self.sendUDPRequest(server)
May 10 00:19:10 mx1 policyd-spf[1301]: File "/usr/lib64/python3.3/site-packages/DNS/Base.py", line 263, in sendUDPRequest
May 10 00:19:10 mx1 policyd-spf[1301]: self.conn()
May 10 00:19:10 mx1 policyd-spf[1301]: File "/usr/lib64/python3.3/site-packages/DNS/Base.py", line 199, in conn
May 10 00:19:10 mx1 policyd-spf[1301]: self.getSource()
May 10 00:19:10 mx1 policyd-spf[1301]: File "/usr/lib64/python3.3/site-packages/DNS/Base.py", line 196, in getSource
May 10 00:19:10 mx1 policyd-spf[1301]: if msg[0] != 98: raise
May 10 00:19:10 mx1 policyd-spf[1301]: TypeError: 'OSError' object is not subscriptable
May 10 00:19:10 mx1 postfix/smtpd[16219]: warning: missing attribute action in input from private/policyd-spf
May 10 00:19:10 mx1 postfix/spawn[17018]: warning: command /usr/bin/policyd-spf exit status 1
I'm still seeing the first of these errors after adding official python-3.x support to policyd-spf in Gentoo. We've got,
* policyd-spf-1.2
* pyspf-2.0.9
* pydns-3.0.2
* python-3.3.x or python-3.4.x
The machine on which I reproduced the error has python-3.3 built with python ipv6 support, but ipv6 disabled in the kernel. Below are the logs for one of the failed transactions.
May 10 00:19:10 mx1 postfix/ smtpd[16219] : connect from smtprelay130c. careerbuilder. com[208. 82.4.175] smtpd[16219] : discarding EHLO keywords: DSN From_reject' : 'Fail', 'Header_Type': 'SPF', 'debugLevel': 3, 'Mail_From_ pass_restrictio n': 'spf_pass_from', 'defaultSeedOnly': 1, 'PermError_reject': 'False', 'skip_addresses': '127.0. 0.0/8,: :ffff:127. 0.0.0/104, ::1', 'Reject_ Not_Pass_ Domains' : 'aexp.com, aim.com, aol.com, apple.com, dhl.com, gmail.com, googlemail. com,hallmark. com,hotmail. com,linkedin. com,live. com,msn. com,paypal. com,e.paypal. com,verizon. net', 'HELO_reject': 'Fail', 'TempError_Defer': 'False', 'HELO_pass_ restriction' : 'spf_pass_helo'} ip=208. 82.4.175; helo=smtprelay1 30c.careerbuild er.com; <email address hidden>; <email address hidden> python3. 3/site- packages/ DNS/Base. py", line 192, in getSource python- exec/python3. 3/policyd- spf", line 662, in <module> python- exec/python3. 3/policyd- spf", line 508, in _spfcheck python3. 3/site- packages/ spf.py" , line 310, in check2 receiver, timeout= timeout, verbose= verbose, querytime= querytime) .check( ) python3. 3/site- packages/ spf.py" , line 555, in check spf(self. d) python3. 3/site- packages/ spf.py" , line 1120, in dns_spf txt(domain) if RE_SPF.match(t)] python3. 3/site- packages/ spf.py" , line 1169, in dns_txt domainname, rr,ignore_ void=ignore_ void) python3. 3/site- packages/ spf.py" , line 1300, in dns python3. 3/site- packages/ spf.py" , line 135, in DNSLookup python3. 3/site- packages/ DNS/Base. py", line 238, in req uest(server) python3. 3/site- packages/ DNS/Base. py", line 263, in sendUDPRequest python3. 3/site- packages/ DNS/Base. py", line 199, in conn python3. 3/site- packages/ DNS/Base. py", line 196, in getSource smtpd[16219] : warning: missing attribute action in input from private/policyd-spf spawn[17018] : warning: command /usr/bin/ policyd- spf exit status 1
May 10 00:19:10 mx1 postfix/
May 10 00:19:10 mx1 policyd-spf[1301]: Starting
May 10 00:19:10 mx1 policyd-spf[1301]: Config: {'Mail_
May 10 00:19:10 mx1 policyd-spf[1301]: spfcheck: pyspf result: "['None', '', 'helo']"
May 10 00:19:10 mx1 policyd-spf[1301]: None; identity=helo; client-
May 10 00:19:10 mx1 policyd-spf[1301]: Traceback (most recent call last):
May 10 00:19:10 mx1 policyd-spf[1301]: File "/usr/lib64/
May 10 00:19:10 mx1 policyd-spf[1301]: self.s.bind(('', source_port))
May 10 00:19:10 mx1 policyd-spf[1301]: OSError: [Errno 98] Address already in use
May 10 00:19:10 mx1 policyd-spf[1301]:
May 10 00:19:10 mx1 policyd-spf[1301]: During handling of the above exception, another exception occurred:
May 10 00:19:10 mx1 policyd-spf[1301]: Traceback (most recent call last):
May 10 00:19:10 mx1 policyd-spf[1301]: File "/usr/lib/
May 10 00:19:10 mx1 policyd-spf[1301]: instance_dict, configData, peruser)
May 10 00:19:10 mx1 policyd-spf[1301]: File "/usr/lib/
May 10 00:19:10 mx1 policyd-spf[1301]: res = spf.check2(ip, sender, helo)
May 10 00:19:10 mx1 policyd-spf[1301]: File "/usr/lib64/
May 10 00:19:10 mx1 policyd-spf[1301]: receiver=
May 10 00:19:10 mx1 policyd-spf[1301]: File "/usr/lib64/
May 10 00:19:10 mx1 policyd-spf[1301]: spf = self.dns_
May 10 00:19:10 mx1 policyd-spf[1301]: File "/usr/lib64/
May 10 00:19:10 mx1 policyd-spf[1301]: a = [t for t in self.dns_
May 10 00:19:10 mx1 policyd-spf[1301]: File "/usr/lib64/
May 10 00:19:10 mx1 policyd-spf[1301]: dns_list = self.dns(
May 10 00:19:10 mx1 policyd-spf[1301]: File "/usr/lib64/
May 10 00:19:10 mx1 policyd-spf[1301]: for k, v in DNSLookup(name, qtype, self.strict, timeout):
May 10 00:19:10 mx1 policyd-spf[1301]: File "/usr/lib64/
May 10 00:19:10 mx1 policyd-spf[1301]: resp = req.req()
May 10 00:19:10 mx1 policyd-spf[1301]: File "/usr/lib64/
May 10 00:19:10 mx1 policyd-spf[1301]: self.sendUDPReq
May 10 00:19:10 mx1 policyd-spf[1301]: File "/usr/lib64/
May 10 00:19:10 mx1 policyd-spf[1301]: self.conn()
May 10 00:19:10 mx1 policyd-spf[1301]: File "/usr/lib64/
May 10 00:19:10 mx1 policyd-spf[1301]: self.getSource()
May 10 00:19:10 mx1 policyd-spf[1301]: File "/usr/lib64/
May 10 00:19:10 mx1 policyd-spf[1301]: if msg[0] != 98: raise
May 10 00:19:10 mx1 policyd-spf[1301]: TypeError: 'OSError' object is not subscriptable
May 10 00:19:10 mx1 postfix/
May 10 00:19:10 mx1 postfix/