4. Web客戶(hù)端
Web界面Email系統(tǒng)的另一個(gè)重要的部分就是Web客戶(hù)端,這一部分的功能將如同個(gè)人計(jì)算機(jī)中的OutLook,負(fù)責(zé)給用戶(hù)提供訪問(wèn)自己郵件的能力。由于Web訪問(wèn)本身是無(wú)連接的,因此必須保證用戶(hù)的安全性?;旧?,安全性可以通過(guò)登錄后建立的會(huì)話(huà)標(biāo)識(shí)、臨時(shí)目錄,并在程序中進(jìn)行驗(yàn)證來(lái)保證。
Web客戶(hù)端必須以統(tǒng)一的方式來(lái)訪問(wèn)服務(wù)器,可以通過(guò)直接文件訪問(wèn)的方式來(lái)獲得用戶(hù)的郵件,或者通過(guò)POP3、IMAP等標(biāo)準(zhǔn)協(xié)議來(lái)訪問(wèn)。對(duì)于使用網(wǎng)絡(luò)文件系統(tǒng)來(lái)共享用戶(hù)郵件的系統(tǒng),通過(guò)直接文件訪問(wèn)的方法最為直接和便利,也不需要額外的消耗。而通過(guò)POP3、IMAP協(xié)議來(lái)訪問(wèn)服務(wù)器,其直接的好處就是Web客戶(hù)端和Email服務(wù)器相分離,提高了系統(tǒng)安全性。
當(dāng)前,已經(jīng)有一些相當(dāng)成熟的開(kāi)放源代碼的Web客戶(hù)端軟件,其中IMP是采用PHP來(lái)實(shí)現(xiàn)的,通過(guò)IMAP協(xié)議訪問(wèn)服務(wù)器的Web郵件客戶(hù)端軟件。而WING則是采用Perl來(lái)實(shí)現(xiàn)的另一個(gè)Web客戶(hù)端軟件。這些開(kāi)放源代碼軟件都相當(dāng)不錯(cuò),然而,將這些軟件與自己的系統(tǒng)相集成,還會(huì)需要進(jìn)行一定改動(dòng)。此外,還應(yīng)該遵循其許可要求,將改動(dòng)的代碼對(duì)外公開(kāi)。
5. 實(shí)現(xiàn)負(fù)載均衡
由于需要提供給大量的用戶(hù)進(jìn)行訪問(wèn),因此單臺(tái)服務(wù)器不能滿(mǎn)足這個(gè)需要,而必須要使用多服務(wù)器的方式。除了按照功能性進(jìn)行分割之外,如Web服務(wù)器、Email服務(wù)器以及文件服務(wù)器相分離,還需要對(duì)一些資源緊張的服務(wù)使用多服務(wù)器進(jìn)行負(fù)載均衡。雖然當(dāng)前一些商業(yè)廠家也提出了一些服務(wù)器集群的方案,但常用的簡(jiǎn)單而有效的方法還是DNS循環(huán)解析,Web服務(wù)器重定位和NAT負(fù)載均衡等幾種。
DNS循環(huán)解析是為同一個(gè)名字分配多個(gè)IP地址,它用在Yahoo等相當(dāng)大的站點(diǎn)上,實(shí)際效果也相當(dāng)不錯(cuò)。而Web服務(wù)器重定位則是由Web服務(wù)器隨機(jī)產(chǎn)生位于不同服務(wù)器上的真實(shí)頁(yè)面URL,使不同的瀏覽器載入不同服務(wù)器上的頁(yè)面,使用它只能實(shí)現(xiàn)Web客戶(hù)端的負(fù)載均衡。而NAT負(fù)載均衡則利用第四層交換機(jī),使同樣的請(qǐng)求轉(zhuǎn)向不同的服務(wù)器,除了昂貴的交換機(jī)之外,也有一些軟件能完成NAT功能,我曾對(duì)FreeBSD的natd進(jìn)行了改動(dòng),使其能支持負(fù)載均衡,對(duì)于因?yàn)榻粨Q機(jī)價(jià)格問(wèn)題而不得不降低性能要求的使用者來(lái)講,也是一種選擇。
6. 實(shí)例分析
當(dāng)前在國(guó)內(nèi)最流行的Web界面Email系統(tǒng)為網(wǎng)易公司的系統(tǒng),它是采用qmail作為基本服務(wù)器軟件,再加以改動(dòng)的系統(tǒng)。它采用 NFS網(wǎng)絡(luò)文件系統(tǒng)作為用戶(hù)郵件存儲(chǔ)空間,使用Maildir作為郵件存儲(chǔ)格式,提供多級(jí)目錄以支持大量用戶(hù)。其Web客戶(hù)端為他們自己實(shí)現(xiàn)的,通過(guò)直接訪問(wèn)用戶(hù)郵件的方式為用戶(hù)提供服務(wù)。不考慮其軟件的小問(wèn)題,這種實(shí)現(xiàn)方式是非常流行且成熟的方式,大部分免費(fèi)郵件服務(wù)系統(tǒng)都是采用的這種模式。
另一種方式是盡量利用已有的開(kāi)放源代碼軟件,一種可行的方案是使用Postfix、OpenLDAP、cyrus和IMP來(lái)實(shí)現(xiàn)大容量Email 系統(tǒng),其中,主郵件服務(wù)器使用Postfix查詢(xún)LDAP服務(wù)器,決定用戶(hù)的真實(shí)郵箱地址,然后轉(zhuǎn)發(fā)到真實(shí)郵件主機(jī)上,該主機(jī)通過(guò)LDAP查詢(xún)確認(rèn),將郵件放入cyrus服務(wù)器中,而IMP通過(guò)登錄cyrus,使用IMAP訪問(wèn)用戶(hù)郵件。當(dāng)用戶(hù)增多,一臺(tái)cyrus服務(wù)器不夠時(shí),可以將新添加的用戶(hù)放置到新增加的服務(wù)器上,只需要在LDAP服務(wù)器設(shè)置相應(yīng)的屬性就可以了。在這種方式下,由于用戶(hù)是嚴(yán)格按服務(wù)器分割造成了管理等困難之外,這種結(jié)構(gòu)本身較為復(fù)雜。然而,如果用戶(hù)數(shù)量不是很多,那么就不需要使用多臺(tái)cyrus服務(wù)器和LDAP服務(wù)器,復(fù)雜程度就大大降低,比較適合中小型站點(diǎn)使用。