首页 > 代码库 > zabbix 实战邮箱告警之msmtp

zabbix 实战邮箱告警之msmtp

Last modified: Nov. 17, 2012

Contents
1 - Summary
2 - Dependencies
3 - Install msmtp
4 - Msmtp configuration
5 - Shell script
6 - Zabbix configuration

1 - Summary

This guide will show you how to use msmtp with TLS/SSL capabilities for email
notifications in Zabbix Server in FreeBSD. Msmtp is an SMTP client used to send
email. Zabbix Server is the server software that installs on a server and
receives information from network devices. Zabbix is an open source monitoring
solution. This has been tested in FreeBSD 9.0 i386/amd64.

2 - Dependencies

Install following packages.
# cd ~
# sudo pkg_add -r ca_root_nss
Password:
# sudo pkg_add -r p5-LWPx-ParanoidAgent
Password:
# sudo pkg_add -r wget
Password:
# rehash
# wget --no-check-certificate https://github.com/bagder/curl/raw/master/lib/mk-ca-bundle.pl
# perl mk-ca-bundle.pl
# sudo chown root:wheel ca-bundle.crt
Password:
# sudo chmod 555 ca-bundle.crt
Password:
# sudo mv ca-bundle.crt /usr/local/etc/
Password:
# rm -f certdata.txt mk-ca-bundle.pl
# sudo pkg_add -r libidn
Password:
# sudo pkg_add -r portupgrade
Password:
# sudo portsnap fetch extract
Password:
There is an entry in /usr/ports/UPDATING regarding pkg-config.
# vi /usr/ports/UPDATING
# sudo portupgrade -fo devel/pkgconf pkg-config-\*
Password:

3 - Install msmtp

Install the msmtp port.
# cd /usr/ports/mail/msmtp/
Select only the following options.
  [*] OPENSSL        Adds support for SSL (Secure Socket Layer)
  [*] IDN            Enable Internationalized Domain Names
# sudo make config
Password:
# sudo make
Password:
# sudo make install
Password:
# sudo make clean
Password:

4 - Msmtp configuration

Create your own configuration file. Here is an example that uses a Gmail
account which utilizes TLS.
  account default
  host smtp.googlemail.com
  port 587
  from testuser@gmail.com
  tls on
  tls_starttls on
  tls_trust_file /usr/local/etc/ca-bundle.crt
  auth on
  user testuser@gmail.com
  password **********
  syslog LOG_MAIL
# pkg_info -L zabbix2-server-* | grep rc.d
/usr/local/etc/rc.d/zabbix_server
# grep required_files /usr/local/etc/rc.d/zabbix_server
required_files="/usr/local/etc/zabbix2/${name}.conf"
# sudo vi /usr/local/etc/zabbix2/msmtprc
Password:
# id zabbix
uid=122(zabbix) gid=122(zabbix) groups=122(zabbix)
# sudo chown zabbix:zabbix /usr/local/etc/zabbix2/msmtprc
Password:
# sudo chmod 600 /usr/local/etc/zabbix2/msmtprc
Password:

5 - Shell script

Modify the Zabbix server configuration to have include the alert script path.
  AlertScriptsPath=/usr/local/etc/zabbix2/zabbix/alertscripts
# sudo vi /usr/local/etc/zabbix2/zabbix_server.conf
Password:
# sudo /usr/local/etc/rc.d/zabbix_server restart
Password:
# sudo /usr/local/etc/rc.d/zabbix_server status
Password:
zabbix_server is running as pid 28283 28284 28285 28286 28287 28288 28289 28290
28291 28292 28293 28294 28295 28296 28297 28298 28299 28300 28301 28302 28303
28304 28305 28306 28307 28308 28309.

Here is shell script that can be used in Zabbix to send email notifications.
  #!/bin/sh
  printf=/usr/bin/printf
  from="testuser@gmail.com"
  recipient="$1"
  subject="$2"
  body="$3"
  msmtp=/usr/local/bin/msmtp
  msmtp_config=/usr/local/etc/zabbix2/msmtprc
  $printf "From: $from\nTo: $recipient\nSubject: $subject\n\n$body" | $msmtp     --file=$msmtp_config -t
  exit 0
# sudo vi /usr/local/etc/zabbix2/zabbix/alertscripts/zabbix_notifications.sh
Password:
# sudo chown root:wheel /usr/local/etc/zabbix2/zabbix/alertscripts/zabbix_notifications.sh
Password:
# sudo chmod 555 /usr/local/etc/zabbix2/zabbix/alertscripts/zabbix_notifications.sh
Password:

6 - Zabbix configuration

Log into the Zabbix website as a user with Administrator privileges. Hover over
Administration and click on Media types. Click on Create media type on the
right-hand side of the screen. Type in the following and click on Save.

Hover over Administration and click on Users. Select Users from the drop-down
menu on the right-hand side of the screen. Select the user. Click on the Media
tab and click on Add. Type in the following.

Hover over Configuration and click on Actions. Select one of the Actions listed
and go to the Operations tab and click on Edit. In the drop-down box next to
Send only to, select Script. Make sure to save the Action.

本文出自 “hanyun.fang” 博客,请务必保留此出处http://hanyun.blog.51cto.com/1060170/1596271

zabbix 实战邮箱告警之msmtp