我将邮件网关服务器configuration为使用MailScanner + Postfix + SpamAssassin(如此处所述)以及MailWatch作为Web前端。
当从MailWatch运行sa-learn(它以后缀用户身份运行)时,会引发此错误:
SA Learn: config: path "/root/.spamassassin" is inaccessible: Permission denied, Learned tokens from 0 message(s) (1 message(s) examined)
运行“sudo -u postfix spamassassin –lint -D”给出了这样一些信息:
dbg: config: read file /etc/mail/spamassassin/mailscanner.cf warn: config: path "/root/.spamassassin" is inaccessible: Permission denied dbg: config: mkdir /root/.spamassassin failed: mkdir /root/.spamassassin: Permission denied at /usr/lib/perl5/site_perl/5.8.8/Mail/SpamAssassin.pm line 1577 dbg: config: Permission denied dbg: config: using "/etc/MailScanner/spam.assassin.prefs.conf" for user prefs file
bayes标记正确学习,但是这个错误是一个小麻烦,我想解决它…要么通过强制SpamAssassin不检查/root/.spamassassin/目录的configuration和首选项,或修复MailWatch所以它正确地调用sa-learn并不抛出这个错误。
真正的解决办法是禁用spamassassin中的“per-user”configuration并全局设置Baysean数据库,但是一个快速的补丁是将sudo的“-H”选项添加到使用postfix的主目录,后缀。
这可能是一个解决方法:
# chmod o+x /root # mv -f /root/.spamassassin /root/.spamassassin.err # ln -s /var/spool/MailScanner/spamassassin /root/.spamassassin # mkdir -p /var/spool/MailScanner/spamassassin # chown postfix.apache /var/spool/MailScanner/spamassassin # chmod 770 /var/spool/MailScanner/spamassassin
你不应该使用spamassassin守护进程spamd吗? 那么你会使用spamc命令而不是spamassassin。 基本上,从其启动脚本运行垃圾邮件,并从您的邮件扫描器使用spamc 。
你有没有尝试join–dbpath参数,像这样?
sa-learn --dbpath /var/lib/amavis/.spamassassin/ ....
原因
原因是spamassassin(被sa-learn,spamc,spamd,spampd等调用)尝试从$ HOME读取每个用户的configuration文件。
即使configuration选项allow_user_rules设置为0(这可能是一个错误,并且已经很长时间了),也会发生这种情况。
由于无法find此文件夹(因为权限),它会尝试创build文件夹。
那些在cron内部运行sa-learn的人知道,这是非常烦人的,因为即使成功运行,我们也会收到失败的邮件。 只是谷歌的错误configuration:path“/root/.spamassassin”是无法访问:权限被拒绝 ,看看有多less人这会影响(和他们build议的不安全的修复)。 cron唯一的安全解决scheme是忽略它,并将stdout和stderrpipe理到/ dev / null,但这有点极端。
无论传递了-C或-p还是–dbpath选项,它都会这样做,所以无法在命令行选项或全局configuration中修复它。
修正
这个解决scheme对我来说很有用,就是调用sa-learn并传递一个临时的$ HOME环境variables,指向一个非root用户运行spamassassin的地方,在我的情况下这个是/ var / cache / spampd:eg
HOME=/var/cache/spampd sa-learn --spam /var/vmail/jason/.SPAM/cur