laravel 使用 tls 和我自己的 postfix/virtualmin 服务器发送电子邮件时显示错误

laravel shows error when sending email using tls and my own postfix/virtualmin server

我们已经安装了我们自己的 postfix/virtualmin 服务器并且我们有一个 laravel 应用程序,问题是当我们使用外部 smtp 服务器时,使用 tls 选项没有问题,并且电子邮件是发送正常,但是在使用我们的新 smtp 服务器时,在使用 tls 时出现此错误:

stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed 

这一定是关于我们的 postfix/virtualmin 服务器中缺少证书的问题,但是,我不知道从哪里开始,我们已经有一个 letsencrypt 证书,但我相信我们可能需要转换它们到加州或类似的东西?我不确定,所以我需要你的帮助。

谢谢,

下载最新的cacert.pem file from cURL website

wget https://curl.haxx.se/ca/cacert.pem

编辑 php.ini(您可以 php --ini 找到它),更新(如果它们不存在则创建)这两行:

curl.cainfo="/path/to/downloaded/cacert.pem"
...
openssl.cafile="/path/to/downloaded/cacert.pem"

这些行应该已经存在但被注释掉了,所以取消注释并使用下载的路径编辑这两个值 cacert.pem

重新启动 PHP 和 Nginx/Apache。

我解决了问题。

我的 virtualmin/postfix 设置缺少 CA 认证,并且由于我对 ssl 使用了 letsencrypt,所以我不得不将生成的 CA 路径放入配置中。

此处:Webmin --> 服务器 ---> PostFix 邮件服务器 ----> Smtp 身份验证和加密。