为什么我必须手动将 /etc/services 和 /etc/resolv.conf 复制到 /var/spool/postfix/etc?

为什么我必须手动将 /etc/services 和 /etc/resolv.conf 复制到 /var/spool/postfix/etc?

我在安装 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 应该自己做的事情,但由于某种原因却并非如此。

是否存在一些潜在的配置错误会导致这种情况?

答案1

一些 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 的以及在哪个系统上安装?

答案2

看起来 Postfix 想要运行 chrooted。请参阅这里了解有关其含义的更多信息。

Chroot您可以使用中的配置选项来更改它/etc/postfix/master.cf

答案3

这可能是 NetworkManager 的时间问题。通过更改 /etc/rc{x}.d 中 postfix 文件的名称,使 postfix 在启动过程中稍后加载

例如:

sudo mv /etc/rc5.d/S20postfix /etc/rc5.d/S92postfix

您可能需要在所有 /etc/rc{x}.d 目录中更改此设置。记得重新启动以进行测试。

答案4

我发现对我来说解决这个问题最简单的方法是将 postfix 重新启动添加到 /etc/rc.local

相关内容