在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下的郵件服務是方便靈活,強大而複雜的。只要精心規劃,悉心設計,細心配置,完全可以搭建出高效而免費的多功能電子郵件系統平台。