使用mutt+msmtp搭建一个邮件客户端,实现利用第三方邮件服务发送邮件。

此功能是在nagios服务正常安装运行的基础上实现的;因此要先安装好基本的nagios运行环境,这个可以参考本人相关的博文。


1.编译安装

#yum install mutt

#tar jxvf msmtp-1.4.30.tar.bz2

#./msmtp-1.4.30/configure –prefix=/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 zhangsan@qq.com

auth login

#端口

#port 25

tls off

# 邮件服务器登录账号

user zhangsan@qq.com

# 邮件箱密码

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" lisi@163.com


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利用邮件自动报警。


鸣谢:本人参考了多篇文章后总结而得,在此感谢各位网络分享者!