PHP 从 nginx server_name 获取 mail() 函数的 EHLO - 错误

PHP 从 nginx server_name 获取 mail() 函数的 EHLO - 错误

我在虚拟主机名中使用带有正则表达式的 nginx 来捕获子域名,以便稍后使用:

server_name ~^(?<subdir>(\\w|\\-)*)(\\.)?(domain\\.org)$;

我发现 PHP(从 nginx 作为 FPM 运行)中的 mail() 函数不发送电子邮件。

我查看了 exim 日志并发现了以下内容:

2019-03-27 20:51:56 rejected EHLO from [127.0.0.1]: syntactically invalid argument(s): ~^(?<subdir>(\\w|\\-)*)(\\.)?(domain\\.org)$

当然,这是一个无效的 EHLO。看起来 PHP 从 nginx 获取了它。但我还没有找到控制它的方法(除了更改虚拟主机名)。我在 PHP 中使用了这个配置参数:

sendmail_path="/usr/sbin/exim -t -i -f [email protected]"

不过,禁用进出口检查可能不是一个好主意。

谢谢

答案1

解决方案是在 nginx 配置中明确设置 SERVER_NAME:

fastcgi_param SERVER_NAME domain.org;

相关内容