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邮箱的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南
- 2024-08-21【Linux】分区向左扩容的方法