Nagios借助yahoo.cn邮箱实现手机短信报警功能
作者:田逸([email]sery@163.com[/email]) from[url]http://server.it168.com/server/[/url]2007-12-25/200712251000517.shtml
 
在《Nagios远程监控软件的安装与配置详解》([url]http://netsecurity.51cto.com/[/url]
art/200706/48728.htm)一文中,曾经简单的介绍在没有短信网关或短信猫的情况下使用短信报警的方法。前段时间,经不住yahoo邮件无限制容量的诱惑申请了一个拿来用用,还不错,很来无意中发现还有来信短信提醒功能,乖乖,何不把报警邮件发送到这个yahoo邮箱,然后通过“来信短信提醒功能”把信息转发到手机上。
 
下面介绍“如何定制电邮提醒”
A如果您是中国移动用户,定制过程包括:绑定手机(免费绑定)-定制服务(10/月)
具体操作请按照以下步骤进行:
1 用您的Yahoo! ID和密码登录 Yahoo! Mail 的页面
2
点击页面左面的“
邮件到达短信提醒”链接
3 如果您的手机还没有与您的Yahoo! ID进行绑定,操作步骤:
请先绑定您的手机号码:
  1
)在弹出的对话框中的“请输入您的手机号码”后面填入您想绑定的手机号码
  2
)点击“确定”按钮
  3
)您的手机会收到系统给您发送的验证码
如果您确实想定制此项服务:
 4)在接下来的页面中,填入系统给您发送的验证码,点击“确定”按钮
按照页面的提示,用手机发送数字指令WXD3721,以完成定制过程.
4 如果您的手机已经绑定Yahoo! ID,点击页面左面的“邮件到达短信提醒”链接
按照页面的提示, 用手机发送数字指令WXD3721,以完成定制过程.
5
完全登出您的邮箱
  1
)单击电邮页面右上角的“登出”链接
  2
)单击“完全登出”链接。

 
B如果您是中国联通用户,定制过程包括:发送指令,定制服务(10/月)-绑定手机
具体操作请按照以下步骤进行:
1 用您的Yahoo! ID和密码登录 Yahoo! Mail 的页面
2
点击页面左面的“
邮件到达短信提醒”链接
3 如果您的手机还没有与您的Yahoo! ID进行绑定,操作步骤:
  1)在弹出对话框中的“请输入您的手机号码”后面填入您想绑定的手机号码
  2)点击“确定”按钮
  3)发送数字指令“YH”到9372,收到短信提示后,按照提示回复短信,完成定制。
  4)点击页面中的“继续”按钮,您会收到一个验证码信息,请将您收到的验证码填写到下一页中的“请输入您
手机收到的验证码”后空白处,并点击“确认”,完成绑定手机过程。
4
如果您的手机已经绑定Yahoo! ID,点击页面左面的“
邮件到达短信提醒”链接
按照页面的提示,用手机发送相应数字指令,以完成定制过程.
5 完全登出您的邮箱
  1
)单击电邮页面右上角的“登出”链接
  2
)单击“完全登出”链接。

 
注意:电邮提醒服务暂不支持福建地区的中国移动用户以及电邮联盟用户。

 按照上面的提示,很容易设置这个功能的。为了使短信提醒符合我们的实际要求,需要对某些项目进行设置。一个是“提示信息选择”,另一个是“提示时间设置”,其设置情况如图所示:

点左下方链接POP3+来信提醒”进行设置。 

提示信息选择选第3个单选框“您收到[寄件人]发送的邮件:[邮件标题]”,这样设置的目的是因为邮件标题可以很明显的知道故障发生在哪里(标题信息来自Nagios的配置文件);服务器需要24小时监控,所以把“提醒时间设置”相里面的3个复选框全取消。设置完毕后,用一个别的邮箱发个邮件给你的yahoo信箱,片刻手机就会收到短信。
 
美中不足,yahoo短信不能支持稍长一点的邮件标题,这是我打yahoo客服电话知道的。登录网站收邮件(不支持pop,我晕),发现来了不少Nagios服务报警邮件,可以没收到任何一个短信,打电话问才知道是标题过长。既然这样,我把标题改短点吧。登录Nagios系统,修改文件 commands.conf,我的文件位置是 /usr/local/nagios/etc/commands.conf,修改内容为:
# 'notify-by-email' command definition
define command{
        command_name    notify-by-email
        command_line    /usr/bin/printf "%b" "***** Nagios 2.9 *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" | /bin/mail -s "$HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ " $CONTACTEMAIL$
        }
默认的有点长,我把它缩短成上面那个样子,即用红色字体标识的是被减缩的。接着修改文件contacts.conf,把收信人地址改称yahoo.cn邮箱。改完后须重启nagios服务。现在来检验一下效果:把nagios监控的某个服务器的服务停掉几分钟,然后去yahoo邮箱收邮件,正常的话,只要邮件一到信箱短信就跟着来了。
 
为了避免诸如发件人的名称为root这样的问题,启用邮件别名似乎更佳一些。
 
最后展示一下手机收到的短信的样式:
你收到[vmail @sery.com]的邮件:[Host UP alert for apache_sery]
看这个标题我就知道服务器是怎么一个状态。
 
                    海淀福源门悟真阁
                         2007-12-18