我有一个旧版 PHP 应用程序在 Rocky Linux 8 上的 Apache 2.4.37 上运行。它使用 sendgrid-mailer 来发布电子邮件。配置如下:
MAILER_DSN=smtp://127.0.0.1:25
我在同一主机上运行 Postfix。尝试从 PHP 应用程序发送电子邮件时,会记录以下错误,并且不会发布电子邮件。
Aug 21 15:47:41 MyLAMPServer postfix/smtpd[2215547]: warning: TLS library problem: error:14094418:SSL routines:ssl3_read_bytes:tlsv1 alert unknown ca:ssl/record/rec_layer_s3.c:1544:SSL alert number 48:
我的理解是我的 PHP 应用程序(客户端)和 Postfix 之间的 SSL 验证失败 - 它正在尝试验证 127.0.0.1 (localhost)。
与默认不同的Postfix配置(postconf -n)是:
mydestination = $myhostname, localhost.$mydomain, localhost
mydomain = $myhostname
mynetworks_style = host
myorigin = $mydomain
smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt
smtp_tls_CApath = /etc/pki/tls/certs
smtp_tls_security_level = may
smtpd_tls_cert_file = /etc/pki/tls/certs/postfix.pem
smtpd_tls_key_file = /etc/pki/tls/private/postfix.key
smtpd_tls_security_level = may
关于如何修复它或绕过验证有什么想法吗?
我不确定这是最安全的方法,但由于我的 PHP 站点和 Postfix 位于同一主机上,我决定将自签名证书从 PEM 转换为 CRT 格式,将其添加到 CA Trust 目录并更新 CA信任商店。
openssl x509 -in /etc/pki/tls/certs/postfix.pem -out ~/downloads/postfix.crt
cp ~/downloads/postfix.crt /etc/pki/ca-trust/source/anchors/.
update-ca-trust
我不再看到错误。