LXC 容器中 SpamAssassin 的奇怪权限问题

LXC 容器中 SpamAssassin 的奇怪权限问题

我的邮件服务器设置相当老旧,但已经工作了很多年。在从 Debian 9 到 10 的最后一次重大更新中,它SpamAssassin停止工作了。今天我花了一些时间寻找原因,但我不明白我找到了什么。

运行spamassassin --lintasdebian-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成功。

相关内容