我的邮件服务器设置相当老旧,但已经工作了很多年。在从 Debian 9 到 10 的最后一次重大更新中,它SpamAssassin
停止工作了。今天我花了一些时间寻找原因,但我不明白我找到了什么。
运行spamassassin --lint
asdebian-spamd
无法加载所有模块,如下所示:
Nov 4 13:00:50.573 [5216] warn: plugin: failed to parse plugin (from @INC): Can't locate Mail/SpamAssassin/Plugin/AskDNS.pm: lib/Mail/SpamAssassin/Plugin/AskDNS.pm: Keine Berechtigung at (eval 115) line 1.
使用strace
我看到:
stat("lib/Mail/SpamAssassin/Plugin/AskDNS.pmc", 0x7ffc01e14860) = -1 EACCES (Keine Berechtigung)
stat("lib/Mail/SpamAssassin/Plugin/AskDNS.pm", 0x7ffc01e14860) = -1 EACCES (Keine Berechtigung)
以 root 身份运行spamassassin --lint
不会报告任何问题,除了缺少贝叶斯数据库,这是意料之中的。但实际问题是它不使用任何被拒绝的文件debian-spamd
,这些文件根本不存在:
stat("lib/Mail/SpamAssassin/Plugin/AskDNS.pmc", 0x7ffdafdc1aa0) = -1 ENOENT (Datei oder Verzeichnis nicht gefunden)
stat("lib/Mail/SpamAssassin/Plugin/AskDNS.pm", 0x7ffdafdc1aa0) = -1 ENOENT (Datei oder Verzeichnis nicht gefunden)
stat("/usr/share/perl5/Mail/SpamAssassin/Plugin/AskDNS.pmc", 0x7ffdafdc1aa0) = -1 ENOENT (Datei oder Verzeichnis nicht gefunden)
stat("/usr/share/perl5/Mail/SpamAssassin/Plugin/AskDNS.pm", {st_mode=S_IFREG|0644, st_size=29190, ...}) = 0
openat(AT_FDCWD, "/usr/share/perl5/Mail/SpamAssassin/Plugin/AskDNS.pm", O_RDONLY|O_CLOEXEC) = 4
namei -om /usr/share/perl5/Mail/SpamAssassin/Plugin/AskDNS.pm
表明此文件可供任何人访问。事实上,我可以将cat
其作为eg debian-spamd
。但显然我甚至没有尝试过。
另一方面,我确实这样做了,find / -type d -name 'lib' -exec namei -om {} \;
并且既没有任何无法访问的“lib”文件夹,也没有find / -type d | grep lib/Mail
列出任何可能被拒绝的匹配文件夹。
该服务器是一个 LXC 容器,运行当前的 Debian 10.6,主机也是如此。
任何能进一步明确该问题的想法都将受到赞赏。
答案1
问题似乎是 SpamAssassin./lib/...
在检查标准路径之前先进行检查。我从 进行了测试/root
,但其他用户无法访问,也就是说,.
使用 已经失败了EPERM
。显然,这导致 SpamAssassin 立即放弃。
从主目录启动 SpamAssassindebian-spamd
成功。