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 from=xxx@xxx.com smtp=smtp.xxx.com //邮件服务器 set smtp-auth-user=xxx smtp-auth-password=xxx //用户及密码 set smtp-auth=login
测试:
echo '123'|mail -s "123" xxxx@xx.com
业务需要监控主机是否宕机及服务状态所有我通过配置单向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的对比
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 "报警" xxx@qq.com 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 root@$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 "报警" xxx@qq.com fi done