建立大容量Web介面的Email系統

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

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

1. 作業系統和使用者資料庫由於提供Web和Email服務需求穩定性和效能特別高,因此一般都使用Unix作為伺服器的作業系統,例如hotmail使用FreeBSD 和Solaris,國內163等網站也是BSD系列。然而, Unix的標準Email系統也不合適用做這種大容量服務。有的Unix系統,例如目前的版本的Linux,其使用者標識只有16位,因此使用者數量最多隻能有64K,即使Unix系統本身支援32位的使用者標識,考慮到效能因素,單台伺服器支援的使用者數量也不要超過10 萬。

  為了具有支援更多使用者的可擴充性,一般採用多台伺服器同時提供服務,雖然此時仍然可以使用標準Unix使用者作為Email使用者,但考慮到安全性、效能以及可管理性,一般採用非Unix系統使用者來作為Email使用者。而儲存使用者資料通常採用支援網路訪問的資料庫形式,一般常用的有LDAP、標準資料庫、以及Email系統自己實現的使用者資料庫。其中,LDAP由於是提供目錄服務的標準,因此應該為最佳的選擇,其常用的開放原始碼實現為OpenLDAP;而標準資料庫由於實現方便、可擴充性強,其中在Int ernet上最常用的為MySQL;此外,也有使用其他方式的實現。

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

  由於使用者數量巨大,並且也要求能被多台伺服器同時訪問,必須採用儲存空間較大的伺服器或伺服器叢集來儲存,通過光纖通道或者網路檔案系統NFS來共用儲存空間,使得每個使用者的郵件儲存路徑對於每個伺服器都是一致的。光纖通道是一種非常昂貴的解決方案,更為常用的是使用NFS,可以使用專用的NFS伺服器,如NetApp,或者使用帶有RAID能力的PC Unix伺服器。

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

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

3. 郵件伺服器軟體標準的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的介面,幾乎不需要改動就能作為郵件系統的一部分。

4. Web用戶端Web介面Email系統的另一個重要的部分就是Web用戶端,這一部分的功能將如同個人電腦中的OutLook,負責給使用者提供訪問自己郵件的能力。由於Web訪問本身是不需連線的,因此必須保證使用者的安全性。基本上,安全性可以通過登入後建立的會話標識、臨時目錄,並在程式中進行驗證來保證。

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

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

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

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

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

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

相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。