Smtp

如何在 Linux 中使用 SMTP 伺服器發送郵件而不會出錯

  • March 19, 2019

我正在嘗試通過 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選項。)

引用自:https://unix.stackexchange.com/questions/445252