邮件报警(postfix)

Posted Louis He

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了邮件报警(postfix)相关的知识,希望对你有一定的参考价值。

postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件。postfix是Wietse Venema想要为使用最广泛的sendmail提供替代品的一个尝试。在Internet世界中,大部分的电子邮件都是通过sendmail来投递的,大约有100万用户使用sendmail,每天投递上亿封邮件。这真是一个让人吃惊的数字。Postfix试图更快、更容易管理、更安全,同时还与sendmail保持足够的兼容性

系统:CentOS release 6.5 (Final)  x86_64

由于centos6后系统就安装了postfix 因此只需启动即可:
配置如下:

service postfix start                    //启动服务
chkconfig postfix on                   //设置开机自启

 安装mailx:

yum install -y mailx 
改修配置文件添加如下内容:
vim /etc/mail.rc 

set [email protected] smtp=smtp.xxx.com              //邮件服务器
set smtp-auth-user=xxx smtp-auth-password=xxx     //用户及密码
set smtp-auth=login

 测试:

echo ‘123‘|mail -s "123" [email protected]

 业务需要监控主机是否宕机及服务状态所有我通过配置单向ssh免秘钥登录运用ssh命令来监控服务。

ssh批量分发脚本:

#!/bin/bash
User=root
passWord=123
port=2266
function YumBuild(){
echo "正在安装epel源yum仓库,请稍后..."
cd /etc/yum.repos.d/ &&[ -d bak ] || mkdir bak
[ `find ./*.* -type f | wc -l` -gt 0 ] && find ./*.* -type f |  xargs -i mv {} bak/
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo &>/dev/null
yum -y clean all &>/dev/null
yum makecache &>/dev/null
}
rpm -q sshpass &>/dev/null || yum -y install sshpass &>/dev/null
if [ $? -gt 0 ];then
    YumBuild
    yum -y install sshpass &>/dev/null || (echo "sshpass build error!" && exit)
fi
[ -d ~/.ssh ] || mkdir ~/.ssh;chmod 700 ~/.ssh
echo "正在创建密钥对...."
rm -rf ~/.ssh/id_dsa ~/.ssh/id_dsa.pub
ssh-keygen -t dsa -f ~/.ssh/id_dsa -P "" &>/dev/null
for ip in `cat /root/Pingip.txt`
do
    ping $ip -c1 &>/dev/null
    if [ $? -gt 0 ];then
        echo "$ip无法ping通请检查网络" 
        continue
    fi
    sshpass -p "$passWord" ssh-copy-id -i ~/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no -p2266 ${User}@$ip" &>/dev/null
    echo "$ip 密钥分发成功"
done

fping与ping的对比

fping与ping中的date数据不同

1. 它们使用的协议相同都是ICMP。

2. 探测机制和默认回显相同都是延迟延迟。

3. fping可同时探测多个ip,ping只能手工输出不通ip段。

4. fping的数据包大小为56字节,ping的数据包字节为48(ping全部默认字节为56)。

5. fping默认ping间距为25毫秒,ping默认为1秒。

邮件报警脚本:

#!/bin/sh
if [ `which fping |wc -l` -eq 0 ];then 
wget --limit-rate 500k http://www.fping.org/dist/fping-3.8.tar.gz
tar zxvf fping-3.8.tar.gz && cd fping-3.8
./configure && make && make install
fi
rm -f result.txt
cat /root/baojing/Pingip.txt |fping -u >>result.txt         //Pingip.txt为监控主机ip -u只显示ping不通的机子
while read line
do
        echo "$line宕机"|mail -s "报警" [email protected]
done <result.txt
for line in `cat /root/baojing/ATSip.txt`                 //ATSip.txt 为服务机子IP
do
wget -SO /dev/null "http://www.baidu.com" -e "http_proxy=$line" &> /dev/null                  //wget代理访问
if [ `echo $?` -eq 0 ] && [ `ssh -p2266 [email protected]$line ps aux|grep /usr/local/tcacheserver/bin/traffic_ |grep -v grep |wc -l` -eq 3 ]
        then
     echo "" >/dev/null
 else
        echo "$line ATS is down"|mail -s "报警" [email protected]
fi
done

 

 

技术分享

以上是关于邮件报警(postfix)的主要内容,如果未能解决你的问题,请参考以下文章

zabbix3.0.4安装部署文档--邮件报警

zabbix 邮件告警配置

postfix python发送邮件脚本配置

(转)postfix疯狂外发垃圾邮件之分析与解决

Dovecot从postfix压缩现有的maildir邮件。

zabbix3 设置邮件报警