CentOS 7(LAMPP & Laravel)服务器如何配置SSL正常发送邮件
解决CentOS 7 LAMPP环境下SMTP SSL发送邮件失败问题
这个问题本质是CentOS 7环境下PHP无法完成smtp.example.com的SSL证书合法性校验导致的,按以下步骤处理即可:
1. 更新系统CA证书库
- 安装/更新系统根证书包:
yum install ca-certificates -y - 启用动态CA配置功能:
update-ca-trust force-enable - 如果你使用的smtp.example.com是自签名证书,将证书的PEM格式文件上传到
/etc/pki/ca-trust/source/anchors/目录,执行以下命令更新证书库:update-ca-trust extract
2. 配置LAMPP PHP的SSL证书路径
LAMPP自带的PHP默认可能未指向系统CA证书库,需要手动修改php.ini配置:
- 打开LAMPP默认php.ini文件:
vi /opt/lampp/etc/php.ini - 找到openssl相关配置项,去掉注释并修改为以下值:
openssl.cafile = "/etc/pki/tls/certs/ca-bundle.crt" openssl.capath = "/etc/pki/tls/certs" - 保存配置后重启LAMPP服务生效:
/opt/lampp/lampp restart
3. 验证SSL连接有效性
使用openssl命令测试SMTP服务器的SSL连接是否能正常通过系统验证:
- 若使用SMTP over SSL(端口默认465):
openssl s_client -connect smtp.example.com:465 -CApath /etc/pki/tls/certs - 若使用STARTTLS(端口默认587):
openssl s_client -connect smtp.example.com:587 -starttls smtp -CApath /etc/pki/tls/certs
输出末尾的Verify return code显示为0 (ok)即代表系统层面SSL验证正常。
4. 恢复邮件配置的SSL校验规则
删除之前绕过验证的配置,恢复标准校验规则即可:
'stream' => [ 'ssl' => [ 'allow_self_signed' => false, 'verify_peer' => true, 'verify_peer_name' => true, ], ],
注意:如果完成以上配置后仍验证失败,请确认smtp.example.com的证书
Subject Alternative Name字段包含smtp.example.com,且证书未过期。
内容的提问来源于stack exchange,提问作者Phil
相关产品推荐
相关产品推荐

