在Linux系統中,我們可以使用各種軟件之間的關聯與配合,完成我們想要完成的工作,這也正是Linux系統人性化的一方面,而MUTT+MSMTP的郵件組合便爲我們提供了不錯的應用解決方案。
應用背景:
公司新上線了一個項目,設計到的服務器有9臺,公司想通過郵件的方式來監控主機的運行狀態,以及判斷服務器上的資源是否可用,如果不可用自動執行重啓應用的操作,並且發送一封Email郵件通知相關人員。
在瞭解了需求之後,我們就可以整理出自己的一套解決方案,首先在這個項目需求中涉及到了Email郵件的發送,我們就會想到搭建Email郵件服務器,例如sendmail、postfix等等,但是這裏我們僅僅是需要發送郵件,對於費盡心思搭建的一套Email郵件服務器來講簡直就是浪費資源。對於這樣簡單發送郵件的需求,我們用Msmtp客戶端加上發送郵件需要的Mutt程序完全就可以實現了。
Msmtp (下載地址:http://sourceforge.net/projects/msmtp/files/msmtp/)
Msmtp是一款專門負責郵件發送的客戶端軟件,基於GPL發佈。支持TLS/SSL、DNS模式、IPv6、服務器端認證、多用戶等特性。該軟件和mpop是姊妹軟件。
Msmtp軟件安裝
tar jxf msmtp-1.4.16.tar.bz2
./configure --prefix=/usr/local/msmtp
make
make install
MUTT (系統一般自帶 下載地址:http://sourceforge.jp/projects/sfnet_mutt/releases/)
mutt是linux下的一個email程序。Mutt 顯然是一個 Unix 的郵件程序,它跟一般的 Windows 郵件程序不同,它不是一個包羅萬象的大雜燴。你甚至會發現它根本不直接發出郵件,它從來不自己編輯郵件,它從來不自己對郵件進行加密和數字簽名,Mutt 更像一個文件管理器,只不過它管理的是email。它的功能是藉助各個最強大的程序來實現的。這符合 UNIX 的設計思想。
Mutt安裝
tar zxf mutt-1.5.21.tar.gz
./configure
make
make install
軟件的安裝非常簡單,安裝之後我們就可以對其進行配置了,比較有意思的是這兩個程序的配置文件都爲隱藏文件,路徑爲家目錄。
Msmtp
cd ~
vi .msmtprchost smtp.163.com #你的郵件服務器地址
tls off #關閉tls
auth plain #設定登錄方式
from [email protected] #發送Email的郵件地址
user yourname #發送Email的用戶名
password yourpassword #發送Email的用戶名密碼chmod 600 .msmtprc #不允許其他用戶訪問該文件
touch .msmtp.log #創建日誌記錄文件
Mutt
cd ~
vi .muttrcset sendmail="/usr/local/msmtp/bin/msmtp" #指定msmtp執行的路徑
set use_from=yes #指定是否顯示來自用戶(別名)
set realname="阿布" #發件人別名
set [email protected] #指定要使用的email地址
set rfc2047_parameters=yes #解決附件中文亂碼的問題
set charset="GBK" #指定發送的郵件文字編碼(與服務器保持一致)
軟件配置完成後我們可以使用下面的命令來進行測試
echo “這裏輸入的是你郵件的正文內容” | mutt -s ‘這裏是你郵件的標題’ [email protected](指定要發送到誰的郵箱)
正常接收到測試郵件後,說明程序的安裝及配置是沒有問題的,接下來就可以配合系統來發送監控郵件了,而我們只需要將系統關鍵的信息提取出來即可,舉例如下:
vi sendmail.sh
#!/bin/bash
cpu=`vmstat 1 2 | sed -n '$p' |awk '{printf "%8s |%6s |%9s", $13,$14,$15}'`
mem=`free | grep 'buffers/cache' | awk '{print $4}'`
swap=`free | grep 'Swap' | awk '{print $4}'`
echo “您CPU目前使用量爲:$cpu 內存使用量爲:$mem 虛擬內存使用量爲:$swap”chmod 755 sendmail.sh
./sendmail.sh | mutt -s ‘system_monitor’ [email protected]
同樣的我們也可以使用它來監控我們的系統應用,例如監控Apache的運行情況,如果80端口不能正常工作,那麼重新啓動Apache應用,同時發送一封Email通知相關人員。
vi appcheck.sh
#!/bin/bash
curl http://127.0.0.1
if [ $? -eq 0 ];then
echo “is ok!”
else
/usr/local/apache/bin/apachectl restart
echo -e “您的Apache已於`date +%Y-%m-%d-%H:%M`執行重啓,請您關注此信息!”chmod 755 appcheck.sh
最後我們可以將兩個shell腳本加入到系統計劃任務中,通過crontab計劃任務可以實現公司的郵件監控需求,當然所監控的內容不止這些,另外如果你的郵件中需要包含附件,可以採用如下方式:
echo “test” | mutt -s ‘test’ [email protected] -a /usr/local/filename
寫在最後
整個過程沒有太多的技術含量,但是通過應用程序之間的配合既可以達到我們所要的需求,我們應該廣開思路,通過MSMTP+MUTT在加上系統計劃任務,我們可以讓系統完成很多事情,同時我們也可以收到相應的郵件通知,例如Mysql數據庫備份、網站定時備份等等。
原創文章轉載請註明,本爲地址:http://www.abuve.com/737.html