I'm running Exim 4.60 on Mac OS X, and calling SpamAssassin
automatically through SA-Exim (which makes Exim pass mail thru
spamd). SpamAssassin 3.0.4 was running fine, but when I upgraded to
SpamAssassin 3.1.0 (by downloading and compiling the source, after
using CPAN to update all the optional modules), I started getting
these errors appearing in /var/log/mail.log every time I receive an
email:
Dec 14 13:27:46 www spamd[3654]: spamd: connection from localhost
[127.0.0.1] at port 63377
Dec 14 13:27:46 www spamd[3654]: mkdir /dev/null: File exists at ///
Library/Perl/5.8.1/Mail/SpamAssassin.pm line 1467
Dec 14 13:27:46 www spamd[3654]: spamd: processing message
<[EMAIL PROTECTED]> for exim:-2
Dec 14 13:27:46 www spamd[3654]: mkdir /dev/null: File exists at ///
Library/Perl/5.8.1/Mail/SpamAssassin.pm line 1467
Dec 14 13:27:46 www spamd[3654]: locker: safe_lock: cannot create
lockfile /dev/null/.spamassassin/auto-whitelist.mutex: Not a directory
Dec 14 13:27:46 www spamd[3654]: auto-whitelist: open of auto-
whitelist file failed: locker: safe_lock: cannot create lockfile /dev/
null/.spamassassin/auto-whitelist.mutex: Not a directory
Dec 14 13:27:46 www spamd[3654]: Can't call method "finish" on an
undefined value at ///Library/Perl/5.8.1/Mail/SpamAssassin/Plugin/
AWL.pm line 397, <GEN10> line 30.
Dec 14 13:27:46 www spamd[3654]: bayes: locker: safe_lock: cannot
create lockfile /dev/null/.spamassassin/bayes.mutex: Not a directory
Dec 14 13:27:46 www spamd[3654]: spamd: clean message (0.0/5.0) for
exim:-2 in 0.6 seconds, 1111 bytes.
Dec 14 13:27:46 www spamd[3654]: spamd: result: . 0 -
scantime=0.6,size=1111,user=exim,uid=-2,required_score=5.0,rhost=localho
st,raddr=127.0.0.1,rport=63377,mid=<B7E3DDEE-8A6C-44A3-
[EMAIL PROTECTED]>,autolearn=failed
Dec 14 13:27:47 www spamd[3645]: prefork: child states: II
Downgrading to SpamAssassin 3.0.4 solved the problem, but I'd like to
be able to use 3.1.0. I can't figure out what's going wrong here -
anyone have any ideas?
Line 1467 of SpamAssassin.pm is in "sub
get_and_create_userstate_dir". Specifically it's:
eval { mkpath($fname, 0, 0700) } or dbg("config: mkdir $fname
failed: $@ $!\n");