linux下通過mailx發送qq企業郵件:Error in certificate: Peer's certificate issuer is not recognized.


背景

  既然有騰訊企業郵箱了,為什么不充分利用呢?!

  遂在centos7下,通過mailx來配置mail.rc,並向外網發送郵件。

 

基本過程

  centos下安裝mailx,過程略

  配置/etc/mail.rc,其定制內容如下:

    

set from=user@enterprise.domain

#set smtp-use-starttls

set smtp=smtps://smtp.exmail.qq.com:465

set smtp-auth=login
set smtp-auth-user=user@enterprise.domain
set smtp-auth-password=password

#set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb

  難點:關鍵點:配置“nss-config-dir”:這是個存放用戶自定義的證書庫的【目錄】,其中包含多個證書庫文件,可供mailx命令底層ssl(tls)庫去訪問證書信息以便進行通訊和認證等。第 1:該配置必須存在,第 2:該目錄必須存在且可訪問, 第 3:該目錄內必須含有證書庫文件——哪怕其中沒有證書配置信息,第 4:為了正常和騰訊企業郵箱正常通訊,我們必須添加騰訊企業郵箱的上級CA證書為信任,注意,不是騰訊企業郵箱自己的證書——這是網上絕大部分教程案例錯誤的根本原因。

  怎么獲取騰訊企業郵箱的上級CA證書呢?簡單,可用通過瀏覽器web方式登錄騰訊企業郵箱,然后再瀏覽器相關設置或功能內下載或導出該證書。使用firefox非常簡單,如下圖所示。將該證書下載下來(提示:可以使用 任何計算機或你喜歡的設備與方式 將該文件下載),傳到mailx的服務器的指定nss-config-dir目錄下。之后進入該nss-config-dir目錄下,通過certutils工具添加該CA證書為信任即可!

 

  最后,即可通過mailx命令發送郵件,示例如下:

    

echo  "This is a test mail body!" | mailx -s "test-ok" destcontact@dest.domain

   

  如果nss-config-dir的配置不合適,mailx會發出一個警告“Error in certificate: Peer's certificate issuer is not recognized.” ! 首先,肯定是推薦通過正確配置解決。其次,如果不行或嫌麻煩,則可以偷懶,屏蔽掉這個警告,mailx的調用如下:

echo  "test11"|mailx -s "test" jinzhenshui@cnce.cn 2>/dev/null
echo  "test11"|mailx -s "test" jinzhenshui@cnce.cn 2>/dev/null
echo  "test11"|mailx -s "test" jinzhenshui@cnce.cn 2>/dev/null

 

 

附注一:firefox瀏覽器獲取exmail.qq.com的上級CA證書 “DigiCert Secure Site CN CA G3

 

 

 

 

 

 

 

附注二:chrome、edge瀏覽器獲取exmail.qq.com的上級CA證書 “DigiCert Secure Site CN CA G3” 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

 

附注三:firefox獲取的證書鏈(pem),其內部是base64編碼的證書文本,從文件的上到下,依次上最終用戶證書、然后是上級CA機構證書、...直到文件最后是CA根root證書。換言之,我們只要下載這個證書鏈文件,就可根據需要,手工提取出各級證書。另外,firefox的證書鏈,可以再各個級別的tab下執行,下載的都是本網頁開始的全部鏈證書(作為對比,chrome、edge是通過windows的證書管理器,只能復制或說導出本級及其上的證書鏈)。

 

附注四:對於可能包含證書鏈的p7p格式的文件,我們可以直接通過windows的證書管理器certmgr去進行查看、導出相關的證書。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

附注五:數字證書常見標准和格式

  轉1: 數字證書常見格式整理 - 崔咩咩 - 博客園 (cnblogs.com)

  轉2:常見的數字證書格式 - FrankYou - 博客園 (cnblogs.com)

  轉3:

  轉4:

 

 

附注六:certutils工具基本使用

# add ca of top level
certutil -A -n "anynameCA1" -t "C,C,C"  -d ./ -i c1.crt 
# add crt of tencent exmail
certutil -A -n "exmail" -t "P,P,P"  -d ./ -i exmail-qq-com.pem 

# delete cert db
#rm -rf *.db
# delete a cert
certutil -D -n p1 -d .

# list certs
certutil -L -d .

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM