《Linux設(shè)置定時任務(wù)》 一文中,我們學習了使用crontab設(shè)置定時任務(wù)的方法,并用它來獲取ganglia的運行狀態(tài)。這樣還不夠,我們想要在ganglia的運行狀態(tài)出現(xiàn)問題時通知我們,這樣,我們就不用每天自己查看日志了。
德江網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,德江網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為德江1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的德江做網(wǎng)站的公司定做!
本文主要參考 Ubuntu mail命令發(fā)送郵件 和 如何通過Shell腳本實現(xiàn)發(fā)送郵件通知功能? 。
1、安裝mailutils
sudo apt-get install mailutils
2、General type of mail configuration選擇Internet Site。
3、System mail name輸入mail.voidking.com。
命令格式:
mail [OPTION...] [address...]
常用到的選項,一個是s,代表主題;一個是A,代表附件。其他的需要時查看help。
目標:給郵箱 voidking@qq.com 發(fā)送郵件,主題為“Hello VoidKing”,內(nèi)容為“Welcome to mail world!”
mail -s 'Hello VoidKing' voidking@qq.com
提示Cc,這里不需要抄送,就直接回車。然后輸入郵件內(nèi)容“Welcome to mail world!”,回車,ctrl+D,發(fā)送郵件。
但是,等待了幾分鐘,并沒有收到郵件,垃圾箱也沒有。
mail ,查看email的發(fā)送狀態(tài)為Undelivered Mail Returned,原來沒有投遞出去。
查看郵件系統(tǒng)日志: tail -n 50 /var/spool/mail/test ,提示host mx3.qq.com[183.57.48.35] said: 550 Mail content denied。看來qq郵箱的垃圾郵件防御機制做的不錯,那就換個163郵箱,沒想到依然失敗。
那就換一臺服務(wù)器!發(fā)送給 voidking@qq.com ,成功!很尷尬。。。
除了上面的方式發(fā)送郵件,我們還可以使用:
mail -s 'Hello VoidKing' voidking@qq.com 'Welcome to mail world!'
或者使用:
echo 'Welcome to mail world!' | mail -s "Hello VoidKing" voidking@qq.com
1、從文本讀入內(nèi)容發(fā)送郵件
mail -s 'Error report' voidking@qq.com /tmp/log/ganglia/error-20180524.log
2、發(fā)送附件
mail -s 'Error report' voidking@qq.com -A /tmp/log/ganglia/ganglia-20180524.log /tmp/log/ganglia/error-20180524.log
3、指定發(fā)件人
echo 'Welcome to mail world!' | mail -s "Hello VoidKing" voidking@qq.com -aFrom:haojin@qq.com
失敗了,收不到郵件,不知道什么原因,留個坑吧。
目標:每天獲取一次ganglia的狀態(tài)日志,然后通過checkganglia.sh腳本進行審閱。審閱完畢,發(fā)送審閱結(jié)果到管理員的郵箱。
修改checkganglia.sh腳本為:
至此,大功告成! 《Linux設(shè)置定時任務(wù)》 配合 《Linux設(shè)置郵件提醒》 ,簡直完美!兩篇文章完成了一個小系統(tǒng):定時生成ganglia日志,定時審閱ganglia日志,并且把審閱結(jié)果通過郵件發(fā)送給管理員。
Linux命令大全——LMNOPQ
如何在Ubuntu環(huán)境下搭建郵件服務(wù)器(一)
效果截圖
Sendmail :sendmail 是最古老的 MTA(Mail Transfer Agent,電子郵件系統(tǒng))之一,最早它誕生的時候,Internet 還沒有被標準化,當時主機之間使用的是 UUCP 技術(shù)來交換郵件。它被設(shè)計得比較靈活,便于配置和運行于各種類型的機器。
Qmail :qmail 是新生一代的 MTA 代表,它以速度快、體積小、易配置安裝等特性而著稱。作者 D.J.Bernstein 是一個數(shù)學教授,富有傳奇色彩。他于 1995 年開發(fā) qmail,1996 年發(fā)布 0.70 版,并使用了多種當時比較先進的 技術(shù),包括 Maildir,與 sendmail 單個 binary 不同的模塊化設(shè)計,權(quán)限分離,以及使用了大量由他編寫的配套工具,如 daemontool,ucsip-tcp 等。qmai 迅速成為了 Internet 上最有名的 MTA,使用者眾。
postfix :postfix 如今已經(jīng)獨樹一幟,流水線、模塊化的設(shè)計,兼顧了效率和功能。靈活的配置和擴展,使得配置 postfix 變得富有趣味。其主要的特點是速度快、穩(wěn)定,而且配置/功能非常強大,并和 sendmail 類似,提供了與外部程序?qū)拥?API/protocol。尤其是配置部分,postfix 另一個優(yōu)勢是至今依然保持活躍的開發(fā)工作,而且穩(wěn)步發(fā)展,適合高流量大負載的系統(tǒng),擴充能力較強。本實驗也是基于 postfix 服務(wù)器軟件來實現(xiàn)。
郵件服務(wù)器基本的工作原理
MUA(Mail User Agent):向外發(fā)送郵件,以及提供用戶瀏覽與編寫郵件的功能。
MTA(Mail Transfer Agent):(可以理解為 smtpd 服務(wù)器)幫忙將用戶的郵件傳遞出去或接收進來。
MDA(Mail Delivery Agent):將接收下來的郵件存放到對應用戶郵筒當中的程序。通過分析 MTA 所收到郵件的表頭或內(nèi)容,來判斷此郵件是屬于哪個用戶,然后決定將此郵件投遞給哪個用戶的郵筒里。
MRA(Mail Retrieval Agent):通過 MRA 服務(wù)器提供的郵政服務(wù)協(xié)議(POP)來接收自己的郵件。
郵件中繼:
SMTPD 要支持郵件路由功能,需要打開 Open Relay 開放式中繼。
SMTPD 是根據(jù)收件人判斷郵件是否需要中繼,而且只給指定的客戶端中繼。
注:當 DNS 上存在多個 MX 記錄的主機這時就是根據(jù) DNS 的郵件級判斷了。DNS 上定義的值越小,其優(yōu)先級越高。輔助交換器接受到郵件并不能保存郵件。而是這個輔助交換器會等到主郵件交換器空閑的時候把代替它接受下來的郵件在轉(zhuǎn)給主郵件交換器。所以任何郵件處理都是主郵件交換器處理的。所以我們實際情況下,如果有 2 臺服務(wù)器做郵件交換器,性能比較高的應該為主的。
安裝配置過程中,postfix 通過 Internet 發(fā)送和接收 email,并存儲在用戶郵箱里。同時客戶也可以通過 IMAP 或者 POP3 恢復他們的郵件。其中的客戶認證是通過 Courier Authdaemon 模塊的。下圖表示出了這個過程:
出現(xiàn)安裝界面時,首先按下 tab 鍵切換到確定,然后按下回車。
安裝 postfix 的時候會問你安裝的服務(wù)器類型,對于我們的需要,我們選擇默認的 Internet Site,這是最符合我們的服務(wù)器類型,然后按下回車確認。
使用 vim 編輯配置文件:
大概在第 31 行,編輯 myhostname,修改為 myhostname = shiyanlou.com。
然后我們把 alias_map 參數(shù)修改為 alias_maps = hash:/etc/postfix/virtual,之后會講解 virtual 里面填寫什么。
之后設(shè)置 mynetworks 段落,它定義可以使用這臺服務(wù)器的主機,我們這里就用默認的本地地址。你也可設(shè)置為其他地址。
編輯完成后按下 Esc 鍵,輸入 :wq 保存退出。
此命令創(chuàng)建了一個用戶 master,其中 -d 和 -m 選項用來為登錄名 master 產(chǎn)生一個主目錄 /usr/master(/usr 為默認的用戶主目錄所在的父目錄)。
我們編寫之前設(shè)置的 virtual 文件,這些郵箱地址是用來傳送郵件的。
在這個文件里,我們將設(shè)置一個表,對應相關(guān)的郵件地址。
完成后保存關(guān)閉文件。
我們可以通過調(diào)用下面這個命令來實現(xiàn)我們的映射:
接著我們重啟 postfix,完成我們的修改:
我們可以用 shiyanlou 這個賬號給 master 這個賬號發(fā)一封郵件。首先我們需要安裝一個命令行收發(fā)郵件的軟件 mailutils 。
寫一封郵件
輸入如下內(nèi)容:
其中 -s 參數(shù)是指郵件的標題, 后面是將要發(fā)送的郵件內(nèi)容從 hello.txt 中重定向。這個命令如果正確執(zhí)行不會有輸出。
然后我們切換到 master 用戶,查看我們的郵件。
按下回車建可以查看郵件內(nèi)容,輸入 quit 即可退出郵箱。
Linux 郵件服務(wù)器原理介紹,編譯安裝 Postfix 實現(xiàn)本地的郵件服務(wù)
Ubuntu 服務(wù)器指南-郵件服務(wù)-Postfix
how-to-run-your-own-mail-server-with-mail-in-a-box-on-ubuntu-14-04
筆者做過做過使用python發(fā)送郵件- Python使用yagmail庫發(fā)送郵件 ,那么在不同平臺都可以完成一些監(jiān)控報警功能。但是在linux平臺下,如果腳本是shell實現(xiàn)的,可以調(diào)用python腳本,也可以直接使用shell來發(fā)送。
1、按照mailx軟件包, 安裝后在/usr/bin/mail
? ? sudo yum install mailx -y
2、修改配置文件/etc/mail.rc
? ? 直接修改配置文件vim /etc/mail.rc, 在最后追加下面的配置,筆者使用的是163郵箱。需要注意的是,需要進入郵箱開啟SMTP服務(wù),然后得到一個授權(quán)碼,用于登錄第三方郵件客戶端的專用密碼。smtp-auth-password即為授權(quán)碼,而不是郵箱地方密碼。
3、發(fā)送郵箱測試
? ? ? 命令行輸入: echo "測試郵件" | mail -s "郵件主題" -a ./myshells/clear_buffcache.sh ***@qq.com? 。-s添加郵箱主題,并添加附件后將郵箱內(nèi)容一起發(fā)送給***@qq.com? 。郵箱里面立馬就可以收到了。
也可以使用文件內(nèi)容進行郵件發(fā)送:mail -s? "郵件主題"? 收件地址? ? mail.txt? 。
也可以在命令行輸入郵箱內(nèi)容:mail -s? "郵件主題"? 收件地址? ,輸入完這行命令后回車,會進入郵件正文的編寫,可以輸入任何文字。當郵件正文輸入完成后,需要按CTRL+D結(jié)束輸入后發(fā)送。
如果發(fā)送失敗,咋命令行會提示錯誤: message not sent,并會在用戶目錄下的dead.letter里面顯示具體信息。
mutt+msmtp 可以做到發(fā)郵件,目前還沒有在tty下收取商業(yè)郵箱的工具,mail -e只能收取系統(tǒng)管理員發(fā)送的郵件,而不是商業(yè)郵箱。
修改~/.msmtprc:
account qqmail
#設(shè)置認證方式, 此處為登錄
auth login
#發(fā)送郵件的主機名
host smtp.163.com
from xxx@163.com
#你在你所使用的郵箱系統(tǒng)中的用戶名
user xxx@163.com
#郵箱密碼, 當然在這里我的密碼是隨便寫的
password 123456
#日志文件
logfile ~/.msmtprc.log
#參數(shù)指定發(fā)送賬戶, 具體參數(shù)名請看msmtp的man page
account default:163mail
配置文件寫好, 要將其權(quán)限修改為 chmod ~/.msmtprc 0600, 然后修改mutt的配置文件, 它的配置文件名為 ~/.muttrc:
#此處填寫msmtp的絕對路徑名, 可使用 which msmtp 命令得到
set sendmail="/usr/bin/msmtp"
set use_from=yes
#收件人看到的郵件發(fā)送人姓名
set realname="xxx"
set from=xxx@163.com
#郵件內(nèi)容使用vi編寫
set editor="vi"
兩個配置文件都寫好后, 嘗試發(fā)送一封郵件來測試. 在命令行中輸入
mutt -s 'just a test' xxx@163.com
郵件內(nèi)容寫好后, 按 :wq 保存退出, 進入另一個界面,按a可添加附件, 按y正式發(fā)送郵件。