• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    [轉]建立大容量基于Web的Email系統

    發布: 2007-6-30 18:56 | 作者: admin | 來源: | 查看: 14次 | 進入軟件測試論壇討論

    領測軟件測試網 建立大容量基于Web的Email系統

    王波

      最近幾年來,基于Web的免費Email系統非常流行。當前,幾個著名的免費Email網站基本上已經成為大多數人的選擇,建立單純提供免費Email服務的站點不再像以前那樣受到熱烈歡迎,但是提供Web界面的Email服務已經成為了一個商業站點為其注冊成員提供的基本服務之一。

      一個Email系統可以分為服務器端和客戶端,Web界面的Email系統則是將Email客戶放在了Web服務器端,因此Email系統所需要實現的是一個Web界面的Email客戶。然而,由于這個Email系統要求用戶數量較大,因此對于Email服務器也有特定的要求。


      ◆操作系統和用戶數據庫


      由于提供大容量Email系統對操作系統和數據庫的要求非常高,因此,選擇合適的操作系統和數據庫就是最基本的問題。

        由于提供web和email服務要求穩定性和性能特別高,因此一般都使用unix作為服務器的操作系統,例如hotmail使用freebsd和solaris,國內163等站點也是采用bsd系列。然而, unix的標準email系統也不合適用于這種大容量服務。有的unix系統,例如當前版本的linux,其用戶標識只有16位,因此用戶數量最多只能有64k,即使unix系統本身支持32位的用戶標識,考慮到性能因素,單臺服務器支持的用戶數量也不要超過10萬! 榱司哂兄С指嘤脩舻目蓴U展性,一般采用多臺服務器同時提供服務,雖然此時仍然可以使用標準unix用戶作為email用戶,但考慮到安全性、性能以及可管理性,一般采用非unix系統用戶來作為email用戶。而保存用戶數據通常采用支持網絡訪問的數據庫形式,一般常用的有ldap、標準數據庫、以及email系統自己實現的用戶數據庫。其中,ldap由于是提供目錄服務的標準,因此應該為最佳的選擇,其常用的開放源代碼實現為openldap;而標準數據庫由于實現方便、可擴展性強,其中在inte.net上最常用的為mysql;此外,也有使用其他方式實現的。
      ◆郵件的保存


      對于大容量Email系統來說,最關鍵的技術就是如何處理郵件存儲問題,采用何種方式提高存儲效率,將決定Email系統的成功與否。

      

      由于用戶數量較大,如何保存用戶的郵件就是一個非常重要的問題。傳統Unix使用一個單一目錄來保存所有用戶的郵件,在用戶數量較多時就極大地降低了文件系統的性能。只有使用多級目錄,每個目錄下的文件數量有限,才能降低打開文件時的系統消耗,或者不再使用簡單的文件來保存郵件,而采用某一種封裝形式。完全采取數據庫形式來保存郵件,由于用戶郵件操作多為文件操作,且大小變化較大,因此會造成性能和存儲空間上較大的浪費。

      由于用戶數量巨大,并且也要求能被多臺服務器同時訪問,必須采用存儲空間較大的服務器或服務器集群來保存,通過光纖通道或者網絡文件系統NFS來共享存儲空間,使得每個用戶的郵件存儲路徑對于每個服務器都是一致的。光纖通道是一種非常昂貴的解決方法,更為常用的是使用NFS,可以使用專用的NFS服務器,如NetApp,或者使用帶有RAID能力的PC Unix服務器。

      當使用NFS共享存儲空間的時候,必須注意一個非常重要的問題:由于NFS缺乏文件鎖定機制,在使用傳統的用戶郵件存儲格式mailbox時,由于所有的郵件都保存在同一個文件中,因此進行郵件操作就必須加鎖,以保證沒有訪問沖突,這就使得它不適合NFS存儲方式。為了解決這個問題,qmail提出了Maildir存儲方式,每個郵件作為單獨的一個文件保存在用戶個人的郵件目錄下,就避免了加鎖。因此,常見的免費郵件服務器,一般都采用Maildir方式來保存用戶的郵件。

      如果不打算使用共享文件系統的方式來保存用戶的郵件,而打算讓每個服務器只訪問其自己硬盤存儲空間上的用戶郵件,那么Email服務器和客戶端都需要進行定制,使它們能通過用戶名來找到用戶屬于的真正服務器,將訪問任務交給這個服務器完成。這種方法的缺點除了所需要的改動較大、系統結構復雜之外,還由于服務器是按用戶進行分割的,不利于分擔負載。其優點也是由于它不通過網絡訪問其他服務器,因此可以采用任意的郵件存儲格式,包括采用強大的cyrus系統來保存郵件和提供服務。


      ◆郵件服務器軟件


      采用什么樣的Email服務器軟件也將最終影響系統的性能,自己做一套Email服務器可能會得不償失,現在有兩個選擇:Sendmail和Qmail。




      標準的Email軟件,例如sendmail,雖然也提供了一些包括aliases等方法,來支持非Unix系統用戶,但是這些能力對于實現這種Email系統是不夠的。為了支持這些Email用戶,必須使用自己的Email服務器軟件。但是由于現有的Email軟件都相當成熟,而且也都是開放源代碼的軟件,所以慣常的做法都是修改原有的Email軟件,如sendmail、qmail等,使其支持特定的Email用戶。完全重寫一個Email服務軟件,從成熟性、穩定性來看并不可取。

      不管從性能上還是安全性上考慮,sendmail并不是理想的選擇,而由于qmail本身就支持Maildir,因此就成為了常用的Email軟件的基礎開發平臺。但是需要注意的是,qmail使用GPL許可進行保護,因此基于qmail進行的任何改動,原則上必須公開源代碼,這對開發商業應用有一定障礙。當然可以通過不改動qmail,而改動相關的系統庫函數,或者采用外掛的方式來繞過這個問題。另一個可選的基礎Email軟件是postfix,其本身就具備與LDAP、MySQL的接口,幾乎不需要改動就能作為郵件系統的一部分。


      ◆Web客戶端


      利用什么樣的腳本來進行Web Email的客戶端編程并無標準,但是如果采用開放資源將會省去很多麻煩。

      

      Web界面Email系統的另一個重要的部分就是Web客戶端,這一部分的功能將如同個人計算機中的OutLook,負責給用戶提供訪問自己郵件的能力。由于Web訪問本身是無連接的,因此必須保證用戶的安全性;旧,安全性可以通過登錄后建立的會話標識、臨時目錄,并在程序中進行驗證來保證。

      Web客戶端必須以統一的方式來訪問服務器,它可以通過直接文件訪問的方式來獲得用戶的郵件,或者通過POP3、IMAP等標準協議來訪問。對于使用網絡文件系統來共享用戶郵件的系統,通過直接文件訪問的方法最為直接和便利,也不需要額外的消耗。而通過POP3、IMAP協議來訪問服務器,其直接的好處就是Web客戶端和Email服務器相分離,提高了系統安全性。

      當前,已經有一些相當成熟的開放源代碼的Web客戶端軟件,其中IMP是采用PHP來實現的,通過IMAP協議訪問服務器的Web郵件客戶端軟件;而WING則是采用Perl來實現的另一個Web客戶端軟件。這些開放源代碼軟件都相當不錯,然而,將這些軟件與自己的系統相集成,還會需要進行一定改動。此外,還應該遵循其許可要求,將改動的代碼對外公開。


      ◆實現負載均衡


      系統的負載均衡將是長期的問題,它決定了該系統的可擴展性。

      

      由于需要提供給大量的用戶進行訪問,因此單臺服務器不能滿足這個需要,而必須要使用多服務器的方式。除了按照功能性進行分割之外,如Web服務器、Email服務器以及文件服務器相分離,還需要對一些資源緊張的服務使用多服務器進行負載均衡。雖然當前一些商業廠家也提出了一些服務器集群的方案,但常用的簡單而有效的方法還是DNS循環解析、Web服務器重定位和NAT負載均衡等幾種。

      DNS循環解析是為同一個名字分配多個IP地址,它用在Yahoo等相當大的站點上,實際效果也相當不錯。而Web服務器重定位則是由Web服務器隨機產生位于不同服務器上的真實頁面URL,使不同的瀏覽器載入不同服務器上的頁面,使用它只能實現Web客戶端的負載均衡。而NAT負載均衡則利用第四層交換機,使同樣的請求轉向不同的服務器,除了昂貴的交換機之外,也有一些軟件能完成NAT功能。本人曾對FreeBSD的natd進行了改動,使其能支持負載均衡,這對于因為交換機價格問題而不得不降低性能要求的使用者來講,也是一種選擇。


      ◆實例分析


      國內有很多Web Email系統,網易、21CN和新浪Email是其中的代表。

      

      當前在國內最流行的Web界面Email系統為網易公司的系統,它是采用qmail作為基本服務器軟件,再加以改動的系統。它采用NFS網絡文件系統作為用戶郵件存儲空間,使用Maildir作為郵件存儲格式,提供多級目錄以支持大量用戶。其Web客戶端為他們自己實現的,通過直接訪問用戶郵件的方式為用戶提供服務。不考慮其軟件的小問題,這種實現方式是非常流行且成熟的方式,大部分免費郵件服務系統都是采用的這種模式。

      另一種方式是盡量利用已有的開放源代碼軟件,一種可行的方案是使用Postfix、OpenLDAP、cyrus和IMP來實現大容量Email系統。其中,主郵件服務器使用Postfix查詢LDAP服務器,決定用戶的真實郵箱地址,然后轉發到真實郵件主機上,該主機通過LDAP查詢確認,將郵件放入cyrus服務器中,而IMP通過登錄cyrus,使用IMAP訪問用戶郵件。當用戶增多,一臺cyrus服務器不夠時,可以將新添加的用戶放置到新增加的服務器上,只需要在LDAP服務器設置相應的屬性就可以了。在這種方式下,由于用戶是嚴格按服務器分割造成了管理等困難之外,這種結構本身較為復雜。然而,如果用戶數量不是很多,就不需要使用多臺cyrus服務器和LDAP服務器,復雜程度就大大降低,比較適合中小型站點使用。

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>