policyd-spf[30930]: TypeError: str() takes at most 1 argument (2 given)

Asked by Gue Zinsberger

I don't know if I'm right here...

with pypolicyd-spf-1.3.1 and pyspf-2.0.9 I get the following error:

Aug 24 01:59:23 s2 policyd-spf[20890]: Traceback (most recent call last):
Aug 24 01:59:23 s2 policyd-spf[20890]: File "/usr/local/bin/policyd-spf", line 680, in <module>
Aug 24 01:59:23 s2 policyd-spf[20890]: instance_dict, configData, peruser)
Aug 24 01:59:23 s2 policyd-spf[20890]: File "/usr/local/bin/policyd-spf", line 413, in _spfcheck
Aug 24 01:59:23 s2 policyd-spf[20890]: res = spf.check2(ip, helo_fake_sender, helo, querytime=configData.get('Lookup_Time'))
Aug 24 01:59:23 s2 policyd-spf[20890]: File "/usr/lib/python2.7/site-packages/spf.py", line 310, in check2
Aug 24 01:59:23 s2 policyd-spf[20890]: receiver=receiver,timeout=timeout,verbose=verbose,querytime=querytime).check()
Aug 24 01:59:23 s2 policyd-spf[20890]: File "/usr/lib/python2.7/site-packages/spf.py", line 555, in check
Aug 24 01:59:23 s2 policyd-spf[20890]: spf = self.dns_spf(self.d)
Aug 24 01:59:23 s2 policyd-spf[20890]: File "/usr/lib/python2.7/site-packages/spf.py", line 1120, in dns_spf
Aug 24 01:59:23 s2 policyd-spf[20890]: a = [t for t in self.dns_txt(domain) if RE_SPF.match(t)]
Aug 24 01:59:23 s2 policyd-spf[20890]: File "/usr/lib/python2.7/site-packages/spf.py", line 1169, in dns_txt
Aug 24 01:59:23 s2 policyd-spf[20890]: dns_list = self.dns(domainname, rr,ignore_void=ignore_void)
Aug 24 01:59:23 s2 policyd-spf[20890]: File "/usr/lib/python2.7/site-packages/spf.py", line 1300, in dns
Aug 24 01:59:23 s2 policyd-spf[20890]: for k, v in DNSLookup(name, qtype, self.strict, timeout):
Aug 24 01:59:23 s2 policyd-spf[20890]: File "/usr/lib/python2.7/site-packages/spf.py", line 135, in DNSLookup
Aug 24 01:59:23 s2 policyd-spf[20890]: resp = req.req()
Aug 24 01:59:23 s2 policyd-spf[20890]: File "/usr/lib/python2.7/site-packages/DNS/Base.py", line 229, in req
Aug 24 01:59:23 s2 policyd-spf[20890]: m = Lib.Mpacker()
Aug 24 01:59:23 s2 policyd-spf[20890]: File "/usr/lib/python2.7/site-packages/DNS/Lib.py", line 338, in __init__
Aug 24 01:59:23 s2 policyd-spf[20890]: Packer.__init__(self)
Aug 24 01:59:23 s2 policyd-spf[20890]: File "/usr/lib/python2.7/site-packages/DNS/Lib.py", line 106, in __init__
Aug 24 01:59:23 s2 policyd-spf[20890]: self.buf = bytes('', enc)
Aug 24 01:59:23 s2 policyd-spf[20890]: TypeError: str() takes at most 1 argument (2 given)
Aug 24 01:59:23 s2 postfix/spawn[20888]: warning: command /usr/bin/python exit status 1
Aug 24 01:59:23 s2 postfix/smtpd[20575]: warning: premature end-of-input on private/policyspf while reading input attribute name
Aug 24 01:59:23 s2 postfix/smtpd[20575]: warning: problem talking to server private/policyspf: Success

Question information

Language:
English Edit question
Status:
Answered
For:
pypolicyd-spf Edit question
Assignee:
No assignee Edit question
Last query:
Last reply:
Revision history for this message
Scott Kitterman (kitterman) said :
#1

That error is pydns. What version of python-dns do you have installed?

Revision history for this message
Gue Zinsberger (d-l8unchpad-s) said :
#2

I'm using py3dns-3.0.2 from http://sourceforge.net/projects/pydns/

Revision history for this message
Scott Kitterman (kitterman) said :
#3

Upstream moved to launchpad. Would you please try it with the current version from https://launchpad.net/py3dns.

Revision history for this message
Gue Zinsberger (d-l8unchpad-s) said :
#4

Now I've tried this version:
https://launchpad.net/py3dns/trunk/3.1.0/+download/py3dns-3.1.0.tar.gz
(and making python setup.py build and python setup.py install at each packet after that)

I still get the same error again:
Aug 25 20:49:22 s2 policyd-spf[28298]: Traceback (most recent call last):
Aug 25 20:49:22 s2 policyd-spf[28298]: File "/usr/local/bin/policyd-spf", line 680, in <module>
Aug 25 20:49:22 s2 policyd-spf[28298]: instance_dict, configData, peruser)
Aug 25 20:49:22 s2 policyd-spf[28298]: File "/usr/local/bin/policyd-spf", line 413, in _spfcheck
Aug 25 20:49:22 s2 policyd-spf[28298]: res = spf.check2(ip, helo_fake_sender, helo, querytime=configData.get('Lookup_Time'))
Aug 25 20:49:22 s2 policyd-spf[28298]: File "/usr/lib/python2.7/site-packages/spf.py", line 310, in check2
Aug 25 20:49:22 s2 policyd-spf[28298]: receiver=receiver,timeout=timeout,verbose=verbose,querytime=querytime).check()
Aug 25 20:49:22 s2 policyd-spf[28298]: File "/usr/lib/python2.7/site-packages/spf.py", line 555, in check
Aug 25 20:49:22 s2 policyd-spf[28298]: spf = self.dns_spf(self.d)
Aug 25 20:49:22 s2 policyd-spf[28298]: File "/usr/lib/python2.7/site-packages/spf.py", line 1120, in dns_spf
Aug 25 20:49:22 s2 policyd-spf[28298]: a = [t for t in self.dns_txt(domain) if RE_SPF.match(t)]
Aug 25 20:49:22 s2 policyd-spf[28298]: File "/usr/lib/python2.7/site-packages/spf.py", line 1169, in dns_txt
Aug 25 20:49:22 s2 policyd-spf[28298]: dns_list = self.dns(domainname, rr,ignore_void=ignore_void)
Aug 25 20:49:22 s2 policyd-spf[28298]: File "/usr/lib/python2.7/site-packages/spf.py", line 1300, in dns
Aug 25 20:49:22 s2 policyd-spf[28298]: for k, v in DNSLookup(name, qtype, self.strict, timeout):
Aug 25 20:49:22 s2 policyd-spf[28298]: File "/usr/lib/python2.7/site-packages/spf.py", line 135, in DNSLookup
Aug 25 20:49:22 s2 policyd-spf[28298]: resp = req.req()
Aug 25 20:49:22 s2 policyd-spf[28298]: File "/usr/lib/python2.7/site-packages/DNS/Base.py", line 314, in req
Aug 25 20:49:22 s2 policyd-spf[28298]: m = Lib.Mpacker()
Aug 25 20:49:22 s2 policyd-spf[28298]: File "/usr/lib/python2.7/site-packages/DNS/Lib.py", line 341, in __init__
Aug 25 20:49:22 s2 policyd-spf[28298]: Packer.__init__(self)
Aug 25 20:49:22 s2 policyd-spf[28298]: File "/usr/lib/python2.7/site-packages/DNS/Lib.py", line 114, in __init__
Aug 25 20:49:22 s2 policyd-spf[28298]: self.buf = bytes('', enc)
Aug 25 20:49:22 s2 policyd-spf[28298]: TypeError: str() takes at most 1 argument (2 given)

Revision history for this message
Scott Kitterman (kitterman) said :
#5

Ah. I see the problem. You're using py3dns with python2.7. It's python3 only. For python2.7 you want the regular pydns which is still mostly on sourceforge.

Can you help with this problem?

Provide an answer of your own, or ask Gue Zinsberger for more information if necessary.

To post a message you must log in.