我只想发送简单的电子邮件用于测试目的,但在容器内执行sendmail时,我得到sendmail: can't connect to remote host (127.0.0.1): Connection refused
。在Alpine容器中使用sendmail时需要考虑什么?
答案 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服务器。
答案 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的较早答案中。
RUN apk update
RUN apk add ssmtp
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。