http://blog.chinaunix.net/u/13444/showart_2095991.htmlnagios发警告邮件是采用本机的smtp服务,可以查看commands.cfg中关于发邮件的命令的定义,使用本机的mail命令,这就需要开启本机的smtp服务,为了安全可以在防火墙上设置拒绝其他的机器连本机的25号端口现在我们的网络里面有一个邮件服务器,所以要求使用这台现有的邮件服务器,不开启本机的smtp服务,这就需要重新定义命令使用第三方软件sendEmail.首先我们当然要在邮件服务器上新建一个账户用来做发邮件的账户这里邮件服务器的地址为mail.test.com用来发邮件的帐号nagios@test.comSMTP验证的用户名nagios密码p#3isoda以下就来介绍一下sendEmail这个软件的使用.sendEmail的主页http://caspian.dotconf.net/menu/Software/SendEmail/下载地址http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.55.tar.gz软件十分小,是一个通过命令来发smtp邮件的程序.安装也十分简单(查看其README文件即可).解压缩tar–zxvfsendEmail-v1.55.tar.gzcdsendEmail-v1.55将可执行程序复制cpsendEmail/usr/local/bin然后给确认确实它具有执行权限ll/usr/local/bin/sendEmail-rwxr-xr-x1rootroot7788211-0314:23/usr/local/bin/sendEmail这样程序就装好了,使用也很简单.直接运行sendEmail就会显示详细的用法先看一个典型的例子/usr/local/bin/sendEmail–fnagios@test.com–tyahoon@test.com–smail.test.com–u“fromnagios”–xunagios–xpp#3isoda–mhappy解释:-f表示发送者的邮箱-t表示接收者的邮箱-s表示SMTP服务器的域名或者ip-u表示邮件的主题-xu表示SMTP验证的用户名-xp表示SMTP验证的密码(注意,这个密码貌似有限制,例如我用d!5neyland就不能被正确识别)-m表示邮件的内容如果你不带-m参数的话,就会提示你自行输入ReadingmessagebodyfromSTDINbecausethe‘-m’optionwasnotused.Ifyouaremanuallytypinginamessage:-Firstlinemustbereceivedwithin60seconds.-EndmanualinputwithaCTRL-Donitsownline输入完成后使用CTRL-D来结束当然我们也可以将一个文件的内容作为邮件的正文发出去的那么就可以使用:cat文件名|/usr/local/bin/sendEmail–fnagios@test.com–tyahoon@test.com–smail.test.com–u“fromnagios”–xunagios–xpp#3isoda有关sendEmail的用法就讲到这里既然nagios要使用sendEmail来发警告邮件,那么就要修改commands.cfg中关于发邮件的命令的定义,我们现在来修改notify-by-email这个命令,如下(注意其中粗体的部分)#’notify-by-email’commanddefinitiondefinecommand{ command_name notify-by-email command_line /usr/bin/printf”%b””*****Nagios2.9*****\NotificationType:$NOTIFICATIONTYPE$\Service:$SERVICEDESC$Host:$HOSTALIAS$Address:$HOSTADDRESS$State:$SERVICESTATE$\Date/Time:$LONGDATETIME$\AdditionalInfo:\$SERVICEOUTPUT$”|/usr/local/bin/sendEmail-fnagios@test.com-t$CONTACTEMAIL$-smail.test.com-u”**$NOTIFICATIONTYPE$alert-$HOSTALIAS$/$SERVICEDESC$is$SERVICESTATE$**”-xunagios-xpp#3isoda }注:其实sendEmail是一个十分有用的程序,我们在这个地方用了它,其实别的地方也可以用,典型的好处就是你不需要每台机器都装sendmail,开启smtp服务.直接用现成的一台邮件服务器就行了,这无疑很大的加强了系统的安全性,也节约了资源.