zimbra是一个开源的邮件系统,课通过web界面设置超出报警,但是由于固定了,我们单方不能设置,只能通过脚本来实现,故写下如此脚本,实现每天早上10点如果用户状态是活动且使用率大于85%就发一封报警邮件,并且将所有超出用户汇总发送给管理员。
先介绍查询用户的邮箱使用率命令和出来的结果(马赛克公司名):
查询用户活动状态:
SHELL如下
#/bin/bash #by:tommy #2016-8-23 #tommy偷懒专用 rm -f /tmp/tongji.txt rm -rf /root/sz.txt /opt/zimbra/bin/zmprov gqu zcs4|grep -E "^sz[0-9]{6}@iyunw.cn">>/root/sz.txt #由于此条命令执行慢,所以让他写入文件 HANG=`cat /root/sz.txt|wc -l` for I in `seq 1 $HANG`;do MAILMAX=1073741824 #给邮箱大小初始值,以防后面做浮点运算报错 MAIL=`sed -rn "$I p" /root/sz.txt|awk '{print $1}'` #提取当前行邮箱 MAILMAX=`sed -rn "$I p" /root/sz.txt|awk '{print $2}'` #提取当前用户邮箱最大值 MAILZHI=`sed -rn "$I p" /root/sz.txt|awk '{print $3}'` #提取当前用户邮箱使用值 MAILNUM=`echo "sclae=2; 100*$MAILZHI/$MAILMAX" | bc` #计算用户使用率,只取整数 if [[ $MAILNUM -ge 85 ]];then MAILSTATUS=`/opt/zimbra/bin/zmprov ga $MAIL|grep ^zimbraAccountStatus|awk '{print $2}'` #取用户活动状态,如果是active才发邮件 if [[ $MAILSTATUS == "active" ]];then echo "$MAIL 邮件使用达到$MAILNUM% 告警通知请及时清理邮件,以防邮箱锁定,有问题请及时联系管理员"|mutt -s "$MAIL 邮件使用达到$MAILNUM% 告警通知" $MAIL fi echo "$MAIL $MAILNUM $MAILZHI $MAILNUM $MAILSTATUS">>/tmp/tongji.txt #汇总 fi done mutt -s "$(date +%F)邮件使用告警通知" 管理员邮箱</tmp/tongji.txt
发送邮件截图
用户收到邮件
管理邮件:
评论区