帳號:
密碼:
最新動態
產業快訊
CTIMES / 文章 /
能夠處理大量郵件的自由軟體 – Open WebMail
 

【作者: 董仲愷】   2004年01月15日 星期四

瀏覽人次:【5019】

自2000年9月開始,成功大學電機系分散式系統實驗室以NeoMail 1.14為基礎開始發展Open WebMail,到現在差不多有三年的時間;目前這套系統已支援三十多國語言,在全世界有20個正式Mirror站台。由於其功能相當完整,許多國內外的各個機構、公司及學校都在使用,Open WebMail的官方網址是http://openwebmail.org。


目前Open WebMail的Server站台架在美國Spring Link骨幹上的機房,由Daniel Pentecost及他的公司Norvasen與Pentecost Inc.完全免費提供,而整個網站的運行與維護則是由Thomas Chung在負責。基於Open WebMail是一個建立在開放原始碼底下的程式,所以在開發的過程中,受到許多來自世界各地朋友的幫助, 讓人感到有世界村及天涯若比鄰的感覺。


至於http://turtle.ee.ncku.edu.tw/openwebmail則是程式的發展中心,所有最新的程式碼都是在這裡測試完後才開始對外公佈,然後再複製(Mirror)到官方站台及各地的Mirror Site。


Open WebMail的主要功能與特點

Open WebMail 主要功能分成電子郵件、網路行事曆和網路硬碟三大部分。


電子郵件

Open WebMail提供完整的MIME郵件編寫能力,並支援通訊錄、外部POP3郵件抓取、郵件規則、垃圾信過濾功能、全文檢索、拼字檢查,自動回覆、多國語言,及簡繁互換等功能。


網路行事曆

透過網路行事曆,使用者可以方便地安排自己的行程,而系統會在事件到達之前,寄一封信到WebMail中提醒使用者,或是將通知送往使用者事先指定的Email Address,達到類似秘書提醒的功能


網路硬碟

網路硬碟則可作為使用者在網路世界中的個人資料中心。除了可讓郵件中的附件與網路硬碟相互複製外,Open WebMail的網路硬碟提供了各項完整的功能,包括目錄/檔案的操作,各類壓縮檔案管理與及縮圖建立等。


經由這三個主要元件的密切配合,Open WebMail提供給使用者一個方便的作業環境,讓使用者能夠隨時隨地透過網路管理,取得所需要的資訊或資料。


Open WebMail的分類技術介紹

目前的WebMail軟體依照存取信件匣檔案的方式來作劃分,主要可分為經由POP3/IMAP server存取,以及直接存取信件匣檔案等兩種存取方式。


《圖一 經由 POP3/IMAP server 存取郵件》
《圖一 經由 POP3/IMAP server 存取郵件》

如(圖一)所示,在寄信方面,WebMail程式以SMTP Protocol和Mail Server 上的Transport Agent(Sendmail)溝通,並將信件經由TA送往Internet。而在信件匣的處理上,則是透過POP3或是IMAP4 Server兩個機制來進行存取的動作。透過POP3/IMAP4 Server存取信件匣主要的好處,是在於提供WebMail服務的Server可以和Mail Server在不同部機器上執行。因此在已有的Mail Server,額外加上WebMail的服務功能時,就不必擔心會影響到已有的Mail Server。當然(圖一)Web Server所用的Http Server和WebMail,也都可以和Mail server安裝在同一部機器裡;不過當Mail Server Loading很重時,讓Web server與Mail Server兩者分開,可以有分散負載,即負載平衡的好處。


另一個好處是WebMail的開發人員不必去擔心信件匣存取的一些細節問題,例如不用考慮信件匣Owner檔案權限的問題,因為已由POP3/IMAP4 Server處理掉了;同時WebMail在設計上可以與信件匣的資料格式無關。只要是POP3/IMAP4 看得懂的格式,都可以為WebMail所用。所以有相當多的WebMail軟體,如 SquirrelMail、Horde/IMP、TWIG都是採取此種設計。


但是透過POP3/IMAP4 Server存取信件匣也有一些缺點,首先是效率的問題;由於是透過POP3/IMAP4來存取信件匣,WebMail程式本身並無法將信件匣作一些進階的資料管理或索引,因此當信件匣內信件數目太多時,WebMail必須透過POP3/IMAP4來進行大量資料的傳輸,如此一來,會導致速度變慢(試想信件匣內有5000封信件,使用者分別要求以日期、作者、標題、大小等條件進行排序的情形)。


其次是功能上的限制,由於POP3/IMAP Server主要提供對信件匣裡的信件基本操作,所以如果WebMail要提供Mail以外的一些功能就較不容易,如自動回信、行事曆和網路磁碟等等。


《圖二 直接存取信件匣檔案》
《圖二 直接存取信件匣檔案》

如(圖二)所示,我們可以發現寄信方面還是需要透過SMTP Protocol經由Transport Agent將信件送往Internet,但是在信件匣處理上卻改成WebMail程式直接存取使用者信件匣,不需要再透過POP3/IMAP4 Server。


直接存取使用者信件匣的主要好處,是因為WebMail直接處理檔案系統的資料, 程式可以針對信件匣內信件的一些資料欄位進行索引或快取,並加快信件匣的存取速度。因此即使在信件匣內有著大量的信件時,還是能夠維持不錯的效能;並且也可以視需要而定,將信件存其它的Filesystem中。


但是如要直接存取本身的檔案,WebMail需要了解所處理的信件匣格式細節,因此要支援多種格式會較為麻煩;同時為了處理信件匣屬於不同擁有者所造成的檔案權限限制,WebMail本身需要以Setuid Root的身分執行,因此WebMail程式本身的設計需要特別小心,以免造成系統安全上的漏洞。


採取這種設計方式的WebMail包括SqWebMail、NeoMail和Open WebMail等三種。


Open WebMail架構介紹

《圖三 運作概觀》
《圖三 運作概觀》

Open WebMail是屬於直接存取信件匣檔案的WebMail,如(圖三)所示,Open WebMail除了可直接存取Mail Server上的信件匣外,還可以透過POP3通訊協定將其他Mail Server上的信件抓回來。讓使用者在Open WebMail中可以同時處理多個信箱的信件。


Open WebMail 中的模組大致分成三個部分,最上層的是CGI程式,直接面對 User Request;中間的部分為HTML信件相關處理、郵件過濾和抓取外部 POP3 信件的相關程式;最底層則為其他基本模組,其中maildb.pl所包含的主要有郵件索引存取,及郵件分析(建立mime tree)的部分。


提高執行效率的機制

一台WebMail Server往往需要面對大量的使用者同時存取,因此如何提高 WebMail系統的執行效率就變得相當重要,以下我們列出一些設計上與效率有關的部分:


使用DBM加速信件匣存取

Open WebMail在設計上,大量地使用DBM資料庫來索引信件匣內的資料,因此即使在面對信件匣內大量信件的狀況下,仍然能夠保持良好的反應速度。


透過索引存取信件首先碰到的問題在於如何維持索引與資料同步動作,因為信件匣可能隨時被Open WebMail以外的程式所改動。研發單位所採用的方式是將信件匣的大小和檔案修改時間存一份紀錄在DBM的資料庫中,如此一來,一旦信件匣有被更動過,只要比對DBM中的紀錄就知道了。然而重建DBM索引是一個很花時間的動作,所以研發單位使用了一些技巧來加快這個動作。


《圖四 信件更動示意圖》
《圖四 信件更動示意圖》

(圖四)是一個信件匣經過變動後,其中的信件所可能發生的4種情形。由於通常只有少部分的信件被更改(如 4,10),所以大部分的信件的大小都不會變動(1,2,3,8,9)。Open WebMail在重建索引時,每碰到一封信件會先依據舊的索引紀錄,直接跳到信件結尾看看是否正確。如果能發現結束記號,表示這封信件沒被改過,就可以直接將舊有紀錄複製到新的DBM 中。這麼一來就省下逐行讀入分析這封信所花的時間。


讓程式常駐於記憶體中執行

每當有使用者的Request進到 Httpd,Httpd都要呼叫執行Open Webmail中所對應的程式,以Perl CGI的角度來看,所需要的動作有:


  • ●執行Perl Interpreter,


  • ●Perl Interpreter由硬碟上載Open Webmail程式碼與相關連的模組到記憶體中,


  • ●Perl Interpreter將 Open Webmail Source Code編譯成Perl Byte Code,


  • ●Perl Interpreter載入Byte Code,初始化環境(Initialize Memory、Global Variable)


  • ●Byte Code 執行



由於Open Webmail的程式碼相當龐大,步驟2、3所需的時間也就相當地可觀。但是由於每當使用者Request完成後,Open Webmail就結束執行,所以下次使用者Request進來時, 就必需再重複1、2、3、4的動作。其實對同一支 perl 程式而言,步驟1、2、3、4的結果永遠都是一樣的,只有步驟5會根據使用者狀況產生不同的結果。如果能省下重複在1、2、3、4步驟上的時間,那麼 Perl CGI程式的速度便可以大幅地提昇。


研發單位找到的能讓Perl CGI程式常駐記憶體的解決方案有三種,分別是 mod_perl、FastCGI和SpeedyCGI。


mod_perl

一開始研發單位嘗試的是mod_perl,mod_perl會把Perl Interpreter整個放進Http Server裡,且每個被mod_perl執行過的程式都會被存在記憶體中。Mod_perl 最大的特點是允許事先指定要載入哪些module到記憶體中,並讓所有的mod_perl 程式共用。


然而mod_perl因為Perl Interpreter和Httpd放在同一個Proces中,權限等同Httpd, 所以無法支援Setuid Root,但是Open WebMail需要Setuid Root來存取屬於不同使用者的信件匣,所以Open WebMail無法配合mod_perl使用。


FastCGI

FastCGI 透過一支C寫的Wrapper程式(FastCGI Frontend),將來自Httpd的CGI參數經由網路傳給另一部電腦Remote FastCGI Server的CGI 程式。執行後,再透過網路將結果回傳給FastCGI Frontend,再經由Httpd傳給使用者。在上面的流程中,Remote FastCGI Server上的CGI程式執行過後並不會結束,而是繼續等待下一次的FastCGI Frontend的連線。


由於CGI程式和Httpd是兩個獨立的Process,所以FastCGI可以支援Open WebMail所需的Setuid Root。FastCGI是研發單位所考慮使用的第二方案,不過由於FastCGI是一個通用各種程式語言的解決方案,Open WebMail為了要配合FastCGI工作而需要較多的修改,不過目前已經有其他使用者讓Open WebMail在SpeedyCGI下常駐執行了。


SpeedyCGI

SpeedyCGI的運作方式很像FastCGI,主要的差別在於Frontend和Backend 是透過UNIX Domain Socket和mmap()溝通,所以兩者一定是在同一部電腦上運行。另外一個差別是SpeedyCGI專門為Perl程式設計的,所以一般的Perl程式只要少數的修改就能配合SpeedyCGI工作。


研發單位將Open WebMail移植到SpeedyCGI 平台後,同時利用常駐執行的優點, 把大部分固定不變的資料都Cache在Global Variables中,以避免磁碟重複讀取這些資料。


以下是研發單位利用一支大小約8000行的Open Webmail–Tool.pl工具程式列出單個信件匣中所有信件屬性,在不同平台執行的測試數據如下:



 

 
 
Pure CGI SpeedyCGI Speedup
P4-1.6G/512Mb 0.39s 0.06s 6.5s
PII-400/128mb 1.14s 0.09s  12.6s
K6-266/128mb 2.63s  0.22s 11.95s
P200/16mb  4.66s 0.49s 9.5s

資料壓縮傳輸

由於網頁大部分都是文字資料,壓縮比很高,對於透過數據機連線或是使用PDA上網的使用者來說,這個功能能夠大幅地降低等待網頁出現所需的時間。


結語

Open WebMail提供完整的郵件處理功能,並整合網路行事曆與網路硬碟等其它的功能,由於Web介面以無所不在方式來運作,讓Open WebMail成為使用者的個人網路資訊中心。相較於封閉軟體昂貴的授權費用,整套Open WebMail 採取開放原始碼開發方式,使用者可自由下載,並配合高效能且穩定FreeBSD或 Linux作業系統來運作。


延 伸 閱 讀
這是一篇教導使用者如何在Open WebMail上設定真實和虛擬用戶的文章,如此一來,使用
者就可以使用POP3或網路瀏覽器(Open WebMail)來接收不同帳號的信件。不過使用者需要初步地了
解Postfix和vm-pop3d,才能夠做這些設定
,相關介紹請見「如何在Open WebMail上設定虛擬用戶」一文。
FastCGI是一個高延展性的CGI語言介面,能夠建立一個動態的目錄,讓企業與客戶透過網
頁上的應用程式來做產品交易、服務和交流等商業活動可以順利地執行。FastCGI有著快、開放和安
全的優點,並改善了舊有CGI的一些問題
,你可在「高性能的網頁伺服器服務語言 – FastCGI白皮書」一文中得到進一步的介紹。
IMP的全名為Internet Messaging Program,是以PHP語言寫成的一個Webmail與IMAP和POP3
之間的程式。IMP可讓IT人員靈活地運用Webmail的許多功能。這個網站裡有著詳盡的IMP介紹,並有
安裝和設定的教導
,在「IMP Webmail Client」一文為你做了相關的評析。
相關組織網站
Squirrelmail官方網站
SqWebMail官方網站
NeoMail官方網站
相關文章
AI高齡照護技術前瞻 以科技力解決社會難題
3D IC 設計入門:探尋半導體先進封裝的未來
SiC MOSFET:意法半導體克服產業挑戰的顛覆性技術
意法半導體的邊緣AI永續發展策略:超越MEMS迎接真正挑戰
CAD/CAM軟體無縫加值協作
comments powered by Disqus
相關討論
  相關新聞
» 數智創新大賽助力產學接軌 鼎新培育未來AI智客
» VicOne深植車用資安DNA再報喜 獲TISAX AL3最高等級認證
» 勤業眾信獻策5方針 解決GenAI創新3大常見風險
» Fortinet整合SASE突破組織分散管理困境 重塑雲端安全的混合未來
» UD Trucks選用VicOne解決方案 利用情境化攻擊情報洞察風險


刊登廣告 新聞信箱 讀者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2024 遠播資訊股份有限公司版權所有 Powered by O3  v3.20.2048.3.128.172.32
地址:台北數位產業園區(digiBlock Taipei) 103台北市大同區承德路三段287-2號A棟204室
電話 (02)2585-5526 #0 轉接至總機 /  E-Mail: webmaster@ctimes.com.tw