UNIX/Linux的電子郵件系統模型基本可分為郵件傳遞代理MTA,郵件存儲和獲取代理MSA,以及郵件客戶代理MUA三大模塊,就三大模塊和另類郵件服務進行簡述。
正文:
在Linux下有許多軟件包可以實現標准的郵件服務。UNIX/Linux的電子郵件系統模型基本可分為郵件傳遞代理MTA,郵件存儲和獲取代理MSA,以及郵件客戶代理MUA三大模塊。雖然也有一些特殊的郵件應用程序無法確切歸入上述分類。下面我們就Linux郵件服務做一概述。
1、郵件傳遞代理-MTA
在Linux下的郵件傳遞代理包括sendmail,該系統幾乎在任何UNIX平台上都有相應的版本;還有D.J. Bernstein的qmail以及Wietse Venema的Postfix系統。它們負責接收並轉遞郵件。這聽起來很簡單,實際上設置可能相當復雜。在郵件策略管理時需要設置一系列的路由和偽裝選項,而許多功能是由語言編程實現的,用以過濾或者修改中繼消息的頭信息。此外郵件路由和尋址郵件存儲信箱的過程包含了復雜的與各種目錄服務交互操作,這些目錄服務可能包括DNS,密碼文件,NIS,
LDAP別名/數據庫管理文件,以及各種的通用數據庫系統。
如今的MTA還要實現反垃圾郵件功能,控制郵件頭的to和from地址格式,達到允許或者限制特定域名或者地址范圍目的,以上主要是通過修改存取控制表和規則實現。這一過程通常包括查詢數據表或者目錄服務,例如Paul Vixie的實時黑洞列表程序RBL,郵件濫用預防系統MAPS,以及同類的Dorkslayer/ORBS系統。MTA一直在不斷增強之中,以實現加強的策略控制以及反病毒和反蠕蟲等功能。
在大多數情況下,安裝和設置MTA系統比較容易,不過強大的功能的實現是以高度復雜性為代價的。如果你所在的機構選擇定制的MTA來滿足特定的路由,體系,安全性和反垃圾郵件等要求,就需要更加復雜的設置選項,配置包括設計並處理MTA和各種子系統如LDAP、DNS服務器之間的復雜關系。
2、郵件存儲和獲取代理MSA
一旦安裝並設置完成了MTA,通常還需要對MSA系統進行同樣的配置過程。如今大多數機構並不直接將郵件傳送到桌面客戶系統,而是將郵件存儲到服務器,讓用戶通過POP或者IMAP來讀取各自的郵件。
郵件存儲的管理有許多種協議,但如今最常用的是POP3和IMAP4。對於MTA來說,由一些程序,或者稱之為Daemon來實現相應協議的服務。大多數MSA可以與通用的MTA交互,此外這些系統還包含加鎖或者其他安全機制,使得多個MSA可以並行工作而不發生沖突。
這意味著一些用戶可以通過POP協議獲取郵件而同時其余一些用戶可以使用IMAP協議,而另外一些用戶可以登錄系統,使用本地MUA例如pine,mutt或elm處理郵件。單獨用戶也可以從一種存取協議切換到另一種,而並不需要系統管理員的干預。聰明的用戶甚至可以越過通常的MSA/MUA服務,而使用通常的UNIX命令如cp、mv和ftp或者遠程同步rsync來隨意處置他們的郵件。對普通用戶來說這有些艱澀,但該方法有時可以用來方便地修復崩潰了的郵箱系統。
在一個已經安裝了Linux系統機器上設置POP服務相當容易,甚至不需要什麼操作。通常POP Daemon在最初的Linux操作系統安裝時已經設立。而如果POP daemon被禁止,可以在/etc/inetd.conf文件中去掉相應行的注釋,並重新啟動Daemon服務即可。
類似的,IMAP也是如此。POP通常將郵件轉遞到客戶端並從服務器上移除,而IMAP允許用戶將郵件存貯在服務器端的文件夾中,而客戶端的拷貝是緩存或者工作副本,這樣做需要更多的服務器存儲空間,卻可以讓IT部門集中在服務器端進行備份和恢復,並讓客戶端保持相當的靈活性和安全性。IMAP也可以設置成象POP那樣在客戶端讀取後就刪除服務器端的郵件,從操作上講,兩者並沒有什麼不同。兩種服務都由inetd來控制,或可稱其為網絡分發服務,相當於Linux的“傳達接待員”。
POP或IMAP可以經年累月的不間歇地運行。無需特殊關照,默默地為成百上千個用戶和郵箱服務。不過有時郵件回復系統會犯些愚蠢的錯誤,或者有些郵件軟件產生了一些bug,這就需要系統管理員介入,解決某些系統故障,清除一些郵件碎片和垃圾。
例如,有的用戶的pop系統可能崩潰,通常是由於客戶收到了太大的郵件附件所致。過大的附件文件超過了磁盤空間限制,解決方法是利用shell命令,利用uudecode解碼附件,並存儲到該用戶的home目錄。也可以設計一些小腳本程序來處理郵件,重新恢復用戶的郵箱系統。通常UNIX下的mbox是簡單的文本文件,qmail郵件存儲在含有單個小文本文件的目錄中。一個勝任的系統管理員完全可以輕而易舉的實現上述操作。也就是說,你所遇到的大多數與MSA和MTA有關的問題可以通過文本編輯器和常用的UNIX過濾器和應用程序加以解決。
3、郵件客戶代理MUA
郵件客戶代理MUA種類繁多,而且如雨後春筍,層出不窮,各有千秋。大都符合POP和IMAP協議。這也包括微軟的Outlook系列。在Linux下,許多人使用fetchmail抓取郵件並保存在本地郵箱。然後使用任何一種郵件客戶代理MUA,比如elm,pine,mutt,MH/exmh,EMACS的rmail,vmail,mh-e,gnus以及大量的帶有GUI界面的如Balsa, Mahogany等來處理郵件。也有眾多Linux用戶選擇使用Netscape Communicator內置的郵件客戶端。
4、另類的Linux郵件應用
在Linux和UNIX下,也有許多工具諸如procmail,vacation,biff,和fetchmail等,不能劃歸到MTA,MSA,MUA的分類中。這裡做另類簡介。
promail經常被用作“本地遞送代理”和郵件處理代理。它通常用來過濾發送給最終收信人的傳送信息部分。允許用戶編寫腳本程序實現對某些特定郵件的自動發文,拒絕,恢復或者轉寄功能。也可以用作處理郵箱,或者作為常規的電子郵件編程語言和程序庫。
vacation是一個收信後自動回復郵件的早期簡單應用。最初用來提醒通信者收信人正在度假,這一功能完全可以通過兩行簡單的procmail命令實現。
biff可用來通知用戶有郵件到達。在圖形界面GUI下,也有幾款類似的應用,可以通過顯示圖標,動畫,播放音樂或者語音提示表達郵件事件。還可以通過各種後台的MSA協議實現biff信息在整個網絡上的中繼傳遞。
總之,Linux下的郵件服務是方便靈活,強大而復雜的。只要精心規劃,悉心設計,細心配置,完全可以搭建出高效而免費的多功能電子郵件系統平台。