用sendEmail来发送nagios报警邮件

nagios 发警告邮件是采用本机的 smtp 服务 , 可以查看 commands.cfg 中关于发邮件的命令的定义 , 使用本机的 mail 命令 , 这就需要开启本机的 smtp 服务 , 为了安全可以在防火墙上设置拒绝其他的机器连本机的 25 号端口
现在我们的网络里面有一个邮件服务器 , 所以要求使用这台现有的邮件服务器 , 不开启本机的 smtp 服务 , 这就需要重新定义命令使用第三方软件 sendEmail.
 
首先我们当然要在邮件服务器上新建一个账户用来做发邮件的账户
这里邮件服务器的地址为 mail.test.com
用来发邮件的帐号 [email protected]
SMTP 验证的用户名  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 �Czxvf 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 �Cf [email protected] �Ct [email protected] �Cs mail.test.com �Cu “from nagios” �Cxu nagios �Cxp p#3isoda �Cm 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 �Cf [email protected] �Ct [email protected] �Cs mail.test.com �Cu “from nagios” �Cxu nagios �Cxp 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 [email protected] -t $CONTACTEMAIL$ -s mail.test.com -u "** $NOTIFICATIONTYPE$ alert - $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" -xu nagios -xp p#3isoda
          }
 
 
: 其实 sendEmail 是一个十分有用的程序 , 我们在这个地方用了它 , 其实别的地方也可以用 , 典型的好处就是你不需要每台机器都装 sendmail, 开启 smtp 服务 . 直接用现成的一台邮件服务器就行了 , 这无疑很大的加强了系统的安全性 , 也节约了资源 .
 

你可能感兴趣的:(sendEmail)