从 docker 容器使用主机的 SMTP 服务器

问题描述 投票:0回答:1

以下https://stackoverflow.com/a/62543536/6009580 我尝试过使用主机的 SMTP 服务器从 docker 容器发送邮件。

什么在起作用:

[HOST]$ echo "Test mail." | mail -s "message" [email protected] # works
[HOST]$ sudo docker run --net=host -it python
[python-container] >>> import smtplib
[python-container] >>> s = smtplib.SMTP('localhost')
[python-container] >>> s.sendmail("[email protected]",["[email protected]"],"message") # works

什么不起作用:

[HOST]$ sudo docker run -it python
[python-container] >>> import smtplib
[python-container] >>> s = smtplib.SMTP('host.docker.internal')

socket.gaierror: [Errno -2] Name or service not known

即使我用

启动容器
[HOST]$ sudo docker run --add-host=host.docker.internal:host-gateway -it python
[python-container] >>> import smtplib
[python-container] >>> s = smtplib.SMTP('host.docker.internal')

ConnectionRefusedError: [Errno 111] Connection refused

如有任何帮助,我们将不胜感激

系统:

  • 洛基Linux 8.7
  • Docker 20.10.22
python linux docker smtp
1个回答
0
投票

从 Docker 容器使用主机的 SMTP 服务器的技巧是将主机 SMTP 服务器配置为侦听

docker0
网络接口 IP 上的连接(
docker0
是 Docker 的桥接网络接口)。

确保 SMTP 服务器接受来自 Docker 网络地址池(

172.17.0.0/12
192.168.0.0/16
)的中继或通过
docker0
接口 IP 地址发送时的中继。

配置容器化应用程序以使用

docker0
接口 IP 地址(默认为
172.17.0.1
)作为 SMTP 服务器。

请注意,干净地发送电子邮件并不简单。它需要正确配置 SPF、DKIM 和 DMARC。 我建议新手使用第三方SMTP服务器。

如果您需要这样的设置来满足开发需求,请查看Mailpit

© www.soinside.com 2019 - 2024. All rights reserved.