【问题标题】:How to send mail from Ubuntu server using dockerized mail server如何使用 dockerized 邮件服务器从 Ubuntu 服务器发送邮件
【发布时间】:2019-06-20 09:05:38
【问题描述】:

我正在寻找一种以编程方式从 Linode Ubuntu 服务器发送电子邮件的简单方法(不是批量或垃圾邮件,简单的 iOT 类型通知)。我有一个 dockerized postfix/dovecot 系统启动并运行,但我不知道如何从容器外部使用它。我已经查看了 sendmail,但这似乎是重复的,因为我已经配置了 SMTP 服务器。我的问题是我可以在我的 Ubuntu 服务器上安装什么,让我可以从使用 docker 容器中现有 SMTP 服务器的命令行(脚本)发送简单的电子邮件?

【问题讨论】:

    标签: docker smtp sendmail postfix-mta mutt


    【解决方案1】:

    对于这个问题,我找到的最简单的解决方案是nodemailer,因为我需要发送电子邮件的应用程序是一个 node.js 应用程序,我像从电子邮件客户端一样连接到它。

    【讨论】:

    • 好的,更适合您的问题。 +1
    【解决方案2】:

    这类似于拥有一个必须发送电子邮件的 Jenkins 容器,as described here:

    对于容器化的 Jenkins 系统,邮件服务器也可以配置在同一管理 Jenkins 页面,电子邮件通知部分。
    唯一的区别是提供给 SMTP 服务器选项的 IP/主机名。 不要提供已知的 SMTP 服务器的 IP 和主机,而应使用docker0 的 IP

    对于企业网络,您可能必须改用 SMTP 中继服务器。对于这些情况,您可以通过setting up Postfix 配置 SMTP 通信。

    安装后,用正确的继电器信息更新/etc/postfix/main.cfmyhostnamemyoriginmydestinationrelayhostalias_mapsalias_database

    但是:

    需要对 Postfix 进行两项更改以将其公开给一台主机上的 Docker 容器。

    1. 将 Postfix 暴露给 docker 网络,即 Postfix 必须配置为绑定到 localhost 以及 docker 网络。
    2. 接受来自任何 Docker 容器的所有传入连接。

    Docker 网桥 (docker0) 充当以太网端口和 docker 容器之间的桥梁,以便数据可以来回传输。
    我们通过将docker0的IP添加到inet_iterfaces来实现第一个要求。

    对于第二个要求,应将整个 docker 网络以及 localhost 添加到 mynetworks

    【讨论】:

    • 有趣。那里可能有用,但它与我的问题相反——我的后缀安装是 docker 容器,我想从主机本身发送。我找到了解决方案,见下文。
    • 谢谢,这解决了我遇到的问题——无法从容器中发送电子邮件。我还必须从 inet_interfaces 参数中删除 loopback-only
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-16
    • 2013-06-16
    • 1970-01-01
    • 1970-01-01
    • 2015-05-24
    • 2021-01-25
    • 2015-01-07
    相关资源
    最近更新 更多