如何让sendmail在Alpine Docker容器中运行?

时间:2017-08-04 02:48:30

标签: docker sendmail alpine

我只想发送简单的电子邮件用于测试目的,但在容器内执行sendmail时,我得到sendmail: can't connect to remote host (127.0.0.1): Connection refused。在Alpine容器中使用sendmail时需要考虑什么?

4 个答案:

答案 0 :(得分:3)

在容器中没有正在运行的MTA(邮件传输代理),只是没有邮件服务器在运行。例如,您可以使用ssmtp(https://pkgs.alpinelinux.org/package/edge/main/x86/ssmtp)并将其配置为使用外部,例如您的提供者,smtp-server(例如mail.yourprovider.com)。

您可以使用ssmtp发送电子邮件。这是一个类似的情况,从php Docker镜像内部发送邮件是不可能的。在这里你可以进一步阅读 - > https://github.com/docker-library/php/issues/135

答案 1 :(得分:1)

如果使用BusyBox sendmail,则可以在php.ini文件中设置配置。

BusyBox sendmail中继到SMTP服务器。您可以使用-S选项在命令行上指定服务器。

我在php.ini中的配置是:

sendmail_path = /usr/sbin/sendmail -S 172.16.239.1 -t -i

我在另一个容器中使用SMTP服务器。

https://technote.fyi/code/sysadmin/docker/configuring-alpine-linux-on-docker-to-send-mail-for-wordpress/

答案 2 :(得分:0)

将SMTPHOST环境变量设置为smtp服务器的主机名或IP。 自2008年9月27日以来,在busybox sendmail提交(https://git.busybox.net/busybox/commit/?id=bed22a01fb19de6e4b4c2c7d8c5953bc7aa2580e)中就存在使用此变量的代码,但用法页面仅在2016-07-14时提交了https://git.busybox.net/busybox/commit/?id=9de7509aa013a8634b13a29008cd58ca971c9c7c。请注意,在线文档页面没有反映这些更改https://www.busybox.net/downloads/BusyBox.html。使用sendmail --help查看正确的用法。

答案 3 :(得分:0)

添加到m4r10k的较早答案中。

  1. 在容器的docker文件中安装ssmtp。
RUN apk update
RUN apk add ssmtp
  1. 在主机上创建配置文件
root=postmaster
mailhub=mail.privateemail.com:587
FromLineOverride=YES
rewriteDomain=<YouDomain.com>
AuthUser=<YouEMail@YourDomain.com
AuthPass=<YouUserPass>
UseSTARTTLS=YES
hostname=YourDomain.com

在运行容器时使用卷以使用ssmtp.conf

从NameCheap使用docker-compose和SMTP查看full example here