在 docker 容器中配置 sendmail

新手上路,请多包涵

我有一个运行 PHP 和 Apache 的 docker 容器。主机位于运行 docker 实例的 AWS 实例中。我无法从 docker 终端发送电子邮件。有没有办法使用使用 docker 主机配置的 sendmail 从 docker 实例发送电子邮件?

以下命令从主机发送电子邮件,但不从 docker 实例发送电子邮件。也没有给出错误。

 echo "Subject: Testing Email" | cat - text | /usr/lib/sendmail -F abc.pqr@example.com -t abc.pqr@example.com

原文由 tarun mittal 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
1 个回答

我所做的是将主机 MTA 配置为侦听 docker0 并在容器中安装 ssmtp 以将容器中的 sendmail 与主机 MTA 桥接。在主机上运行 MTA 的原因是系统(严重)错误可以发送到管理员的邮箱。不在容器中运行 MTA 的原因是它是一个重复的进程,因为主机系统已经运行了 MTA。

在主机上,我使用了后缀。我们需要做的就是配置 postfix 监听 docker0 并接受来自 Docker 容器的传出邮件。编辑文件 /etc/postfix/main.cf 并将 docker0 IP 地址添加到 inet_interfaces 以便它接受来自 Docker 容器的连接。另外,将 Docker 容器的网络地址添加到 mynetworks 以便 Docker 容器可以合法地通过主机上的 postfix 服务器发送邮件。 ( 参考和更多细节

要在容器中使用 sendmail,请安装 ssmtp 并将 FromLineOverride 设置为允许,并将 mailhub 设置为 /etc/ssmtp/ssmtp.conf 6e57e8a4c5d4d651938e9d80d2a3 中主机的 IP 地址。您可以将 mailhub 设置为 smtp-server 等符号,然后使用 --add-host 选项运行容器,如此 Dockerfile 中所示(使用 --add-host smtp-server:your-docker0-address )。这将在实际使用主机 MTA 发送邮件的容器中配置一个可用的 sendmail。

原文由 xuhdev 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题