Comment 5 for bug 1184102

Revision history for this message
Michael Orlitzky (michael-orlitzky) wrote : Re: 1.1.2 is broken on python 3.2

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