我在 Ubuntu 14.04 上以 root 身份运行 spamassassin。当我调用任何方法(例如 Check 或 ReportSpam)时,我还会传入另一个应以该身份运行检查的用户。但是我遇到了权限问题
spamd:无法找到 Mail/SpamAssassin/PerMsgLearner.pm:/usr/share/perl5/Mail/SpamAssassin.pm 第 644 行、第 7 行权限被拒绝。
查看该 perl 脚本中的第 644 行,它尝试导入另一个 perl 文件
require Mail::SpamAssassin::PerMsgLearner;
这不是以 root 身份执行的问题。以 root 身份执行函数的问题在于,贝叶斯文件(用于随时间学习垃圾邮件)被写入 /nonexistent,这是一个不存在的目录(它是“nobody”用户的主目录)。
因此,无论作为 root 还是其他用户,我都无法让 SpamAssassin 将贝叶斯文件写入磁盘,因此学习功能被破坏。
答案1
事实证明,我必须将以下行添加到 /etc/mail/spamassassin 配置中,然后重新编译 spamassassin。注意,在末尾包含文件名很重要,例如 bayes
bayes_path /路径/到/目录/bayes