CentOS下使用MSMTP代替Sendmail傳送郵件

zhjixi1234發表於2014-07-04
CentOS下使用MSMTP代替Sendmail傳送郵件


安裝配置msmtp
1、下載、解壓 msmtp
先使用putty等工具登陸ssh
# wget
# tar jxvf msmtp-1.4.31.tar.bz2
最新版本參見:

2、安裝
# cd msmtp-1.4.31
# yum -y install gcc
# ./configure --prefix=/usr/local/msmtp
# make
# make install

3、配置msmtp賬號
切換到,cd /usr/local/msmtp
新建資料夾etc,
# mkdir etc
# mkdir /var/msmtp
使用vi新建檔案,輸入:vi /usr/local/msmtp/etc/msmtprc ,編輯內容如下:
#################################
# Set default values for all following accounts.
defaults
logfile /var/log/msmtp/msmtp.log
# The SMTP server of the provider.
account mysmtp
# SMTP郵件伺服器地址
host smtp.163.com
# 傳送的郵件Email
from xxx@163.com
auth login
# 郵件伺服器登入賬號
user xxx@163.com
# 郵件伺服器登陸密碼
password XXXXXX
# Set a default account
account default : mysmtp
#################

Esc,shift+:進入命令模式,輸入wq,儲存退出。
# chmod -R 777 /usr/local/msmtp
由於password是明碼,所以我們需要修改此檔案的許可權(如果郵件傳送不出去,請使用zabbix使用者測試*****)
# chmod 600 /usr/local/msmtp/etc/msmtprc


4、測試


更新msmtp執行許可權
# chmod -R 777 /usr/local/msmtp/bin/
建立msmtp.log檔案
# mkdir /var/log/msmtp
# vi /var/log/msmtp/msmtp.log
# chmod -R 777 /var/log/msmtp/msmtp.log
測試
# /usr/local/msmtp/bin/msmtp YYYYYY@dhc.com.cn
輸入任意字元,然後按Ctrl+D退出,檢視郵件是否收到。


由於設定了日誌,可以到 /var/log/msmtp/msmtp.log,檢視日誌,發信成功失敗都會有記錄。
透過上面的步驟就可以發郵件了,這裡發郵件還是使用的是SMTP發的,msmtp相當於一個第三方工具。


5、zabbix配置 


建立zext_msmtp.sh檔案
#####################################################################################################
#! /bin/bash


echo "zext_msmtp.sh" >>/var/log/zext_msmtp.log


DEBUG=1
if [ $DEBUG -gt 0 ]
then
    exec 2>>/var/log/zext_msmtp.log
        set -x
fi
FROM='xxx@163.com'
MSMTP_ACCOUNT='mysmtp'
# Parameters (as passed by Zabbix):
#  $1 : recipient
#  $2 : subject
#  $3 : message
recipient=$1
subject=$2
message=$3
date=`date --rfc-2822`
sed 's/$/\r/' < from:
to:
subject: $subject
date: $date


$message


EOF
#####################################################################################################


位置檢視zabbix-server.conf檔案中的alertscripts位置
參考:/usr/lib/zabbix/alertscripts
# vi zext_msmtp.sh
# chmod -R 777 /usr/lib/zabbix/alertscripts


建立meida types 
1.登入到zabbix,進入“Administration" >> ”Media types",點選右上角“Create Media Type"。 
Description填"zabbix_msmtp"或其它名稱,Type選擇"Script",Script填”zext_msmtp.sh”。 
2.點選save儲存 


建立actions 
1.登入到zabbix,進入"Configation" >> "Actions",點選右上角"Create Actions"。輸入Name “Send E-Mail Action” ,其它都預設點選右側“Action Operations"下的"New"按鈕,"Operation Type"選擇"Send message","Send Message to"選擇一個或多個要傳送訊息的使用者組,”Send only to"選擇我們之前新增的"zabbix_msmtp"。 
注:只有對改Group有許可權的使用者才能收到告警通知郵件。
2.點選save儲存 


zabbix使用者配置 
登入到zabbix, 進入"Adimistration" >> "Users",在之前選定要傳送訊息的組裡的Members欄位裡選擇一個使用者,例如選擇Admin使用者。
在使用者資訊修改介面最下方的”Media"處點選"Add"按鈕。 
Type選擇"zabbix_msmtp",Send to填入收件人地址,點選Add新增。 
點選"Save"儲存配置。 
重啟Zabbix Server。
至此配置完成,測試! 






來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26739940/viewspace-1209124/,如需轉載,請註明出處,否則將追究法律責任。

相關文章