Dockerizing Postfix中继服务器

时间:2018-03-26 15:53:37

标签: docker dockerfile postfix

我正在尝试构建专用于Postfix SMTP中继的docker容器。 经过几次尝试后,我无法在它上面启动后缀服务。

这里是dockerfile

FROM centos:centos7
LABEL Author = "Aurelien HUGON 
LABEL Description = "DOCKERFILE : Creates a Docker Container for a Relay Postfix smtp server"

#Update and soft
RUN yum update -y

RUN yum install -y nano postfix

#Clean install
RUN yum clean all

#Config
COPY /cfg/config.sh /
RUN chmod +x config.sh
RUN ./config.sh
RUN touch /var/log/maillog

CMD ["sh", "-c", "/sbin/postfix start", "tail -f /var/log/maillog"]

config.sh文件包含:

postconf -e 'myhostname = myserverhostname'
postconf -e 'mydomain = domain.com'
postconf -e 'myorigin = $mydomain'
postconf -e 'smtp_generic_maps = hash:/etc/postfix/generic'
postconf -e 'mynetworks = 127.0.0.1/32 192.168.0.0/16 172.16.0.0/12 10.0.0.0/8 [::1]'
postconf -e 'mynetworks_style = class'
postconf -e 'inet_interfaces = all'
postconf -e 'relayhost = [dedicated SMTP server]'
echo "generic@adress.com generic2@adress2.com" > /etc/postfix/generic
postmap /etc/postfix/generic

我尝试使用" postfix start"命令作为我的dockerfile中的入口点,但容器立即关闭,返回码为0。 我尝试通过删除/sbin/postfix start部分启动CMD容器,我的容器启动并且稳定,但我必须手动启动后缀服务。然后我的继电器工作。 但这不是最理想的。

我使用supervisord找到了解决方案,但我想让容器尽可能简单。 我的目标是让一个轻便的可互换继电器从托管服务器上托管的应用程序发送邮件。

3 个答案:

答案 0 :(得分:4)

Postfix v3.3.0添加了support for container

  

容器支持:Postfix 3.3将使用“postfix start-fg”在前台运行。

如果您使用的是较低版本,则可能需要使用supervisord或无限循环或无限次睡眠才能阻止容器退出。

答案 1 :(得分:0)

我最终决定欺骗并使用Supervisord。

答案 2 :(得分:0)

您可以使用以下命令启动 postfix

CMD ["/usr/libexec/postfix/master","-c", "/etc/postfix", "-d"]