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

Laravel 9在Ubuntu VPS上SMTP报STARTTLS证书验证失败问题求助

故障根本诱因

报错核心为SMTP连接时TLS证书校验失败,这里存在一个很容易踩的配置认知偏差:Laravel 9底层使用Symfony Mailer组件,即使你在.env中配置MAIL_ENCRYPTION=null,只要25端口连接的SMTP服务端宣告支持STARTTLS,组件会自动尝试发起TLS加密协商,不会跳过证书校验流程。
触发该报错的常见原因有三类:

  • VPS本地CA根证书库版本过旧,无法识别smtp.i4ware.fi所持SSL证书的签发根机构,导致校验链断裂
  • VPS本地DNS解析异常,将smtp.i4ware.fi解析到了错误的IP地址,实际连接到了持有非匹配域名证书的第三方节点
  • VPS到SMTP服务器的网络链路存在运营商防火墙、透明代理拦截,篡改替换了SMTP服务端返回的SSL证书
排查步骤

按顺序执行以下操作定位问题:

  • 校验DNS解析一致性:在VPS终端执行dig +short smtp.i4ware.fi,将返回的IP地址和你本地办公网络解析到的同域名IP做对比,如果结果不一致,说明VPS配置的DNS服务器存在解析污染,先将VPS的DNS替换为公共DNS(如1.1.1.1、8.8.8.8)后再重试。
  • 手动验证TLS证书有效性:在VPS终端执行命令openssl s_client -connect smtp.i4ware.fi:25 -starttls smtp,查看输出末尾的Verify return code字段:
    • 如果值不是0 (ok),根据报错细分原因:提示unable to get local issuer certificate为本地CA证书库问题;返回证书绑定域名和smtp.i4ware.fi不匹配,说明解析被劫持或链路存在证书篡改。
  • 确认端口可用性:多数VPS厂商会默认封禁25端口防止垃圾邮件,先确认你的VPS 25端口的出网权限,同时核对邮件服务商官方公布的SMTP端口配置(通常587对应STARTTLS加密,465对应隐式SSL加密)。
修复方案

按优先级从高到低选择操作,优先选择不降低安全性的方案:

  1. 更新本地CA证书库(首选)
    执行以下命令更新系统内置的CA根证书库:
sudo apt update
sudo apt install --reinstall ca-certificates
sudo update-ca-certificates

更新完成后重启对应版本的PHP-FPM服务(以PHP8.1为例,其他版本替换版本号即可):

sudo systemctl restart php8.1-fpm

同时修正.env中的SMTP配置,不要使用无加密的25端口,改用服务商支持的加密端口:

MAIL_PORT=587
MAIL_ENCRYPTION=tls

配置修改完成后,在项目根目录执行php artisan config:clear清除Laravel配置缓存,再测试发信。

  1. 临时禁用证书校验(仅作临时排障用,不推荐生产环境长期使用)
    如果确认链路可信但证书校验始终无法通过,可以修改项目下config/mail.php的smtp配置段,添加流上下文参数禁用证书校验:
'smtp' => [
    'transport' => 'smtp',
    'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
    'port' => env('MAIL_PORT', 587),
    'encryption' => env('MAIL_ENCRYPTION', 'tls'),
    'username' => env('MAIL_USERNAME'),
    'password' => env('MAIL_PASSWORD'),
    'timeout' => null,
    'local_domain' => env('MAIL_EHLO_DOMAIN'),
    'stream' => [
        'ssl' => [
            'verify_peer' => false,
            'verify_peer_name' => false,
            'allow_self_signed' => true,
        ],
    ],
],

修改完成后同样执行php artisan config:clear清除缓存生效。注意:该配置会跳过TLS证书校验,存在邮件传输内容被窃听、中间人攻击的风险,生产环境务必优先解决证书校验问题,不要长期使用该配置。

  1. 解决端口封禁问题
    如果排查确认25端口被VPS厂商封禁,优先联系厂商申请解封25端口;如果无法解封,直接改用邮件服务商提供的465/587加密端口提交邮件,不要继续尝试25端口连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 23:12:24