从 php 发送电子邮件时,Postfix MAIL 命令中来自 docker 容器的地址语法非法

从 php 发送电子邮件时,Postfix MAIL 命令中来自 docker 容器的地址语法非法

我正在尝试设置电子邮件后缀图像以及 php 中的 msmtp。使用 msmtp 从命令行发送电子邮件可以从 wordpress 容器发送到 postfix(我正在使用 docker compose,但我认为它不相关)。但在 php 中它不起作用。

Postfix 日志显示:

Feb 14 12:00:09 36a1774df087 postfix/smtpd[141]: connect from volume_wordpress_1.volume_default[172.23.0.4]
Feb 14 12:00:09 36a1774df087 postfix/smtpd[141]: warning: Illegal address syntax from volume_wordpress_1.volume_default[172.23.0.4] in MAIL command: <[email protected]>
Feb 14 12:00:09 36a1774df087 postfix/smtpd[141]: disconnect from volume_wordpress_1.volume_default[172.23.0.4]
Feb 14 12:03:29 36a1774df087 postfix/anvil[143]: statistics: max connection rate 1/60s for (smtp:172.23.0.4) at Feb 14 11:58:44
Feb 14 12:03:29 36a1774df087 postfix/anvil[143]: statistics: max connection count 1 for (smtp:172.23.0.4) at Feb 14 11:58:44
Feb 14 12:03:29 36a1774df087 postfix/anvil[143]: statistics: max cache size 1 at Feb 14 11:58:44

php 配置如下所示:

sendmail_path = "/usr/bin/msmtp -C /etc/msmtprc -t -i"

当我从终端运行该命令时,该命令有效。但从 php 运行该命令时,它显示上述错误。

我需要改变吗[电子邮件保护](它是内网公网机器地址,wordpress 是 docker-compose.yml 中的服务名称)?我该怎么做?

答案1

我在 StackOveflow 上对这个问题的回答中发现了这个问题使用 msmtp 通过终端发送邮件可以正常工作,但不适用于 php mail()

问题在于 /etc/msmtprc 的文件权限,它由 root 拥有,执行:

chown www-data:www-data /etc/msmtprc
chmod 600 /etc/msmtprc

解决了这个问题

相关内容