通过 Gmail 从 Postfix 发送邮件:无法获取本地颁发者证书、证书不受信任、未找到有价值的机制

通过 Gmail 从 Postfix 发送邮件:无法获取本地颁发者证书、证书不受信任、未找到有价值的机制

系统规格

  • CentOS 5.5
  • Postfix 2.3.3

设想

我一直在关注配置 Postfix 通过端口 587 发送/中继电子邮件 Gmail(smtp.gmail.com)尝试让 Postfix 和 Gmail 之间的连接正常工作。说明很清楚。在执行完选定的答案说,我的邮件日志中出现此错误:

Dec 12 08:45:00 stiltify postfix/smtp[21745]: certificate verification failed for smtp.gmail.com: num=20:unable to get local issuer certificate
Dec 12 08:45:00 stiltify postfix/smtp[21745]: certificate verification failed for smtp.gmail.com: num=27:certificate not trusted
Dec 12 08:45:00 stiltify postfix/smtp[21745]: warning: SASL authentication failure: No worthy mechs found
Dec 12 08:45:00 stiltify postfix/smtp[21745]: 6BC962B58006: to=<[email protected]>, relay=smtp.gmail.com[74.125.93.109]:587, delay=0.27, delays=0.05/0.01/0.21/0, dsn=4.7.0, status=deferred (SASL authentication failed; cannot authenticate to server smtp.gmail.com[74.125.93.109]: no mechanism available)

类似问题

搜索类似的情况,我发现Postfix “SASL 身份验证失败:未找到有价值的机制”但查看所选答案的详细信息,它略有不同,我认为这意味着发送服务器不信任 Gmail 的证书:

untrusted issuer /C=US/O=Equifax/OU=Equifax Secure Certificate Authority

可惜...

所以我又一次陷入了邮件问题,需要你的帮助。

提前致谢!

答案1

听起来可能有两个不同的问题。现在我为有关通过 Gmail 转发的问题提供了答案,我的答案是在 Ubuntu 笔记本电脑配置上完成的,而不是 CentOS,不幸的是我手边没有 CentOS 机器可以测试这一点。

在我看来,以下情况可能会导致问题。

  1. 检查以确保已安装 SASL 二进制文件和库。在我的 Ubuntu/Debian 机器上,这将包括libsasl2-2libsasl2-modules包。后者实际上提供了 SO SASL 模块,而前者提供了 SASL DB 库。

  2. 检查您是否安装了受信任的 CA 根链证书。在我的 Ubuntu/Debian 机器上,我安装了ca-certificate安装已知根级 CA 证书的软件包,并允许我建立 CA 证书链来验证由已知 CA 签名的证书。

检查我的 Ubuntu 笔记本电脑后进行更新以添加...证书问题实际上是一个非关键问题,因此项目#2 可能没有问题,因为我自己得到了相同的条目,但邮件已成功发送,这更倾向于项目#1 导致发送失败。

Dec 12 07:51:56 solitare postfix/smtp[17525]: setting up TLS connection to smtp.gmail.com[74.125.67.109]:587
Dec 12 07:51:56 solitare postfix/smtp[17525]: certificate verification failed for smtp.gmail.com[74.125.67.109]:587: untrusted issuer /C=US/O=Equifax/OU=Equifax Secure Certificate Authority
Dec 12 07:51:56 solitare postfix/smtp[17525]: Untrusted TLS connection established to smtp.gmail.com[74.125.67.109]:587: TLSv1 with cipher RC4-MD5 (128/128 bits)
Dec 12 07:51:58 solitare postfix/smtp[17525]: 41C7212823B: to=<root@****>, orig_to=<root>, relay=smtp.gmail.com[74.125.67.109]:587, delay=2.4, delays=0.22/0.01/0.62/1.5, dsn=2.0.0, status=sent (250 2.0.0 OK 1292158318 b27sm3067589ana.28)

在 Amazon EC2 上启动了一个 CentOS 5.4 实例,然后查看了一下...结合 CentOS 上的第 1 项,我会查看您是否至少安装了以下软件包:cyrus-sasl-libcyrus-sasl-plain和...如果您需要,cyrus-sasl还有其他软件包提供单独的 SASL 模块,但和应该是所需的基本知识。cyrus-sasl-*-lib-plain

答案2

我的 CentOS 安装遇到了同样的问题,我通过安装解决了它cyrus-sasl-plain

答案3

我认为 gmail 的证书没有任何问题,因为正如您上面所说,它是由 equifax 1颁发的。

我不是 Postfix 的粉丝,但通常的原因是执行验证的工具(在本例中为 Postfix)没有“证书包”——该工具用来验证提供给它的证书链的公理可信证书集合。Sendmail(我确实使用它)有以下 m4 配置行来将其指向包:

define(`confCACERT', `/etc/pki/tls/certs/ca-bundle.crt')dnl

寻找与后缀类似的内容。

1好的,好的,它声称是由 equifax 颁发的;但根据我的证书包,它确实是由 equifax 颁发的:

[madhatta@risby ~]$ openssl s_client -starttls smtp -connect smtp.gmail.com:587
CONNECTED(00000003)
depth=2 C = US, O = Equifax, OU = Equifax Secure Certificate Authority
verify return:1
depth=1 C = US, O = Google Inc, CN = Google Internet Authority
verify return:1
depth=0 C = US, ST = California, L = Mountain View, O = Google Inc, CN = smtp.gmail.com
verify return:1
[...]

相关内容