ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

linux下使用本地客户端发送邮件到QQ邮箱

2021-10-20 21:03:43  阅读:447  来源: 互联网

标签:QQ qq set smtp certs linux mail com 客户端


 

mail是客户端,sendmail/postfix是服务端;mail默认使用sendmail对外发送邮件。mail命令的系统级配置文件是/etc/mail.rc,用户级别的默认配置文件是~/.mailrc

yum install mailx -y

使用非加密方式

SMTP的主要配置,编辑/etc/mail.rc

 

cat >>/etc/mail.rc <<EOF
set from=12345@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=12345@qq.com
set smtp-auth-password=wqfsvfpzdtssbida
set smtp-auth=login

EOF

  

 使用ssl加密

需要 QQ 邮箱的 SSL 证书,所以还需要手动的获取QQ邮箱的证书

#创建一个存放证书的目录
mkdir -p /root/.certs/


#获取QQ 邮箱的 SSL 证书
echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt


#添加第一个证书到证书数据库中
certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt


#添加第二个证书到证书数据库中
certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt


#列出指定的目录下的所有证书
certutil -L -d /root/.certs

#解决出现提示”Error in certificate: Peer's certificate issuer has been marked as not trusted by the.
cd /root/.certs/
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ~/.certs -i ~/.certs/qq.crt
#-A表示添加,-n是nickname,可以随意取,例如126或qq;-t表示受信任的标签,可取值是t/c/p三种或者其组合;-d表示证书所在目录,-i指示证书文件的位置。

 

  

编辑/etc/mail.rc

cat >>/etc/mail.rc <<EOF
set from=12345@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=12345@qq.com
set smtp-auth-password=wqfsvfpzdtssbida
set smtp-auth=login
set nss-config-dir=/root/.certs
set ssl-verify=ignore
EOF

set from=  显示的发件人,必须和认证用户邮箱一致
set smtp-auth-password=授权码 (QQ邮箱设置>>账户>>生成授权码)

 

 

 测试,可使用以下3种方式

echo "zabbix test mail" |mail -s "zabbix" 12345@qq.com
cat  /etc/fstab  |mail -s "zabbix" 12345@qq.com
mail -s "zabbix" 12345@qq.com < /etc/fstab

 

多账户

  配置文件的account指令或在命令行中指定配置。先看配置文件中指定,在~/.mailrc中将配置改成如下: 复制代码
# 126不支持STARTTLS,使用465端口
account 126 {
set smtp=smtps://smtp.126.com:465
set smtp-auth=login
set smtp-auth-user=12345@126.com
set smtp-auth-password=password
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb
set from=12345@126.com
}

account qq {
set smtp=smtp.qq.com
set smtp-auth=login
set smtp-auth-user=12345@qq.com
set smtp-auth-password=password
set ssl-verify=ignore
#set nss-config-dir=/etc/pki/nssdb
set from=12345@qq.com
}
复制代码

配置文件中定义了两个账户,发送邮件时可用-A参数指定发信账户:

echo 'from 126' | mail -A 126 -s 'mail test' 12345@xxx.com
echo 'from qq' | mail -A qq -s 'mail test' 12345@xxx.com

除了配置文件,也可以在命令行中用-S参数进行设置。例如:

echo 'mail test for command line option' | mail -s 'mail test' -S smtp=smtp://smtp.qq.com:587 -S smtp-auth=login -S smtp-auth-user=user@qq.com -S smtp-auth-password=password -S ssl-verify=ignore -S nss-config-dir=/etc/pki/nssdb -S from="user@qq.com(nickname)" -S smtp-use-starttls=yes user@xxx.com

这种方法比较繁琐,就是将配置文件的每一行都作为选项写在命令中。在程序中调用mail命令发送邮件时可以采取这种方法。

   

标签:QQ,qq,set,smtp,certs,linux,mail,com,客户端
来源: https://www.cnblogs.com/mmio/p/15060492.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有