SpamAssassin 尝试读取 /root/ 下的配置文件

SpamAssassin 尝试读取 /root/ 下的配置文件

我已经将邮件网关服务器配置为使用 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/ ....

相关内容