Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: [Original edit by JohnHardin] A little more testing clarification

...

The "check failed: no response" does not indicate a problem, as this test does not pass in an actual properly-formatted email message. If you have an actual message handy, use that for your test; you should see output similar to:

No Format

...
Oct  6 19:34:05.896 [14864] dbg: pyzor: network tests on, attempting Pyzor
Oct  6 19:34:10.940 [14864] dbg: pyzor: pyzor is available: /bin/pyzor
Oct  6 19:34:10.942 [14864] dbg: pyzor: opening pipe: /bin/pyzor --homedir /some/dir/.pyzor check < /tmp/.spamassassin14864qX2Rmwtmp
Oct  6 19:34:11.248 [14864] dbg: pyzor: [14866] finished: exit 1
Oct  6 19:34:11.248 [14864] dbg: pyzor: got response: public.pyzor.org:24441 (200, 'OK') 0 0
...

Pyzor on Debian

If you are using Debian, a pyzor package is available in the stable distribution.

...

  • Download and install ActivePython from www.activestate.com.
  • Download and install Pyzor from http://pyzor.sourceforge.net/. You'll need something that can un-bzip2 the files. Installing simply means running the following from the folder you extracted pyzor into:
    No Format
    python setup.py build
    python setup.py install
    
  • Create a folder somewhere for the pyzor config files. You can use your spamassassin folder if you like as it only creates a single file called servers. I used c:/python24/etc/pyzor
  • Create a pyzor.bat in your python folder (c:\python24 by default when I installed it), containing the following line, modified for your python folder path.
    No Format
    @c:\python24\python c:/python24/scripts/pyzor --homedir c:/python24/etc/pyzor %1 %2 %3 %4 %5 %6 %7 %8 %9 
    
  • Edit /Lib/site-packages/pyzor/client.py with the following changes:
    • Find signal.signal(signal.SIGALRM, handle_timeout) and put a # in front of it.
    • Find the section for: def time_call(self, call, varargs=(), kwargs=None): and change it to read like this:
      No Format
          def time_call(self, call, varargs=(), kwargs=None):
              if kwargs is None:  kwargs  = {}
              return apply(call, varargs, kwargs)
      
  • From a command prompt in the python folder context, run the following where /python/pyzor is the folder you created in the previous step.
    No Format
    pyzor discover
    
  • Now you are ready to configure SpamAssassin to use it.
  • (This is not necessary in v3.1.7) Edit your /site/lib/mail/spamassassin/Util.pm. Find the "sub helper_app_pipe_open_windows" section and the line that reads
    No Format
    if ($stdinfile) { $cmd .= " <'$stdinfile'"; }"
    
    and replace it with
    No Format
    if ($stdinfile) { $cmd .= " <\"$stdinfile\""; }"
    
    because Windows won't pipe a file with a space after the < and single quotes around it.
  • Edit v310.pre and uncomment the load for the Pyzor plugin.
  • Edit your local.cf and add configuration lines for pyzor. For example:
    No Format
    use_pyzor   1
    pyzor_path c:\python24\pyzor.bat
    pyzor_timeout 10
    
  • That should do it. If you do a spamassassin --lint -D you should see pyzor