Smtp
如何在 Linux 中使用 SMTP 伺服器發送郵件而不會出錯
我正在嘗試通過 SMTP 伺服器發送郵件。並設置
/etc/mail.rc
文件:set bsdcompat set smtp=smtps://smtp.gmail.com:465 set smtp-auth=login set smtp-auth-user=user@gmail.com 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了,但沒有得到正確的解決方案。
根據您的
certutil -L -d /etc/pki/nssdb
輸出,您的 nssdb 是空的!您可以轉儲郵件伺服器證書的公共部分,
openssl s_client -showcerts -connect smtp.gmail.com:465 </dev/null
以及它可能提供的任何頒發者證書。輸出會很長,但首先你應該注意以下幾行:Server certificate subject=/C=US/ST=California/L=Mountain View/O=Google LLC/CN=smtp.gmail.com issuer=/C=US/O=Google Trust Services/CN=Google Internet Authority G3
和
Certificate chain 0 s:/C=US/ST=California/L=Mountain View/O=Google LLC/CN=smtp.gmail.com i:/C=US/O=Google Trust Services/CN=Google Internet Authority G3 [...] 1 s:/C=US/O=Google Trust Services/CN=Google Internet Authority G3 i:/OU=GlobalSign Root CA - R2/O=GlobalSign/CN=GlobalSign
因此,伺服器(
subject=
如果伺服器證書部分和該部分0
中的證書行Certificate chain
)是smtp.gmail.com
,並且其證書是由“Google Internet Authority G3”頒發的。反過來,它已從GlobalSign Root CA - R2
.使用關鍵字“globalsign root ca R2”快速Google搜尋表明這是一個相當舊的證書,將於 2021 年到期。如果你信任它,你可以在這裡下載它……但導出“Google Internet Authority G3”證書的副本從您的網路瀏覽器的內置標准證書儲存可能是一個更好的主意。
無論您選擇哪種證書,一旦將其保存在文件中,您就可以將其導入到您的 nssdb 中
certutil -A -d /etc/pki/nssdb -i <certificate file>
。(如果證書以 PEM 格式導出,您可能需要添加-a
選項。)