我已经将邮件网关服务器配置为使用 MailScanner + Postfix + SpamAssassin,如下所述这里, 随着邮件观察作为 Web 前端。
当从 MailWatch 运行 sa-learn(以 postfix 用户身份运行)时,它会抛出此错误:
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
贝叶斯标记已正确学习,但这个错误是一个小麻烦,我想修复它...要么强制 SpamAssassin 不检查 /root/.spamassassin/ 目录中的配置和首选项,要么修复 MailWatch 以便它正确调用 sa-learn 并且不会抛出这个错误。
答案1
真正的修复方法是禁用 spamassassin 中的“每个用户”配置并全局设置贝叶斯数据库,但一个快速的修补方法是向 sudo 添加“-H”选项以使用 postfix 的主目录,它应该有以 postfix 身份写入的权限。
答案2
这不是一个错误,而是因为您正在使用无效用户运行 sa-learn 命令。例如,我的设置使用标准 debian-spamd 用户。
# sa-learn -u debian-spamd --dbpath /var/lib/spamassassin/.spamassassin/bayes --dump magic
0.000 0 3 0 non-token data: bayes db version
0.000 0 84 0 non-token data: nspam
0.000 0 6565 0 non-token data: nham
0.000 0 15128 0 non-token data: ntokens
0.000 0 1510837441 0 non-token data: oldest atime
0.000 0 1519232775 0 non-token data: newest atime
0.000 0 0 0 non-token data: last journal sync atime
0.000 0 0 0 non-token data: last expiry atime
0.000 0 0 0 non-token data: last expire atime delta
0.000 0 0 0 non-token data: last expire reduction count
对于账户
# sa-learn --ham -u debian-spamd --showdots --dir /var/vmail/mydomain.com/support/cur/*
.
Learned tokens from 1 message(s) (1 message(s) examined)
我在服务器上有 20 个电子邮件帐户,并设置了 cron 来匹配垃圾邮件和垃圾邮件,但从未出现错误。请确保相关文件/目录上的设置和用户:组正确。
链接至快速修复教程 https://www.devcu.com/forums/topic/745-spamassassin-is-inaccessible-permission-denied/
答案3
这可能是一个解决方法:
# 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
答案4
您是否尝试过添加--dbpath参数,像这样?
sa-learn --dbpath /var/lib/amavis/.spamassassin/ ....