使用mutt+msmtp搭建一个邮件客户端,实现利用第三方邮件服务发送邮件。
此功能是在nagios服务正常安装运行的基础上实现的;因此要先安装好基本的nagios运行环境,这个可以参考本人相关的博文。
1.编译安装
#yum install mutt
#tar jxvf msmtp-1.4.30.tar.bz2
#./msmtp-1.4.30/configure �Cprefix=/usr/local/msmtp
#make
#make install
2.配置msmtp信息
#mkdir /usr/local/msmtp/etc
#vim /usr/local/msmtp/etc/msmtprc
写入一下信息:
# Set default values for all following accounts.
defaults
#日志地址
logfile /usr/local/msmtp/msmtp.log
#邮箱用户名
account zhangsan
# SMTP邮件服务器地址
host smtp.qq.com
#发送的邮件Email
from [email protected]
auth login
#端口
#port 25
tls off
# 邮件服务器登录账号
user [email protected]
# 邮件箱密码
password 123456
#默认用户名
account default:xiaobaichi
由于password是明码,所以最好需要修改此文件的权限 chmod 600 etc/msmtprc
3.配置mutt信息
#vim /etc/Muttc
最后插入,注意上引号是有的
set from="发送邮件地址"
set sendmail="/usr/local/msmtp/bin/msmtp"
set use_from=yes
set realname="发件人"
set editor="vim"
注意:上面配置中的双引号是需要的,并且发件地址与msmtp设置的账号要相同,否则可能会出错。
4.修改文件权限以供nagios可以使用
#setfacl -m u:nagios:rwx msmtp/bin/msmtp
#setfacl -m u:nagios:rwx msmtp/etc/msmtprc
#setfacl -m u:nagios:rwx msmtp/msmtp.log
5.测试
格式:echo "邮件内容" | mutt -s "邮件标题" 目标邮件地址
echo "This is a test mail" |mutt -s "hello" [email protected]
6.配置nagios邮件发送命令
修改nagios命令配置文件
#vim nagios/etc/object/command.cfg
#notify-host-by-email命令的定义
define command{
#命令名称,即定义了一个主机异常时发送邮件的命令。
command_name notify-host-by-email
#命令具体的执行方式。
command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/bin/mutt -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$
}
#notify-service-by-email命令的定义
define command{
#命令名称,即定义了一个服务异常时发送邮件的命令
command_name notify-service-by-email
command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /usr/bin/mutt -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$
}
注:命令是在一行上的,这里排版问题被分成了多行.
接着修改nagios中定义的主机和服务的报警机制,实现nagios利用邮件自动报警。
鸣谢:本人参考了多篇文章后总结而得,在此感谢各位网络分享者!