我在安装 Postfix 时遇到了这个问题:
https://www.virtualmin.com/node/23909
即我得到了错误:
postfix/smtp[130]: fatal: unknown service: smtp/tcp
就像上面的网址一样,解决方案是手动复制/etc/services
并/etc/resolv.conf
进入/var/spool/postfix/etc
我的印象是这“刚刚开始发生”,以前不是问题,但是我只是对 postfix main.cf 做了一些看似无关的小改动,所以我不明白为什么。
我遵循的 Postfix 安装教程没有提到任何关于必须手动复制这些文件的内容......这感觉就像 Postfix 应该自己做的事情,而不是出于某种原因。
是否有一些潜在的错误配置会导致这种情况?
一些 Postfix 进程默认在 chroot 环境中运行。因此,通常有一些东西可以在启动时为他们提供必要的文件。
在我的 Debian 7 系统上,该文件
/etc/init.d/postfix
包含以下行,这些行复制了 chroot 中的所有必要文件:奇怪的是你的安装不包括这个;你不应该在这里自己做任何事情。
你是如何安装后缀的,在哪个系统上?
看起来 Postfix 想要运行 chrooted。有关这意味着什么的更多信息,请参见此处。
您可以使用 中的
Chroot
配置选项对其进行更改/etc/postfix/master.cf
。这可能是 NetworkManager 的时间问题。通过更改 /etc/rc{x}.d 中的后缀文件的名称,使后缀在引导过程中稍后加载
例如:
您可能必须在所有 /etc/rc{x}.d 目录中更改它。记得重启测试一下。
如果文件只包含一行文本“# Generated by resolvconf”,则很可能是引导顺序问题。
首先检查“/etc/resolv.conf”是否包含名称服务器。如果是这种情况,您的网络已正确配置并启动。
即使在具有 systemd 后缀的现代发行版上,目前仍由在 systemd 启动期间处理的 init.d 脚本启动。要了解启动期间发生的情况,只需阅读这篇文章: https ://unix.stackexchange.com/questions/233468/how-does-systemd-use-etc-init-d-scripts
Postfix 通过执行“/etc/rc1.d/K01postfix”启动。此脚本包含以下行以确保网络:
这就是问题所在。我们必须确保网络不仅在线,而且在线。否则,resolv.conf 会在完全创建之前从“/etc/resolv.conf”复制。
这可以通过执行:
另请参阅这篇文章以获得良好的描述: https ://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/
我发现对我来说解决这个问题的最简单的方法是将后缀重启的重启添加到 /etc/rc.local