身為管理電子郵件伺服器的網管人員,最常被要求的功能大概就是「可否備份別人寄來的電子郵件以便日後查詢」,但以Linux平台建置的基本郵件系統將無法滿足所需,除非另行採購市面上具有備份電子郵件功能的郵件稽核產品。為此,本文示範如何利用MySQL資料庫來儲存電子郵件,以利後續的追蹤查核。
為了備份電子郵件,這裡將整合開源碼社群中的Postfix郵件伺服器與Procmail軟體,再加上自行撰寫的簡單程式,將郵件伺服器所接收到的電子郵件備份一份至資料庫。
為了簡單化的考量,本文中僅備份所接收到的電子郵件內的「收件人位址」、「寄件人位址」與郵件主旨資訊。
表1列出了本次須使用到的套件清單。
表1 執行環境所需套件
什麼是郵件系統
所謂的郵件系統,就是在日常生活中最常用的電子郵件服務,整個服務架構是由下列的角色合作所完成的,接著簡單說明相關角色的功能。
MTA
郵件傳送代理程式(Mail Transfer Agent,MTA)是整個電子郵件架構中最關鍵的角色,一般稱為郵件伺服器或SMTP郵件伺服器,主要用來寄送電子郵件,就像現實生活中的郵局角色一樣,幫忙寄發電子郵件。
另外一個重要功能為接收別台郵件伺服器所傳遞過來的電子郵件。在開源碼社群中最著名的郵件伺服器莫過於Postfix和Sendmail。本文採用的郵件伺服器即為Postfix。
MUA
郵件使用代理程式(Mail User Agent,MUA)即是平常撰寫電子郵件時所使用的軟體(如Outlook),使用者可以利用MUA軟體來建立電子郵件並寄出電子郵件,或者利用MUA軟體來收取郵件伺服器上的電子郵件。
MDA
所謂的郵件遞送代理人軟體(Mail Delivery Agent,MDA),是指當電子郵件到達目的郵件伺服器時,可先設定呼叫相關的MDA軟體來對電子郵件進行處理。
由於MDA軟體可取得電子郵件詳細的內容,因此可提供下列幾項功能:
1. 分析垃圾信(利用關鍵字設定):
利用分析電子郵件的標題或內容來判別是否為垃圾信。例如,若利用已知垃圾信的主旨(Subject)(例如設定主旨為「大拍賣」),可利用在MDA收到電子郵件時,解析電子郵件的主旨,如果符合垃圾信的定義,即將此電子郵件丟棄或標示為垃圾信。
2. 自動回信機制:
可設定MDA軟體在接收到電子郵件時,即產生一封回覆電子郵件,告知寄件者已收到他所寄出的電子郵件。
3. 備份郵件至資料庫:
這是本文衍生的一種用法,可利用MDA軟體擷取電子郵件的相關欄位內容,而後備份至資料庫以便日後統計稽核。
在開源碼社群中最常見的MDA軟體即為Procmail,在本文中也是利用Procmail將電子郵件內容傳遞給自行撰寫的程式,然後將電子郵件的相關欄位儲存至資料庫中。
SMTP
SMTP(Simple Mail Transfer Protocol,簡易郵件傳輸協定)是電子郵件在進行傳遞時所使用的標準,顧名思義,它是個簡單的通訊協定(可是管理過郵件伺服器的網管人員,都不認為管理郵件伺服器是件簡單的事)。
SMTP通訊協定提供下列的指令來傳送電子郵件,如表2所示。
表2 SMTP通訊協定相關指令
POP3
POP3(Post Office Protocol Version 3)是用來下載郵件伺服器上之電子郵件所使用的通訊協定。使用者利用MUA等軟體,將郵件伺服器上的電子郵件下載至本地端的電腦上,此種方式最大的缺點在於使用者必須將所有的信件下載至本地端後,方可得知信件的內容。