zl程序教程

您现在的位置是:首页 >  系统

当前栏目

linux下通过mailx发送qq企业邮件:Error in certificate: Peer's certificate issuer is not recognized.

LinuxQQ企业 Error in 通过 not &#
2023-09-27 14:24:27 时间

背景

  既然有腾讯企业邮箱了,为什么不充分利用呢?!

  遂在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 .