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

2021/10/21 7:11:30

本文主要是介绍linux下使用本地客户端发送邮件到QQ邮箱,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

 

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命令发送邮件时可以采取这种方法。



这篇关于linux下使用本地客户端发送邮件到QQ邮箱的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程