有没有办法在前台运行 Postfix?

Far*_*han 7 postfix docker docker-compose

有没有办法在前台运行 Postfix?

我想在 docker 中将 Postfix 作为 PID 1 运行。我不想使用任何 bash shell、supervisorD 或任何包装器来启动它。

我只想知道是否有任何方法可以在前台启动它,以便我可以从“docker logs 'container-name'”中检查它的日志

当我手动运行“postfix start”时,它会运行然后在后台启动。有什么办法让它保持在前台?

谢谢

Isa*_*ibe 18

从 Postfix 3.3 版开始,您还可以使用postfix start-fg,根据文档

与 start 类似,但保持 master(8) 守护进程在前台运行

它使事情变得容易多了!

  • @sekrett 这是正确的,但是,根据 OP 的问题,在 Docker 容器内时,我建议不要使用 chroot (这将是多余的)。 (2认同)

小智 7

从 Postfix 3.3 开始,本地支持 docker。只需构建并运行这个 Dockerfile :

FROM alpine:3

RUN apk add --no-cache postfix postfix-pcre
RUN echo "maillog_file = /dev/stdout" >> /etc/postfix/main.cf

CMD ["/usr/sbin/postfix","start-fg"]
Run Code Online (Sandbox Code Playgroud)


小智 6

Postfix需要一个 syslog 守护进程来记录日志。Dockerfile 有关运行 Postfix的简明示例,请参阅jessfraz/dockerfiles/postfix

它在容器中运行并与rsyslog以下并行启动 Postfix :

exec /usr/lib/postfix/master -c /etc/postfix -d 2>&1
tail -F /var/log/mail.log
Run Code Online (Sandbox Code Playgroud)

  • 您不需要容器内有系统日志守护进程。您只需要一个从“/dev/log”读取的系统日志服务。您可以在运行容器时使用“-v /dev/log:/dev/log”提供此信息。这样,postifx 的日志将出现在主机的日志中。 (2认同)
  • 由于 Postfix 3.4 不再需要提供系统日志服务,因此您可以从 [Postfix 3.4.0](http://www.postfix.org/announcements/postfix-3.4.0.html) 开始使用 stdout (2认同)