我遇到了这个问题,我的Postfix安装:
https://www.virtualmin.com/node/23909
即我得到的错误:
postfix/smtp[130]: fatal: unknown service: smtp/tcp
和上面的url一样,解决scheme是手动将/etc/services和/etc/resolv.conf复制到/var/spool/postfix/etc
我的印象是这个“刚刚开始发生”,以前不是一个问题,但是我只是做了postfix main.cf微小的看似无关的变化,所以我不明白为什么。
我所关心的Postfix安装教程没有提及任何有关手动复制这些文件的事情……这感觉就像Postfix本身应该做的事情,而不是由于某种原因。
是否有一些潜在的错误configuration会导致这种情况?
一些Postfix进程默认在chroot环境中运行。 所以在启动时通常会提供必要的文件。
在我的Debian 7系统上,文件/etc/init.d/postfix具有以下几行文件,用于复制chroot中所有必需的文件:
FILES="etc/localtime etc/services etc/resolv.conf etc/hosts \ etc/nsswitch.conf etc/nss_mdns.config" for file in $FILES; do [ -d ${file%/*} ] || mkdir -p ${file%/*} if [ -f /${file} ]; then rm -f ${file} && cp /${file} ${file}; fi if [ -f ${file} ]; then chmod a+rX ${file}; fi done
奇怪的是,你的安装不包括这个; 你不应该在这里自己做任何事情。
你是如何安装postfix和在哪个系统上?
看起来Postfix希望运行chroot。 有关更多信息,请参阅此处 。
您可以使用/etc/postfix/master.cf的Chrootconfiguration选项来更改它。
这可能是NetworkManager的计时问题。 稍后在引导过程中通过更改/etc/rc{x}.d中后缀文件的名称来加载后缀
例如:
sudo mv /etc/rc5.d/S20postfix /etc/rc5.d/S92postfix
你可能不得不在/etc/rc{x}.d目录下改变它。 记得重启以testing它。
如果文件只包含一行文本“#resolvconf生成的文本”,那么这很可能是引导顺序的一个问题。
首先检查“/etc/resolv.conf”是否包含名称服务器。 如果是这种情况,您的networking已正确configuration并启动。
即使在systemd postfix的现代发行版中,当前仍然由系统启动期间处理的init.d脚本启动。 要了解启动过程中发生了什么,请阅读以下文章: https : //unix.stackexchange.com/questions/233468/how-does-systemd-use-etc-init-d-scripts
Postfix是通过执行“/etc/rc1.d/K01postfix”启动的。 此脚本包含以下行以确保networking:
# Required-Start: $local_fs $remote_fs $syslog $named $network $time
这是问题。 我们必须确保networking不仅起来而且在线。 否则,resolv.conf将在完全创build之前从“/etc/resolv.conf”中复制。
这可以通过执行:
systemctl enable systemd-networkd-wait-online.service
另请参阅本文以获得更好的描述: https : //www.freedesktop.org/wiki/Software/systemd/NetworkTarget/
我发现对于这个问题最简单的解决scheme是添加一个重新启动后缀重启到/etc/rc.local