环境准备

主机

工具

Rocky_Linux

s-nail

win10


163邮箱(接收端)

qq邮箱(需启用smtp服务,作为发送端)

安装s-nail

s-nail是一个邮件客户端程序,也被称为"Heirloom mailx"。它提供了发送、接收和管理电子邮件的功能。s-nail是UNIX和类UNIX系统上的一种替代邮件客户端工具,可以在命令行界面中使用。

yum install  s-nail -y

轻松实现Linux下的邮件告警_Linux

启用qq邮箱的smtp服务

授权码需要开启邮箱的smtp服务进行获取,进入邮箱设置

轻松实现Linux下的邮件告警_Linux_02

开启如下所示的服务,点击管理服务获取授权码

轻松实现Linux下的邮件告警_Linux_03

点击生成授权码,根据提示短信验证通过后即可得到一个随机授权码

轻松实现Linux下的邮件告警_邮件告警_04

配置s-nail

打开配置文件,在底部添加如下内容

vim /etc/s-nail.rc 
set from="XX@qq.com"	#发件人信息
set smtp="smtp.qq.com"	#qq邮件服务器地址,也可以使用163邮箱
set smtp-auth-user="XX@qq.com"		#邮件服务账号,就是你的qq邮箱地址
set smtp-auth-password="XXXX"		#获取授权码
set smtp-auth=login

#在新版本的 s-nail 中,不再使用 smtp 变量来配置 SMTP 服务器。取而代之的是使用 mta 变量来指定 SMTP 服务器的 URL。
set v15-compat			#启用 v15-compat 兼容性选项
set from="xx@qq.com"		#发件人信息
set mta=smtps://账号:授权码@smtp.qq.com:465
set smtp-auth=login

发送邮件测试

s-nail -s "系统用户" xx@163.com < /etc/passwd

轻松实现Linux下的邮件告警_发送邮件_05

结合脚本实现邮件告警

监控日志目录,当目录大小以G为单位时就发送邮件提醒

#!/usr/bin/env bash
function send_waring(){
        echo "$1"|s-nail -s "$2" xx@163.com
}

function waring(){
    local dir="/var/log/"
    local dir_G=$(du -sh ${dir}|cut -d'/' -f1|grep "G")
    local now_time=$(date)
    if [[ ${dir_G} =~ "G" ]];then
    send_waring "请注意,当前【${dir}】目录占用已达到【${dir_G}】" "告警时间:${now_time}"

    fi
}
waring

轻松实现Linux下的邮件告警_发送邮件_06

最后配置定时任务,当匹配到阈值时就会自动发送邮件告警通知了

* * * * *   bash /root/mail_waring.sh

轻松实现Linux下的邮件告警_邮件告警_07

轻松实现Linux下的邮件告警_邮件告警_08

添加-a参数时还可以发送附件到指定邮箱

echo "这是日志打包文件"|s-nail -s "日志打包" -a 202401301421.log.tar.gz xx@163.com

轻松实现Linux下的邮件告警_发送邮件_09