Magento2.3.5-p2使用Mageplaza SMTP发邮件遇NTLM认证与SSL证书问题
Magento 2.3.5-p2 + Mageplaza SMTP 邮件发送问题排查与解决方案
报错信息
Warning: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed /vendor/laminas/laminas-mail/src/Protocol/Smtp.php on line 225
背景情况
- 邮件服务器要求NTLM认证,但Mageplaza SMTP扩展的「认证类型」下拉菜单中无此选项
- 已通过SMTP诊断工具验证:主机使用NTLM认证可成功发送邮件
- 网站已安装有效SSL证书且运行正常,疑惑是否需单独针对邮件服务器更新CA证书
问题解答
1. Mageplaza SMTP是否支持NTLM认证?Magento 2中NTLM邮件发送的最佳替代方案?
Mageplaza SMTP扩展默认不支持NTLM认证,官方也未提供相关配置选项。
最佳替代方案分两类:
- 快速应急方案:使用支持NTLM的邮件中继服务(比如用Postfix配置NTLM中继,或第三方SMTP中继工具),让中继服务器处理NTLM认证逻辑,Magento端只需配置中继服务器的普通SMTP信息(如账号密码认证)。
- 长期定制方案:开发自定义扩展重写Mageplaza SMTP的认证流程,集成NTLM认证适配器。可基于Laminas Mail的扩展机制,新增NTLM认证适配类,替换原有的认证逻辑。
2. 选择自定义模块还是邮件中继服务器?
- 优先选邮件中继:如果团队没有Magento定制开发能力,或需要快速解决问题,中继方案配置简单、无需改动代码、风险低,适合中小团队或紧急场景。
- 选自定义模块:如果业务必须依赖内部邮件服务器,且有稳定的开发资源,可定制模块。但要注意适配Magento 2.3.5-p2对应的Laminas Mail版本,后续升级Magento或Mageplaza扩展时需同步维护。
3. 如何在不影响网站SSL的前提下更新CA证书?
网站SSL证书与邮件客户端的CA证书是独立配置,操作步骤如下:
- 定位PHP使用的CA证书路径:执行命令
php -i | grep "openssl.cafile"或php -i | grep "openssl.capath",查看当前PHP加载的CA证书文件位置。 - 获取目标CA证书:导出邮件服务器的根CA证书文件(格式为PEM)。
- 追加证书到PHP的CA包:将邮件服务器的根CA证书内容追加到PHP当前使用的cacert.pem文件末尾,既不影响网站SSL的证书验证,又能让邮件客户端识别邮件服务器的证书。
- 生效配置:重启PHP-FPM或web服务器,再用SMTP诊断工具测试邮件发送。
内容的提问来源于stack exchange,提问作者Komadurai Samidurai
相关产品推荐
相关产品推荐

