要傳遞一封電子郵件是需要許多的關卡配合才能成功,所以問題不一定是出現在自己所掌管的郵件伺服器上。雖然市場上有一些郵件稽核的產品可幫助使用者挖掘相關資訊,但問題是這種產品可能所費不貲,對中小企業而言也是一筆預算負擔。因此,本文將以Postfix郵件伺服器為例,利用Logfmon實作出一個可立即將發送電子郵件的狀態置入資料庫,讓相關管理人員能夠即時掌握電子郵件發送狀態的解決方案。
如果比對成功,亦即檔案變動的內容樣式符合使用者所自定義的樣式規則,即執行使用者自定義的指令或程式,相關比對流程如圖2示。
|
▲圖2 Logfmon比對運作流程。 |
由於Logfmon使用正規表示法來設定比對的條件式,因此接著簡單介紹正規表示法。由於本方案僅需使用模式比對的功能即可達成要求,所以這裡僅介紹模式比對,其餘更進階的用法就留待讀者自行研究。
正規表示法(Regular Expression)是一種威力強大的語法,可利用一些含有特殊符號的字串,來描述符合某種句型的句子。表2即說明了正規表示法所使用的特殊符號及模式比對。
表2 正規表示法所使用的特殊符號及模式比對
在說明相關的正規表示法的用法後,下一步即是安裝Logfmon程式。先至網頁「http://sourceforge.net/projects/logfmon/」取得最新版本(本解決方案中所使用的版本為1.1版)。解壓縮後,即可直接使用make進行編譯。
在編譯的過程中,筆者曾發生找不到y.tab.h的錯誤訊息而無法編譯成功。如果讀者也有發生這個問題,可先執行指令「make y.tab.c y.tab.h」產生y.tab.h,然後再重新使用「make && make install」來編譯Logfmon並進行安裝。
完裝完成後,就必須設定相關的設定檔(/etc/logfmon.conf),如下頁表3說明logfmon.conf所提供的參數及相關的意義。
表3 logfmon.conf的參數及使用說明
在了解Logfmon的相關用法後,下一步是取出Postfix在處理電子郵件時,會在「/var/log/maillog」產生相關記錄的正規表示法樣式,以便於採用Logfmon設定樣式比對時使用。
筆者使用的郵件伺服器為Postfix軟體,Postfix郵件伺服器會將相關的電子郵件記錄,儲存在「/var/log/maillog」檔案內,其他的郵件伺服器系統可能會稍微有些不同,這點要請讀者自行確認相關位置。
在這裡,Logfmon的角色是將Postfix所產生的記錄交由mailstatus.pl程式解析並儲存至資料庫內。因此,在「/etc/logfomon」內可設定如下的參數(其中#為註解):
設定成功後,以下先簡單說明Postfix在處理電子郵件後會在「/var/log/maillog」檔案產生的Log。
如圖3所示,即為成功發送一封電子郵件的相關Log記錄。通常一封電子郵件會有多筆的Log記錄,在此僅擷取一筆來當例子。
|
▲圖3 成功發送一封電子郵件的Log記錄。 |
在圖3中有一個欄位為Mail ID,每一封的電子郵件都會有一個唯一的Mail ID,讀者可以利用這個資訊來取得同一封電子郵件,以及其他相關的Log記錄。