Zabbix利用msmtp+mutt發送郵件報警


 

[root@86 ~]# wget http://jaist.dl.sourceforge.net/project/msmtp/msmtp/1.4.32/msmtp-1.4.32.tar.bz2

 

百度網盤:http://pan.baidu.com/s/1o8w68ci

 

[root@86 msmtp-1.4.32]# pwd
/root/msmtp-1.4.32
[root@86 msmtp-1.4.32]# mkdir -p  /usr/local/msmtp/etc

[root@86 msmtp-1.4.32]#./configure --prefix=/usr/local/msmtp --with-ssl=openssl

 

[root@86 msmtp-1.4.32]# make && make install

 配置msmtp

[root@86 msmtp-1.4.32]# mkdir -p  /usr/local/msmtp/etc

 

vim  /usr/local/msmtp/etc/msmtprc
account default
host smtp.163.com //SMTP服務器
port 25
from clnking@163.com
auth login
tls off
user clnking //郵箱用戶名 是clnking 而不是clnking@163.com
password xxxxxx #是授權碼,而不是郵箱登錄密碼(授權碼是用於登錄第三方郵件客戶端的專用密碼)注意文章開頭的圖片
logfile /var/log/zabbix/msmtp.log //日志路徑

 

測試msmtp
# cat /usr/local/msmtp/etc/msmtprc 
account default
host smtp.163.com
port 25
from username01@163.com
auth login
tls off
user username01
password xxxxx #這里不是客戶端受權密碼,並非郵箱的登錄密碼
logfile /var/log/mmlog
# cat /etc/Muttrc.local 
# Local configuration for Mutt.
set sendmail="/apps/msmtp/bin/msmtp"
set from="clnking@163.com"
set use_from = yes
set editor="vim"
set realname="zabbix of XXXX.com"

[root@86 msmtp-1.4.30]# /usr/local/msmtp/bin/msmtp lin.chen@xinxianm.com  (郵箱必須是 /usr/local/msmtp/etc 里配置的郵箱)所以下面會報錯!!(別的信箱也可以)
hello
ctl +d #發送
msmtp: the server did not accept the mail
msmtp: server message: 554 DT:SPM 163 smtp4,DtGowAAnErU7+ExXz+8hAQ--.9856S2 1464662088,please see http://mail.163.com/help/help_spam_16.htm?ip=123.57.36.227&hostid=smtp4&time=1464662088
msmtp: could not send mail (account default from /usr/local/msmtp/etc/msmtprc)
后補:
[root@86 etc]# yum install mutt
修改配置文件:
cat /etc/Muttrc.local 
# Local configuration for Mutt.
set sendmail="/usr/local/msmtp/bin/msmtp"
set from="username01@163.com"
set use_from=yes
set editor="vim"
set realname="zabbix of xxxxx.com"


[root@86 etc]# echo "zabbix test "|mutt -s "chenlin" clnking@163.com
[root@86 etc]# echo "zabbix test "|mutt -s "chenlin" lin.chen@xinxianm.com
======================================================================================
[root@86 msmtp-1.4.30]# /usr/local/msmtp/bin/msmtp clnking@163.com
kkkkkkkkkkkkk^[  
但信箱里沒內容
cat /var/log/mmlog
May 31 10:47:00 host=smtp.163.com tls=off auth=on user=clnking from=clnking@163.com recipients=clnking@163.com mailsize=15 smtpstatus=250 smtpmsg='250 Mail OK queued as smtp4,DtGowADXJJQP+0xX0LciAQ--.5878S2 1464662820' exitcode=EX_OK

 因為沒有配置:MUTT

[root@86 msmtp-1.4.32]# yum install mutt

 

[root@86 ~]# vi /etc/Muttrc
set sendmail="/usr/local/msmtp/bin/msmtp"
set use_from=yes
set editor="vim"
set realname="clnking@163.com"

[root@86 ~]# echo "test mail 2016 content tom2" |mutt -s "test kkkkk" clnking@163.com
進入郵箱  收到郵件 ------》測試成功!

 

 腳本:

[root@86 alertscripts]# pwd
/usr/local/zabbix/share/zabbix/alertscripts
[root@86 alertscripts]# grep "AlertScriptsPath" /usr/local/zabbix/etc/zabbix_server.conf
### Option: AlertScriptsPath
# AlertScriptsPath=${datadir}/zabbix/alertscripts
AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts
[root@86 alertscripts]# cat send_mail 
#!/bin/bash
echo "time:$(date +%m-%d-%H:%M:%S)" >>/var/log/zabbix/test.log
echo "p3_$3" >>/var/log/zabbix/test.log
echo "p2_$2" >>/var/log/zabbix/test.log
echo "p1_$1" >>/var/log/zabbix/test.log
/bin/echo "$3"| /usr/bin/mutt -s "$2" $1
echo "send end ..." >> /var/log/zabbix/test.log
echo "" >> /var/log/zabbix/test.log  

 #開始沒成功不知道為什么后來做了以下操作,但當時還沒成功 ,第二天成功了!

ln -s /usr/local/msmtp/bin/msmtp /usr/local/bin/msmtp
[root@86 alertscripts]# ps -ef|grep "zabbix_server"
zabbix    8734     1  0 03:00 ?        00:00:00 /usr/local/zabbix/sbin/zabbix_server#並沒有跟-c /usr/local/zabbix/etc/zabbix_server.conf

 

# echo "加郵件符件"|mutt -s fujian text@test.com -a /data1/apps/mail.txt 
//郵件內容為"加郵件符件"
//主題為fujian
//如果需要發送多個人的話可以繼續添加收件人
//mail.txt為附件(-a + 附件)
echo "加郵件符件"|mutt -s fujianxxxl@mail.com  xxg@163.com -a /data1/apps/mail.txt
// 同時發多人

 經過一段時間的學習,對郵箱報警進行補全:

首先zabbix安裝的時候是建的用戶(/sbin/nologin)是不能使用bash或其它shell來登錄系統,所以要改成/bin/bash

# grep zabbix /etc/passwd
#zabbix:x:498:499:Zabbix Monitoring System:/var/lib/zabbix:/bin/bash
zabbix:x:498:499:Zabbix Monitoring System:/home/zabbix:/bin/bash

查看各個文件的配置:

查看msmtprc的配置文件:

/apps/msmtp/etc

# cat msmtprc 
account default
host smtp.139.com
port 25
from xx(發郵件的箱地址)@139.com
auth login
tls off
user 1352xxx(手機號因為我用的是139郵箱)
password xxxxxx(郵箱密碼)
logfile /var/log/mmlog

查看muttrc的配置文件:

# cat /etc/Muttrc.local
# Local configuration for Mutt.
set sendmail="/apps/msmtp/bin/msmtp"
set from="135xxx@139.com"
set use_from = yes
set editor="vim"
set copy=no #這個也是個關建,一定不要忘記
set realname="zabbix of xxxxx.com"

查看zabbix的配置文件:

# grep -E "(AlertScriptsPath|ExternalScripts)" /etc/zabbix/zabbix_server.conf 
### Option: AlertScriptsPath
# AlertScriptsPath=${datadir}/zabbix/alertscripts
AlertScriptsPath=/usr/lib/zabbix/alertscripts
### Option: ExternalScripts
# ExternalScripts=${datadir}/zabbix/externalscripts
ExternalScripts=/usr/lib/zabbix/externalscripts

查看腳本:

# cd /usr/lib/zabbix/alertscripts/
# ls
Key  send_mail
#這是我自己寫的,目地是查的這個腳本執的過程,這樣可以發現發題出在哪里,下面看看一下這兩個文件內容:
echo "time:$(date +%m-%d-%H:%M:%S)" >>/var/log/zabbix/test.log
echo "$3" | /usr/bin/mutt -s "$2" "$1" >>/var/log/zabbix/test.log
echo "------------ok---------->$WHO" >>/var/log/zabbix/test.log
echo "p3_$3" >>/var/log/zabbix/test.log
echo "p2_$2" >>/var/log/zabbix/test.log
echo "p1_$1" >>/var/log/zabbix/test.log
#echo ----------> $1 >>/var/log/zabbix/test.log
#echo "send end ..." >> /var/log/zabbix/test.log
#echo "" >> /var/log/zabbix/test.log

# cat send_mail 
#!/bin/bash
set -x
A=$1
T=$2
C=$3
echo $A $T $C
/usr/lib/zabbix/alertscripts/Key "$A" "$T" "$C" >> /tmp/send.log 2>&1
#這個才是一個創新,可以把腳本的執行過程從定向到/etc/send.log中
還有一點就是腳本的權限的問題,以定要給腳本可執行的權限,對於其它用戶!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM