要傳遞一封電子郵件是需要許多的關卡配合才能成功,所以問題不一定是出現在自己所掌管的郵件伺服器上。雖然市場上有一些郵件稽核的產品可幫助使用者挖掘相關資訊,但問題是這種產品可能所費不貲,對中小企業而言也是一筆預算負擔。因此,本文將以Postfix郵件伺服器為例,利用Logfmon實作出一個可立即將發送電子郵件的狀態置入資料庫,讓相關管理人員能夠即時掌握電子郵件發送狀態的解決方案。
負責管理電子郵件系統的網管人員相信都曾被問過這樣的一個問題:「為什麼我寄出去的電子郵件對方都說沒有收到?」,這時,一個有經驗的網管人員就必須發揮溝通的技巧,說明電子郵件的傳遞流程以及相關的背景知識。
如此大費周章的解說,只是為了解釋要傳遞一封電子郵件是需要許多的關卡配合才能成功,所以問題不一定是出現在自己所掌管的郵件伺服器上。
大部分明理的使用者通常都能夠接受這樣子的解釋說明(當然接受的程度是依照該網管人員在公司同仁心目中的專業程度而定),但是往往會再補上一句話:「那有沒有相關的電子郵件Log記錄來佐證我們的郵件伺服器沒有問題?」
聽到這句話,大多數的網管人員恐怕都會感到為難,因為電子郵件的Log記錄多如牛毛,就算已儲存相關的記錄,要從裡面挖掘出有用的資訊也很費功夫。
雖然市場上有一些標榜郵件稽核的產品可幫助使用者挖掘相關資訊,但問題是這種產品所費不貲,不是一般中小企業能夠負擔得起。
而且,既然決定使用Postfix(一個有名的開源碼電子郵件伺服器)來當成郵件伺服器,就是因為看上開源碼免費的特性。在此前提下,當然也就不會去購買這種昂貴的郵件稽核產品。
不過,相同的問題曾被多次的詢問,就代表這個問題有解決的必要,因此在本文中,筆者將以Postfix郵件伺服器為例,實作一個可即時將發送電子郵件的狀態置入資料庫,以便相關管理人員能夠即時掌握電子郵件發送狀態的解決方案,此解決方案主要的功能如下:
1. 在電子郵件伺服器發送電子郵件後,可即時記錄「收件者資訊」與「寄件者資訊」。
2. 在電子郵件伺服器發送電子郵件後,可即時記錄該封電子郵件的發送狀態,可分為如下的四種狀態:
- sent:電子郵件已成功地發送出去
- deferred:電子郵件因某種原因被延遲發送出去
- bounced:該電子郵件已被退信
- expired:該電子郵件已逾時
本解決方案所使用的軟體套件如表1所示:
表1 解決方案所需系統及套件
系統架構說明
如圖1所示,本解決方案主要的思惟流程如下所述:
- 1.當使用者利用Postfix郵件伺服器寄發電子郵件時,即會在系統的maillog檔案內產生一筆相關的電子郵件Log。
- 2.利用Logfmon軟體監控maillog檔案,一旦發現maillog發生變化,即比對所設定的樣式,如果樣式符合,即執行mailstatus.pl程式,來解析相關Log資訊。
- 3.mailstatus.pl程式將解析相關樣式,並將收件者、寄件者及寄發電子郵件狀態等資訊儲存至資料庫之中。
|
▲圖1 解決方案主要流程。 |
什麼是Logfmon
本解決方案是利用監控maillog檔案的方式來即時擷取相關的Log資訊儲存到資料庫,以達到管理郵件伺服器電子郵件發送狀態的目的。
因此,首先需要一個可即時監控檔案變動情形的解決方案。在Windows系統中最有名的相關軟體是Filemon,而在Linux系統下可利用Logfmon來即時監控系統檔案變動情況。
Logfmon主要利用正規表示法(Regular Expression,RE)來設定比對的規則樣式,當所監控的檔案內容發生變動,即將所變動的內容與此規則樣式進行比對。