![PHP 从 nginx server_name 获取 mail() 函数的 EHLO - 错误](https://linux22.com/image/735616/PHP%20%E4%BB%8E%20nginx%20server_name%20%E8%8E%B7%E5%8F%96%20mail()%20%E5%87%BD%E6%95%B0%E7%9A%84%20EHLO%20-%20%E9%94%99%E8%AF%AF.png)
我在虚拟主机名中使用带有正则表达式的 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;