Nagios/Postfix 转发警报邮件到Office365
豆子最近用CentOS7配置了個Nagios服務(wù)器,監(jiān)控服務(wù)器,交換機,打印機,Netapp等設(shè)備。Nagios的郵件我是通過sendmail轉(zhuǎn)發(fā)到本地的一個Exchange服務(wù)器上的。
最近需求變化,SMTP的轉(zhuǎn)發(fā)需要轉(zhuǎn)到Office365上面,因為對Office365不太熟悉,我花了2個小時的時間來學(xué)習(xí)怎么處理這個問題。
Office365支持3種SMTP的轉(zhuǎn)發(fā)場景。
https://technet.microsoft.com/en-us/library/dn554323%28v=exchg.150%29.aspx
對于我來說,我的Nagios服務(wù)器不需要作為其他服務(wù)器的郵件轉(zhuǎn)發(fā),因此使用第二種方式 Client Submission SMTP 就可以了。簡單的說就是,只要Office365上有的郵件賬號,我讓Nagios直接用這個賬號發(fā)郵件就行了。
我公司的AD和郵件已經(jīng)和Office365同步了,因此直接使用現(xiàn)有的郵件就可以了
在配置客戶端之前,先來試試看是否能夠進行SMTP的Relay轉(zhuǎn)發(fā)。傳統(tǒng)的測試方式是Telnet連接,然后測試,Powershell4自帶了Send-MailMessage的命令,因此可以直接運行測試。
如果沒有問題,那應(yīng)該很快就能收到,請注意發(fā)信人和驗證用戶,密碼必須一致。不能說我用李四的郵箱賬號驗證,但是去拿張三的郵箱發(fā)信,除非設(shè)置了SendAs的權(quán)限。
測試命令截圖
現(xiàn)在看看客戶端(Nagios)如何配置。
我之前使用的是Sendmail,但是在新版本里面,他會強制進行證書驗證,不然直接報錯。剛好最近考RHCE,豆子這次打算用Postfix試試看。
Postfix的空客戶端轉(zhuǎn)發(fā)我已經(jīng)很熟悉了,參見
http://beanxyz.blog.51cto.com/5570417/1609531
這個轉(zhuǎn)發(fā)給Office365的區(qū)別其實就是多配置一個用戶名密碼的驗證文件,然后強制他從某個郵箱發(fā)送,而不是默認(rèn)的user@myorigin 的格式。
首先創(chuàng)建一個用戶名,密碼的文件
vim?/etc/postfix/sasl_passwd然后添加以下信息
[smtp.office365.com]:587?nagios@xxx.com:password方括號里面是office365的smtp地址,587是端口號, 后面是用來驗證的郵箱用戶名和密碼
然后我們需要轉(zhuǎn)化成postfix可以識別的格式
postmap?hash:/etc/postfix/sasl_passwd最后在主配置文件里面添加以下信息
relayhost?=?[smtp.office365.com]:587 smtp_sasl_auth_enable?=?yes smtp_sasl_password_maps?=?hash:/etc/postfix/sasl_passwd smtp_tls_security_level?=?may smtp_sasl_security_options?=?noanonymousIP協(xié)議記得改成ipv4,不然office365服務(wù)器默認(rèn)是ipv6的地址,會報錯
inet_protocols=ipv4mydestination設(shè)為空
mydestination=重啟postfix,這樣基本上就可以工作了。
可以測試下,比如指定從 nagios@xxx.com發(fā)個郵件給abc@test.com
echo?'test?smtp'?|?mail?-r?nagios@xxx.com?-s?'test?email'?abc@test.com不出意外的話,應(yīng)該可以收到了。 如果等了半天沒反應(yīng),可以查看日志判斷報錯
比如
[root@sydnagios?postfix]#?tail?/var/log/maillog Apr??9?09:22:53?sydnagios?postfix/pickup[20595]:?8215039D9A9:?uid=1001?from=<nagios@aus.ddb.com> Apr??9?09:22:53?sydnagios?postfix/cleanup[44919]:?8215039D9A9:?message-id=<5525b84d.6PVA0r3rChf2lRe/%nagios@aus.ddb.com> Apr??9?09:22:53?sydnagios?postfix/qmgr[63629]:?8215039D9A9:?from=<nagios@aus.ddb.com>,?size=748,?nrcpt=1?(queue?active) Apr??9?09:23:03?sydnagios?postfix/smtp[44921]:?8215039D9A9:?to=<italerts@aus.ddb.com>,?relay=smtp.office365.com[132.245.164.34]:587,?delay=9.6,?delays=0.01/0/9/0.59,?dsn=2.6.0,?status=sent?(250?2.6.0?<5525b84d.6PVA0r3rChf2lRe/%nagios@aus.ddb.com>?[InternalId=20280835574078,?Hostname=SIXPR04MB0462.apcprd04.prod.outlook.com]?Queued?mail?for?delivery) Apr??9?09:23:03?sydnagios?postfix/qmgr[63629]:?8215039D9A9:?removed Apr??9?09:24:42?sydnagios?postfix/pickup[20595]:?B3F7539D9A9:?uid=1001?from=<nagios@aus.ddb.com> Apr??9?09:24:42?sydnagios?postfix/cleanup[45911]:?B3F7539D9A9:?message-id=<5525bPostfix沒問題的話,最后修改以下Nagios的配置文件就行了。
打開 command.cfg
#?'notify-host-by-email'?command?definition define?command{command_name????notify-host-by-emailcommand_line????/usr/bin/printf?"%b"?"*****?Nagios?*****\n\nNotification?Type:?$NOTIFICATIONTYPE$\nHost:?$HOSTNAME$\nState:?$HOSTSTATE$\nAddress:?$HOSTADDRESS$\nInfo:?$HOSTOUTPUT$\n\nDate/Time:?$LONGDATETIME$\n"?|?/bin/mail?-r?nagios@XXX.com?-s?"**?$NOTIFICATIONTYPE$?Host?Alert:?$HOSTNAME$?is?$HOSTSTATE$?**"?$CONTACTEMAIL$} #?'notify-service-by-email'?command?definition define?command{command_name????notify-service-by-emailcommand_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"?|?/bin/mail?-r?nagios@XXX.com?-s?"**?$NOTIFICATIONTYPE$?Service?Alert:?$HOSTALIAS$/$SERVICEDESC$?is?$SERVICESTATE$?**"?$CONTACTEMAIL$}重啟Nagios?
systemctl?restart?Nagios大功告成!
轉(zhuǎn)載于:https://blog.51cto.com/beanxyz/1630221
總結(jié)
以上是生活随笔為你收集整理的Nagios/Postfix 转发警报邮件到Office365的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 构造图 Codeforces Round
- 下一篇: Jenkins加Shell实现最简单的持