nagios
发警告邮件是采用本机的
smtp
服务
,
可以查看
commands.cfg
中关于发邮件的命令的定义
,
使用本机的
mail
命令
,
这就需要开启本机的
smtp
服务
,
为了安全可以在防火墙上设置拒绝其他的机器连本机的
25
号端口

现在我们的网络里面有一个邮件服务器
,
所以要求使用这台现有的邮件服务器
,
不开启本机的
smtp
服务
,
这就需要重新定义命令使用第三方软件
sendEmail.

 

首先我们当然要在邮件服务器上新建一个账户用来做发邮件的账户

这里邮件服务器的地址为
mail.test.com

用来发邮件的帐号

SMTP
验证的用户名
 nagios 
密码
 p#3isoda

 

以下就来介绍一下
sendEmail
这个软件的使用
.

sendEmail
的主页

下载地址

软件十分小
,
是一个通过命令来发
smtp
邮件的程序
.
安装也十分简单
(
查看其
README
文件即可
).

解压缩
tar –zxvf sendEmail-v1.55.tar.gz

cd sendEmail-v1.55

将可执行程序复制
cp sendEmail /usr/local/bin

然后给确认确实它具有执行权限

ll /usr/local/bin/sendEmail

-rwxr-xr-x 1 root root 77882 11-03 14:23 /usr/local/bin/sendEmail

这样程序就装好了
,
使用也很简单
.
直接运行
sendEmail
就会显示详细的用法

先看一个典型的例子

/usr/local/bin/sendEmail –f  –t  –s mail.test.com –u “from nagios” –xu nagios –xp p#3isoda –m happy

解释
:

-f 
表示发送者的邮箱

-t 
表示接收者的邮箱

-s 
表示
SMTP
服务器的域名或者
ip

-u 
表示邮件的主题

-xu 
表示
SMTP
验证的用户名

-xp 
表示
SMTP
验证的密码
(
注意
,
这个密码貌似有限制
,
例如我用
d!5neyland
就不能被正确识别
)

-m 
表示邮件的内容

 

如果你不带
-m
参数的话
,
就会提示你自行输入

Reading message body from STDIN because the
-m option was not used.

If you are manually typing in a message:

- First line must be received within 60 seconds.

- End manual input with a CTRL-D on its own line

输入完成后使用
CTRL-D
来结束

当然我们也可以将一个文件的内容作为邮件的正文发出去的

那么就可以使用
:

cat 
文件名
 | /usr/local/bin/sendEmail –f  –t  –s mail.test.com –u “from nagios” –xu nagios –xp p#3isoda

有关
sendEmail
的用法就讲到这里

 

既然
nagios
要使用
sendEmail
来发警告邮件
,
那么就要修改
commands.cfg
中关于发邮件的命令的定义
,
我们现在来修改
notify-by-email
这个命令
,
如下
(
注意其中粗体的部分
)

# '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$" |
 
/usr/local/bin/sendEmail -f  -t $CONTACTEMAIL$ -s mail.test.com -u "** $NOTIFICATIONTYPE$ alert - $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" -xu nagios -xp p#3isoda

       
 
}

 

 

:
其实
sendEmail
是一个十分有用的程序
,
我们在这个地方用了它
,
其实别的地方也可以用
,
典型的好处就是你不需要每台机器都装
sendmail,
开启
smtp
服务
.
直接用现成的一台邮件服务器就行了
,
这无疑很大的加强了系统的安全性
,
也节约了资源
.