以非 root 用户身份使用 spamassassin 时出现问题

以非 root 用户身份使用 spamassassin 时出现问题

我在 Ubuntu 14.04 上以 root 身份运行 spamassassin。当我调用任何方法(例如 Check 或 ReportSpam)时,我还会传入另一个应以该身份运行检查的用户。但是我遇到了权限问题

spamd: Can't locate Mail/SpamAssassin/PerMsgLearner.pm: 
Permission denied at /usr/share/perl5/Mail/SpamAssassin.pm line 644, <GEN14> line 7.

查看该 perl 脚本中的第 644 行,它尝试导入另一个 perl 文件

require Mail::SpamAssassin::PerMsgLearner;

这不是以 root 身份运行的问题。以 root 身份执行函数的问题在于,贝叶斯文件(用于随时间学习垃圾邮件)被写入 /nonexistent,这是一个不存在的目录(它是“nobody”用户的主目录)。

因此,无论作为 root 还是其他用户,我都无法让 SpamAssassin 将贝叶斯文件写入磁盘,因此学习功能被破坏。

答案1

事实证明,我必须在/etc/mail/spamassassin配置中添加以下行,然后重新编译 spamassassin。注意,在末尾包含文件名很重要,例如 bayes

bayes_path /path/to/dir/bayes

相关内容