-
Notifications
You must be signed in to change notification settings - Fork 11
Open
Description
Hello,
first, thanks for this great library. I'm planning to use it in ISBG (https://github.com/isbg/isbg) and am adapting it for Python 3 right now.
I am trying to use spamc against spamd from spamassassin 3.4.1. When spamd is started without -l / --allow-tell, it can return this response:
SPAMD/1.0 69 Service Unavailable: TELL commands are not enabled, set the --allow-tell switch.
This leads to spamc blowing up because RESPONSE_RE
cannot match this response:
Traceback (most recent call last):
File "/mnt/nfs/erlacher/scratch/venvs/isbg/bin/isbg", line 11, in <module>
load_entry_point('isbg==1.0', 'console_scripts', 'isbg')()
File "/mnt/nfs/erlacher/scratch/venvs/isbg/lib/python3.6/site-packages/isbg-1.0-py3.6.egg/isbg/isbg.py", line 809, in isbg_run
File "/mnt/nfs/erlacher/scratch/venvs/isbg/lib/python3.6/site-packages/isbg-1.0-py3.6.egg/isbg/isbg.py", line 768, in do_isbg
File "/mnt/nfs/erlacher/scratch/venvs/isbg/lib/python3.6/site-packages/isbg-1.0-py3.6.egg/isbg/isbg.py", line 638, in spamlearn
File "/mnt/nfs/erlacher/scratch/venvs/isbg/lib/python3.6/site-packages/spamc-0.0.8-py3.6.egg/spamc/client.py", line 321, in learn
resp = self.tell(msg, 'learn', learnas)
File "/mnt/nfs/erlacher/scratch/venvs/isbg/lib/python3.6/site-packages/spamc-0.0.8-py3.6.egg/spamc/client.py", line 312, in tell
return self.perform('TELL', msg, headers)
File "/mnt/nfs/erlacher/scratch/venvs/isbg/lib/python3.6/site-packages/spamc-0.0.8-py3.6.egg/spamc/client.py", line 229, in perform
return get_response(cmd, conn)
File "/mnt/nfs/erlacher/scratch/venvs/isbg/lib/python3.6/site-packages/spamc-0.0.8-py3.6.egg/spamc/client.py", line 76, in get_response
'spamd unrecognized response: %s' % data)
spamc.exceptions.SpamCResponseError: spamd unrecognized response: SPAMD/1.0 69 Service Unavailable: TELL commands are not enabled, set the --allow-tell switch.
Shouldn't the RESPONSE_RE
be a lot more liberal with the "message" group, e.g. just allowing anything in it:
RESPONSE_RE = re.compile(r'^SPAMD/(?:[0-9\.]+)\s(?P<code>[0-9]+)'
r'\s(?P<message>.+)$')
Of course it would be good to have some kind of restriction of the charset, but since spamd doesn't really specify anything...
Metadata
Metadata
Assignees
Labels
No labels