我只是想发送简单的电子邮件进行测试,但是当在容器中执行sendmail时,我得到了sendmail: can't connect to remote host (127.0.0.1): Connection refused。在Alpine容器内使用sendmail时需要考虑什么?
sendmail: can't connect to remote host (127.0.0.1): Connection refused
63lcw9qa1#
在一个容器中,没有运行的MTA(邮件传输代理),只是没有运行的邮件服务器。例如,您可以使用ssmtp(https://pkgs.alpinelinux.org/package/edge/main/x86/ssmtp)并将其配置为使用外部,例如您的提供商,smtp-server(例如,smtp服务器)。mail.yourprovider.com)上提供。比您可以使用ssmtp发送电子邮件。这是一个类似的情况,从php Docker镜像内部发送邮件是不可能的。在这里您可以进一步阅读-> https://github.com/docker-library/php/issues/135
0s7z1bwu2#
如果您使用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/
aurhwmvo3#
将SMTPHOST环境变量设置为smtp服务器的主机名或IP。使用此变量的代码自2008-09-27以来就存在于busybox sendmail commit(https://git.busybox.net/busybox/commit/?id=bed22a01fb19de6e4b4c2c7d8c5953bc7aa2580e)中,但使用页面仅在2016-07-14更新了commit https://git.busybox.net/busybox/commit/?id=9de7509aa013a8634b13a29008cd58ca971c9c7c。请注意,在线文档页面没有反映这些更改https:www.busybox.net/downloads/BusyBox.html。使用sendmail --help查看正确的用法。
4jb9z9bj4#
添加到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。
bsxbgnwa5#
这是我使用mailhog作为smtp的设置:
docker-compose:
version: "3" services: drupal: build: . container_name: ${PROJECT_NAME}-drupal depends_on: - mysql restart: unless-stopped networks: - internal volumes: - ./docroot:/var/www/html - ./config:/home/config mailhog: image: mailhog/mailhog:latest container_name: ${PROJECT_NAME}-mailhog ports: - "1025:1025" - "8025:8025" restart: unless-stopped networks: - internal
不要忘记在php和mailhog容器之间共享同一个网络。在Dockerfile中安装mhsendmail,并将其二进制模式改为0755,使其可执行,最后在PHP中添加mhsendmail配置:
Dockerfile php:7.4-fpm-alpine3.14:
RUN curl -LkSso /usr/bin/mhsendmail 'https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64'&& \ chmod 0755 /usr/bin/mhsendmail && \ echo 'sendmail_path = "/usr/bin/mhsendmail --from=nobody@7bd822a2c191 --smtp-addr=mailhog:1025"' >> /usr/local/etc/php/php.ini;
现在从php容器内部发送一封电子邮件来测试配置:
$ php -r "mail('recipient@mail.com', 'test subject', 'test body');"
来源:https://github.com/mailhog/MailHog/issues/254
k3bvogb16#
这是对用户kitanotori的请求:请将标题更改为 * 如何从Alpine Linux容器内发送邮件 *,而不是使用单词 sendmail(并请删除此标签),因为这很可能会误导正在寻找如何在Alpine Linux容器中运行开源MTA Sendmail的人,恕我直言,这绝对是有意义的-与用户m4r10k的观点相反。注:我请求原谅,如果这不是正确的方式提到这一点,但与我目前的网站声誉作为一个不到一个星期作为一个活跃的成员,我没有看到任何其他方式来解决这个问题。
6条答案
按热度按时间63lcw9qa1#
在一个容器中,没有运行的MTA(邮件传输代理),只是没有运行的邮件服务器。例如,您可以使用ssmtp(https://pkgs.alpinelinux.org/package/edge/main/x86/ssmtp)并将其配置为使用外部,例如您的提供商,smtp-server(例如,smtp服务器)。mail.yourprovider.com)上提供。
比您可以使用ssmtp发送电子邮件。这是一个类似的情况,从php Docker镜像内部发送邮件是不可能的。在这里您可以进一步阅读-> https://github.com/docker-library/php/issues/135
0s7z1bwu2#
如果您使用BusyBox sendmail,则可以在php.ini文件中设置配置。
BusyBox sendmail中继到SMTP服务器。您可以在命令行中使用-S选项指定服务器。
我在php.ini中的配置是:
我在另一个容器中使用SMTP服务器。
https://technote.fyi/code/sysadmin/docker/configuring-alpine-linux-on-docker-to-send-mail-for-wordpress/
aurhwmvo3#
将SMTPHOST环境变量设置为smtp服务器的主机名或IP。使用此变量的代码自2008-09-27以来就存在于busybox sendmail commit(https://git.busybox.net/busybox/commit/?id=bed22a01fb19de6e4b4c2c7d8c5953bc7aa2580e)中,但使用页面仅在2016-07-14更新了commit https://git.busybox.net/busybox/commit/?id=9de7509aa013a8634b13a29008cd58ca971c9c7c。请注意,在线文档页面没有反映这些更改https:www.busybox.net/downloads/BusyBox.html。使用sendmail --help查看正确的用法。
4jb9z9bj4#
添加到m4r10k的早期答案。
1.在容器的docker文件中安装ssmtp。
1.在主机上创建配置文件
在运行容器时使用卷以使用ssmtp.conf
从NameCheap查看使用docker-compose和SMTP的full example here。
bsxbgnwa5#
这是我使用mailhog作为smtp的设置:
docker-compose:
不要忘记在php和mailhog容器之间共享同一个网络。
在Dockerfile中安装mhsendmail,并将其二进制模式改为0755,使其可执行,最后在PHP中添加mhsendmail配置:
Dockerfile php:7.4-fpm-alpine3.14:
现在从php容器内部发送一封电子邮件来测试配置:
来源:https://github.com/mailhog/MailHog/issues/254
k3bvogb16#
这是对用户kitanotori的请求:请将标题更改为 * 如何从Alpine Linux容器内发送邮件 *,而不是使用单词 sendmail(并请删除此标签),因为这很可能会误导正在寻找如何在Alpine Linux容器中运行开源MTA Sendmail的人,恕我直言,这绝对是有意义的-与用户m4r10k的观点相反。
注:我请求原谅,如果这不是正确的方式提到这一点,但与我目前的网站声誉作为一个不到一个星期作为一个活跃的成员,我没有看到任何其他方式来解决这个问题。