cPanel部署多Laravel应用出现SMTP Error 503邮件发送故障求助
问题原因排查&解决方案
核心原因
你遇到的503错误本质是请求被转发到了未配置无认证中继的邮件服务,结合你的场景,90%的概率是cPanel/WHM默认开启的SMTP限制功能拦截了web请求的对外25端口连接:
- 命令行下跑Tinker、telnet时,执行用户通常是SSH登录的root/授权用户,不受SMTP限制规则拦截,能直接连接你的Exchange SMTP服务器,所以发送成功
- web请求触发发信时,执行用户是cPanel账号对应的普通站点用户,所有到25端口的请求会被强制转发到服务器本地的Exim MTA,本地Exim没有配置允许无认证中继,所以返回503错误
可用解决方案
按优先级从高到低排序:
- 关闭WHM的SMTP限制(最快生效)
登录WHM后台,搜索找到「SMTP Restrictions」功能,直接关闭即可,关闭后站点请求可以正常对外连接Exchange的25端口发信。 - 清理Laravel配置缓存
部分场景下你修改.env文件后没有清理配置缓存,web请求读的是旧缓存配置,而Tinker会实时读取.env内容,也会出现两边表现不一致的情况,先执行命令清理缓存:php artisan config:clear - 走本地Exim中继到Exchange
如果不想关闭SMTP限制,可以在WHM的Exim配置管理器里,设置本地Exim将所有外发邮件中继到你的Exchange服务器,同时把服务器IP加入Exchange的IP白名单,也能正常发信。 - 改用SMTP认证端口发信
直接修改Laravel邮件配置,用Exchange的带认证SMTP端口(通常是587,加密方式TLS),填写正确的邮箱用户名、密码,不需要走25端口也可以避开SMTP限制:MAIL_DRIVER=smtp MAIL_HOST=host.domain.com MAIL_PORT=587 MAIL_USERNAME=你的完整邮箱地址 MAIL_PASSWORD=邮箱密码 MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS="info@domain.com" MAIL_FROM_NAME="Example"
内容的提问来源于stack exchange,提问作者Abdush Shakoor Mohamed Nazeer
相关产品推荐
相关产品推荐

