我在 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