Linux下可以通过使用mail命令,利用外部的一个邮箱(比如xxx.163.com)发送邮件到另外一个邮箱(比如yyy.qq.com),这在某些情况下很有用,比如监测系统温度,当温度达到一定时就报警,向邮箱发送报警信息,提示管理员温度异常。
一般Linux系统自带mail命令,不用系统的sendmail来发送用外部邮箱来发送
这里主要讲如何配置,这里建议不用qq邮箱作为发送邮箱,因为我在用qq邮箱时遇到一些问题目前我无法解决,我这里使用163邮箱作为发送邮箱,用qq邮箱作为接收邮箱
1. 首先在/etc/mail.rc文件中添加(需要root权限):
set from=xxx@163.com (你的163邮箱)
set smtp=smtp.163.com (163邮箱默认就用这个)
set smtp-auth-user=xxx@163.com (与第一行的一致)
set smtp-auth-password=aaaaaaa (这里等号后面填写的是163邮箱的客户端授权密码,下面会告诉你在哪里找到)
set smtp-auth=login (登录方式)
添加完成后保存
2. 如何找到客户端授权密码:
163邮箱的授权码是自己设置的:
首先登录网页163邮箱,然后进入“设置”选项,再进入“POP3/SMTP/IMAP”,如下图所示
然后要把下图所示的这两个服务开启,记得保存,然后进入左边的“客户端授权密码”选项
然后开启“客户端授权密码”,进入设置,系统会让你获取手机验证码,获取后填写验证码,就会出现叫你设置授权码的方框,授权码是由字母和数字组成的,不能有符号,设置完成后保存即可(我这里由于已经设置过了,所以出现“重置授权码”)
3. 关闭Linux下相关服务(CentOS7.x和ReadHat最新版都是下面的方法关闭(需要root权限),其他系统自行百度(比如用service命令),此外,貌似不做处理也行,你们自己试试吧):
systemctl stop sendmail.service
systemctl disable sendmail.service
systemctl stop postfix.service
systemctl disable postfix.service
4. 接收邮件的邮箱的相关设置(这步很重要,我搞了好长时间才发现这个问题):
我在用QQ邮箱作为接收邮件的邮箱时,如果我不对163邮箱设置白名单,则QQ邮箱就不会接收到mail命令发送的邮件
首先进入QQ邮箱网页版,然后进入设置,,进入反垃圾,设置白名单:
然后填写上发送邮箱的邮箱地址,点击“添加到白名单”即可:
5. 邮件发送测试:
在终端输入如下类似语句测试:
echo "TEST" | mail -s "Title" yyy@qq.com
如果QQ邮箱收到邮件,则设置成功!!!