我正在尝试通过 SMTP 服务器发送邮件。并设置/etc/mail.rc
文件:
set bsdcompat
set smtp=smtps://smtp.gmail.com:465
set smtp-auth=login
set [email protected]
set smtp-auth-password=password
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
现在我可以发送邮件,但我收到如下错误:
Error in certificate: Peer's certificate issuer is not recognized.
我的 nssdb 中存在以下条目:
certutil -L -d /etc/pki/nssdb
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
谁能建议我解决这个问题?我已经google了,但没有得到正确的解决方案。
您的本地系统似乎缺少证书。Over on Server Fault是对同一问题的回答。
来自 bash 的 smtp.gmail.com 给出“证书错误:无法识别对等方的证书颁发者。”
根据您的
certutil -L -d /etc/pki/nssdb
输出,您的 nssdb 是空的!您可以转储邮件服务器证书的公共部分,
openssl s_client -showcerts -connect smtp.gmail.com:465 </dev/null
以及它可能提供的任何颁发者证书。输出会很长,但首先你应该注意以下几行:和
因此,服务器(
subject=
如果服务器证书部分和该部分0
中的证书行Certificate chain
)是smtp.gmail.com
,并且其证书是由“Google Internet Authority G3”颁发的。反过来,它已从GlobalSign Root CA - R2
.使用关键字“globalsign root ca R2”快速谷歌搜索表明这是一个相当旧的证书,将在 2021 年到期。如果你信任它,你可以在这里下载它......但导出“Google Internet Authority G3”证书的副本从您的网络浏览器的内置标准证书存储可能是一个更好的主意。
无论您选择哪种证书,一旦将其保存在文件中,您就可以将其导入到您的 nssdb 中
certutil -A -d /etc/pki/nssdb -i <certificate file>
。(如果证书以 PEM 格式导出,您可能需要添加-a
选项。)