我有一个运行 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 许可协议
我所做的是将主机 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。