天天看点

Linux使用mailx发送邮件--技术流ken

前言

最近想要监控系统服务运行情况并实现自动发送邮件报警,zabbix虽然也可以实现这样的功能,但是这里使用一个非常简单的办法就可以实现。需要安装mailx工具,mailx是一个小型的邮件发送程序。

安装步骤

第一步:安装mailx

[root@ken ~]# yum install mailx -y      

第二步:编辑配置文件

在mail.rc这个配置文件中,在末行添加如下的内容

[root@ken ~]# vim /etc/mail.rc 
set from="[email protected]"     #这个和第三行邮箱地址需要保持一致
set smtp="smtp.qq.com"
set smtp-auth-user="[email protected]"
set smtp-auth-password="xxxxxx"   #邮箱授权码
set smtp-auth="login"      

 说明

from:对方收到邮件时显示的发件人

smtp:指定第三方发邮件的smtp服务器地址

set smtp-auth-user:第三方发邮件的用户名

set smtp-auth-password:用户名对应的密码,有些邮箱填的是授权码

smtp-auth:SMTP的认证方式,默认是login,也可以改成CRAM-MD5或PLAIN方式

授权码获取

第一步:授权码获取

登录qq邮箱,点击设置>账户

Linux使用mailx发送邮件--技术流ken

 点击生成授权码即可

Linux使用mailx发送邮件--技术流ken

测试

这句命令的后面的[email protected]是收件地址

[root@ken ~]# echo "这是一封测试邮件" | mail -s "测试邮件" [email protected]      
Linux使用mailx发送邮件--技术流ken

以上已经实现了发邮件功能!!!

 邮件发送书写格式

1)  无邮件正文

mail -s "主题"  收件地址

实例: mail -s "测试"  [email protected]

2) 有邮件正文

  •  mail -s "主题"  收件地址< 文件(邮件正文.txt)

实例: mail -s "邮件主题"  [email protected] < /data.txt

  •  echo "邮件正文" | mail -s 邮件主题  收件地址

实例: echo "邮件正文内容" | mail -s "邮件主题"  [email protected]

  •  cat 邮件正文.txt | mail -s 邮件主题  收件地址 

实例: cat  /data.txt | mail -s "邮件主题"  [email protected]

3)  带附件

  •  echo "邮件正文" | mail -s "主题"   -a 附件  收件地址

实例: echo "邮件正文"  | mail -s "邮件主题"   -a /etc/passwd  [email protected]

实战案例

需求:

1. 检测本机web服务

2. 如果web服务宕机发送邮件报警通知管理员

第一步:编辑检测脚本

#!/bin/bash
while true
do
num=`ss -tl | grep -c http`
if [ $num -eq 0 ];then
        echo "web服务宕机,请立即检查修复!" | mail -s "web服务宕机" [email protected]
        break
fi
done      

第二步:后台运行脚本

[root@ken ~]# nohup bash test.sh &
[1] 6643
[root@ken ~]# jobs
[1]+  Running                 nohup bash test.sh &      

第三步:模拟web服务宕机

[root@ken ~]# systemctl stop httpd      

第四步:检查邮件

Linux使用mailx发送邮件--技术流ken

[root@ken ~]# yum install mailx -y      
[root@ken ~]# vim /etc/mail.rc 
set from="[email protected]"     #这个和第三行邮箱地址需要保持一致
set smtp="smtp.qq.com"
set smtp-auth-user="[email protected]"
set smtp-auth-password="xxxxxx"   #邮箱授权码
set smtp-auth="login"      

Linux使用mailx发送邮件--技术流ken
Linux使用mailx发送邮件--技术流ken

[root@ken ~]# echo "这是一封测试邮件" | mail -s "测试邮件" [email protected]      
Linux使用mailx发送邮件--技术流ken

#!/bin/bash
while true
do
num=`ss -tl | grep -c http`
if [ $num -eq 0 ];then
        echo "web服务宕机,请立即检查修复!" | mail -s "web服务宕机" [email protected]
        break
fi
done      
[root@ken ~]# nohup bash test.sh &
[1] 6643
[root@ken ~]# jobs
[1]+  Running                 nohup bash test.sh &      
[root@ken ~]# systemctl stop httpd      
Linux使用mailx发送邮件--技术流ken