You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Swarm环境下PHPMailer报Invalid Host错误的排查与解决

Docker Swarm下PHPMailer连接Postfix容器报“invalid host”的解决方法

问题场景

在Docker Swarm环境部署集成PHPMailer的Open Journal System,包含php-fpm和postfix两个容器。php-fpm容器可通过Swarm配置的容器名foo_postfix访问postfix容器,能telnet到对应端口并通过bash发送邮件,但使用该容器名作为PHPMailer的主机名时,触发“invalid host”错误。

原因分析

查看代码发现主机名验证逻辑存在URL格式校验:

if (filter_var('http://' . $host, FILTER_VALIDATE_URL) !== false)

容器名foo_postfix包含下划线,拼接成http://foo_postfix后不符合URL主机名规范(URL主机名不允许下划线字符),因此验证失败报错。Docker Swarm容器默认域名格式为服务名.网络名(如foo_postfix.netName),但原容器名本身不满足校验要求。

解决方法

为postfix容器添加符合域名规范的网络别名,修改Swarm部署配置:

networks:
  netName:
    aliases:
      - foo.postfix
      - foo_postfix

配置完成后,在PHPMailer中使用foo.postfix作为主机名即可通过验证,同时保留原别名foo_postfix兼容其他访问场景。

内容的提问来源于stack exchange,提问作者Alberto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 10:54:53