码头工人。从主机发送邮件

Posted

技术标签:

【中文标题】码头工人。从主机发送邮件【英文标题】:Docker. Send mail from host 【发布时间】:2017-06-24 10:03:57 【问题描述】:

我可以使用邮件从主机发送邮件:

mail -s "Hooray" smb@example.com < /dev/null

但我想使用主机服务器从 docker 容器发送邮件。当我尝试在运行命令中将其映射到 25 端口时,Docker 说“端口已在使用中”:

run -ti -p 25:25 container

我怎样才能实现目标? Host是Centos,docker使用Ubuntu。

【问题讨论】:

嗨。你找到解决办法了吗? @spiil 你好,不,我放弃了:) 我设法直接从 gmail smtp 服务器发送电子邮件 哦,好的。谢谢你的回复:) 【参考方案1】:

您不能在同一个端口上侦听多个应用程序。因此,如果主机上已经有一个应用程序在侦听端口 25,您可以停止该应用程序,或者将您的容器配置为侦听不同的主机端口,例如:

run -ti -p 2525:25 container

这会导致端口从主机端口 2525 映射到容器端口 25。如果您不需要从容器接收邮件,您可以完全删除此端口映射,仍然允许您发送出站消息。

如果您不知道主机上的 25 端口在使用什么,您可以使用 netstat 命令进行查找:

sudo netstat -lntp

请注意,如果您想查看正在侦听端口的进程,则需要 sudo。

【讨论】:

我想从容器中发送邮件(根本不想接收),所以我根本不需要映射端口? 如果您不需要从容器接收邮件,您可以完全删除此端口映射,这样您仍然可以发送出站邮件。【参考方案2】:

将端口转发与 docker 容器一起使用,您可以将容器的端口转发到主机。因此,邮件服务器已在主机上使用端口 25。这里需要将端口从主机转发到容器:

Forward host port to docker container

最简单的方法是使用--net=host选项:

docker run --rm -it --net=host container mail -s "Hooray" smb@example.com < /dev/null

【讨论】:

也许有一种方法可以在不使用 --net=host 的情况下做到这一点?我也在网络中使用其他几个容器。

以上是关于码头工人。从主机发送邮件的主要内容,如果未能解决你的问题,请参考以下文章

绕过 Gmail 的垃圾邮件过滤器(使用 PHP 从共享主机发送的邮件)

使用 gmail 从本地主机发送邮件

从本地主机发送电子邮件

使用xampp从本地主机向特定的电子邮件ID发送电子邮件[重复]

如何在 ubuntu 14.04 中从本地主机发送邮件

如何正确地从本地主机发送电子邮件 [关闭]