我司用的西部數碼雲服務器做郵件報警,我看阿里雲也是屏敝了25端口。
所以打臉的說,我做了兩天才搞通。
做這個報警,我反正操碎了心,微信有注冊過公眾號,所以微信做了一天多都沒做通,聽說跟微信公眾號有沖突,搞不明白,轉戰郵件。
sendEmail默認端口為25,我不會繞25,一系列報錯:Nov 21 16:58:05 ebs-49310 sendEmail[31711]: ERROR => Timeout while connecting to smtp.exmail.qq.com:25 There was no response after 60 seconds.
報錯還有如下情況:smtp-server: 535 Error: ȫʹԃ˚ȨëµȂ¼¡£Ъȩȫ¿´: http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256"
/root/dead.letter" 11/293
. . . message not sent.
如果你也遇到以上情況,那么試試下面吧
首先你得有郵箱的授權碼
如果這里是關閉請開啟,如果是開啟狀態但不知道授權碼的,那關了再開一次,記錄下授權碼:本人授權碼為jjtpupmyrtwkbjhc
有了授權碼,下面言歸正傳:
yum -y install mailx
ln -s /usr/bin/mailx /usr/bin/mail
chown -R zabbix.zabbix /usr/bin/mail
vim /etc/mail.rc
如果你的/etc/mail.rc里有配置的set smtp-use-starttls,請注釋掉,配置這行會驗證證書失敗。
這個玩意,關了 systemctl stop postfix.service
生成qq郵箱的ssl證書
mkdir -p /root/.certs/
echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt
certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
certutil -L -d /root/.certs
進入證書存放目錄,cd /root/.certs/
返回以下提示即為正常:
mailx -s "郵箱測試" 402252408@qq.com < message_file.txt無返回值即發送成功
echo test | mail -v -s " test" 402252408@qq.com (也可以實現郵件發送的)
成功。
配置zabbix網頁郵件報警
對了,忘了附腳本圖了,回補
#!/bin/bash
### jiayan
messages=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 | tr '\r\n' '\n'`
echo "${messages}" | mail -s "${subject}" $1 >>/tmp/sendmail.log 2>&1
修改zabbixserver的配置文件
vim /etc/zabbix/zabbix_server.conf
修改為你的mailx.sh腳本路徑
其次配置網頁端
然后宕掉某個在監控狀態的服務器,出現報警提示
如果,你也出現以上已送達,卻郵箱沒反應的情況,那么你會在你的日志里看到以下內容:
Error initializing NSS: Unknown error -8015.
. . . message not sent.
未發送成功。
接着往下做吧少年,一波三十折,你已經經歷了二十九折了。
這個是權限問題,因為證書是在root下生成的,所以其它用戶沒有執行權限,所以了
cp -a /root/.certs /tmp
chmod -R 777 /tmp
然后再修改下/etc/mail.rc里的nss-config-dir (別怪我沒早說這個問題,這個問題也是我做到這里才發現的,見諒)
再次宕掉服務,郵件報警實現。