用戶資料庫,郵件保存,郵件伺服器軟體,Web客戶端,實現負載均衡,實例分析,建議,部署好客戶端,信箱備份策略,帳戶命名規則,信箱簽名制度,用戶信箱空間規劃,信息安全,
用戶資料庫
用戶資料庫
由於提供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;而標準資料庫由於實現方便、可擴展性強,其中在Internet上最常用的為MySQL;此外,也有使用其他方式的實現。
郵件保存
Email系統
由於用戶數量較大,如何保存用戶的郵件就是一個非常重要的問題。傳統Unix使用一個單一目錄來保存所有用戶的郵件,在用戶數量較多時就極大的降低了檔案系統的性能。只有使用多級目錄,每個目錄下的檔案數量有限,才能降低打開檔案時的系統消耗,或者不再使用簡單的檔案來保存郵件,而採用某一種封裝形式。完全採取資料庫形式來保存郵件,由於用戶郵件操作多為檔案操作,且大小變化較大,因此會造成性能和存儲空間上較大的浪費。
由於用戶數量巨大,並且也要求能被多台伺服器同時訪問,必須採用存儲空間較大的伺服器或伺服器集群來保存,通過光纖通道或者網路檔案系統NFS來共享存儲空間,使得每個用戶的郵件存儲路徑對於每個伺服器都是一致的。光纖通道是一種非常昂貴的解決方法,更為常用的是使用NFS,可以使用專用的NFS伺服器,如NetApp,或者使用帶有RAID能力的PC Unix伺服器。
當使用NFS共享存儲空間的時候,一個非常重要的問題必須注意。由於NFS缺乏檔案鎖定機制,因此使用傳統的用戶郵件存儲格式mailbox時,因為所有的郵件都保存在同一個檔案中,因此進行郵件操作就必須加鎖,以保證沒有訪問衝突,這就使得它不適合NFS存儲方式。為了解決這個問題,qmail提出了Maildir存儲方式,每個郵件作為單獨的一個檔案保存在用戶個人的郵件目錄下,就避免了加鎖。因此,常見的免費郵件伺服器,一般都採用Maildir方式來保存用戶的郵件。
如果不打算使用已分享檔案系統的方式來保存用戶的郵件,而打算讓每個伺服器只訪問其自己硬碟存儲空間上的用戶郵件,那么Email伺服器和客戶端都需要進行定製,使它們能通過用戶名來找到用戶屬於的真正伺服器,將訪問任務交給這個伺服器完成。這種方法的缺點除了所需要的改動較大之外,系統結構複雜之外,還由於伺服器是按用戶進行分割的,不利於分擔負載。其優點也是由於它不通過網路訪問其他伺服器,因此可以採用任意的郵件存儲格式,包括採用強大的cyrus系統來保存郵件和提供服務。
郵件伺服器軟體
郵件伺服器
標準的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客戶端,這一部分的功能將如同個人計算機中的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系統為網易公司的系統,它是採用qmail作為基本伺服器軟體,再加以改動的系統。它採用 NFS網路檔案系統作為用戶郵件存儲空間,使用Maildir作為郵件存儲格式,提供多級目錄以支持大量用戶。其Web客戶端為他們自己實現的,通過直接訪問用戶郵件的方式為用戶提供服務。不考慮其軟體的小問題,這種實現方式是非常流行且成熟的方式,大部分免費郵件服務系統都是採用的這種模式。
另一種方式是儘量利用已有的開放原始碼軟體,一種可行的方案是使用Postfix、OpenLDAP、cyrus和IMP來實現大容量Email 系統,其中,主郵件伺服器使用Postfix查詢LDAP伺服器,決定用戶的真實信箱地址,然後轉發到真實郵件主機上,該主機通過LDAP查詢確認,將郵件放入cyrus伺服器中,而IMP通過登錄cyrus,使用IMAP訪問用戶郵件。當用戶增多,一台cyrus伺服器不夠時,可以將新添加的用戶放置到新增加的伺服器上,只需要在LDAP伺服器設定相應的屬性就可以了。在這種方式下,由於用戶是嚴格按伺服器分割造成了管理等困難之外,這種結構本身較為複雜。然而,如果用戶數量不是很多,那么就不需要使用多台cyrus伺服器和LDAP伺服器,複雜程度就大大降低,比較適合中小型站點使用。
建議
企業信箱這個項目雖然比較小,但是,從這個小項目中,卻可以反映出IT 負責人是否具備CIO 應具有的能力。如是否有能力作好需求調研、風險管理、項目規劃等等。為此,對這些未來的CIO,提了六個建議。
部署好客戶端
信箱項目跟其他的ERP 項目不同。信箱伺服器跟客戶端往往是獨立的。信箱伺服器可以採用微軟的Exchange產品,但是,客戶端不一定要採用微軟的產品,可以採用免費的Foxmail等客戶端。而像ERP 這種軟體,往往沒有選擇的餘地。CIO選擇好伺服器之後,也就選定了採用什麼樣的客戶端。
在企業中該採用什麼樣的信箱客戶端呢?最好客戶端能夠統一。也就是公司內部所有員工都採用統一的客戶端。不過,往往這方面很難達成統一的認識。這主要是因為信箱已經日益成為互連網套用中一個必備的軟體。企業用戶在以前都有自己喜歡的客戶端軟體。所以在項目推廣的過程中,就有用戶提出要用自己所熟悉的客戶端。
此時,作為CIO來說,雖然可以通過強制措施統一客戶端,但這顯然會增加來自員工的阻力。這個阻力往往是不必要的。而且,員工通過比較,會對現有的客戶端軟體挑三揀四,反而起到相反的效果。所以,若客戶端無法統一的話,CIO 就需要考慮客戶端與信箱伺服器的兼容問題。有些客戶端雖然可以從伺服器那邊接收郵件,但是,可能會出現一些小問題。如需要進行人為的字型轉換或者附屬檔案不能夠正常顯示等問題。
所以,CIO 在部署Email系統的時候,要考慮採用什麼類型的客戶端軟體。
信箱備份策略
任何套用伺服器,出於安全的考慮,都必須要對套用伺服器中的內容進行備份。信箱伺服器也不例外。作為信箱系統管理員,要根據企業的實際情況確定一個合理的備份策略。
通常情況下,企業郵件來往都比較頻繁,所以從性能的角度考慮,最好採用差異備份與完全備份結合的策略。如在星期六,進行一次完全備份;在其他時間進行一次差異備份。當信箱容積比較大時,這可以減少信箱伺服器備份的時間與空間;同時,也可以把因信箱備份給資料庫造成的不良影響將到最低。
除了合理的備份策略之外,資料庫管理員還需要考慮是否要進行異地備份。筆者是建議在條件允許的情況下,對信箱伺服器進行異地備份。如此的話,在信箱伺服器出現硬體故障的時候,如硬碟損壞時,可以把數據損失降低到最少。同時,也可以及時的恢復信箱伺服器的運行。
帳戶命名規則
當在企業中部署信箱系統的時候,CIO首先應該確定一個帳戶的命名方案。信箱帳戶的命名應該統一。因為員工除了在內部傳送郵件之外,還需要把郵件發給外部的合作夥伴,如供應商與客戶等等。所以一個友好的帳戶名字,也能夠體現一個公司的管理水平。若讓用戶自己無規則的取信箱帳戶名,很顯然看起來會非常的混亂。
所以,建議統一信箱的命名策略。筆者企業每個員工都有一個英文名字。所以採取的命名規則就是“英文名字.姓”這個方式來對用戶的信箱帳戶進行命名。採取這個方式,要注意一點,就是要跟人事部門配合,當他們輸入人事資料的時候,最好能夠保證員工的英文名字沒有相同的。若英文名字相同,則其中一個人必須更改。否則的話,稱呼上容易搞錯;信箱地址中也容易出現問題。
有些企業也有通過名字的簡寫來對信箱帳戶命名。這也是可以的。重要的是對信箱帳戶的命名策略進行統一。不要有很多的版本。
除了對信箱的命名進行統一外,認為,在部署Email系統的時候,需要制定一套書寫的規範。這主要是因為企業員工在書寫郵件的時候,往往會有一些不好的習慣。這會給企業的形象帶來負面的影響。如有些用戶在書寫郵件的時候,不喜歡寫郵件的標題;又或者,不喜歡書寫稱呼等等。這些元素雖然不會對郵件造成致命的影響,但是,給其他人看到這么不規範的郵件,就可以聯繫到員工的素質可能不怎么高。
為此,在採用信箱系統之前,要對員工進行全面的培訓。然後在伺服器上,進行相關的技術限制。如沒有標題的郵件或者沒有稱呼的郵件不能夠傳送。要能夠提示錯誤信息。
信箱簽名制度
信箱不僅是員工之間溝通的一個工具,更加是企業宣傳自身的一個手段。在郵件的尾部添加一個簽名,是企業藉以宣傳自己的一個有效途徑。
在部署Emaile系統的時候,會跟人事部門一起,定義好郵件簽名的格式。如有公司主營產品的簡要介紹、公司的網址、聯繫方式等等。通過這種方式,可以打響企業的知名度。同時,企業跟客戶或者供應商聯繫往往不是一個人。如對於客戶來說,企業銷售人員、質量人員等等可能都要跟客戶打交道,此時,若幾個聯繫人的簽名格式亂七八糟的話,肯定會給客戶留下一個不好的印象。
企業在使用信箱系統之前,要統一簽名的格式。一般系統管理員可以給出一個固定的格式。而用戶只需要修改自己的名字與聯繫方式即可。
用戶信箱空間規劃
雖然說現在硬碟的價格越來越便宜,但是仍然需要對用戶信箱的空間做一個規劃,以防止因為磁碟爆滿而造成的伺服器接收郵件故障。以前在信箱維護中,經常會碰到有些員工把信箱當作檔案備份的工具。把一些重要的檔案,自己發給自己,在信箱伺服器上進行備份。而不是通過企業的檔案備份伺服器進行備份。有些員工還會利用企業的信箱跟同事之間傳送一些歌曲之類的大檔案。因為企業內部信箱比外部信箱的訪問速度要快得多,所以,上傳一些大容量的附屬檔案也就比較容易。
在這種情況下,有必要根據用戶的帳戶對其設定信箱存儲空間。當空間達到一定程度時,如帳戶總存儲空間的80%時,系統就要及時提醒用戶,讓他們去清理油箱。把一些不必要的郵件刪除掉,以釋放信箱空間。
另外還需要對附屬檔案的大小進行限制,特別是一些允許往外傳送郵件的帳戶。因為出於傳輸速度的考慮,網際網路上的信箱系統,往往會對用戶能夠接收的附屬檔案大小作了限制。當超過這個限制後,他們的信箱伺服器就不能夠接收這個附近。所以,若企業信箱系統的附屬檔案容量過大的話,企業員工發給其他人他們就會無法查收附屬檔案。那時,可能反而會影響企業員工跟外部合作夥伴之間的正常聯繫。
所以,CIO 要根據實際情況,來確定附屬檔案的最大容量。當用戶附屬檔案超過這個數量的時候,就會拒絕上傳附屬檔案。以免附屬檔案在傳輸過程中丟失。
信息安全
若企業部署了信箱系統,那無疑就增加了一個員工泄露企業機密信息的渠道。此時,作為企業CIO來說,就要考慮,如何來防止這些不好事情的發生。
如CIO可以考慮對用戶的信箱進行追蹤。有些信箱伺服器支持郵件的自動轉發。此時,就可以利用這個功能,把用戶的郵件自動轉發到一個特定的信箱中。當企業的機密信息被泄露時,就可以查看這個備份的信箱,看看用戶是否有泄露信息的嫌疑。
同時,企業部署信箱系統之後,企業網路安全也會收到一定的威脅。特別是病毒郵件對企業網路帶來的隱患,是非常巨大的。所以,企業在部署Emaile系統之前,最好能夠跟網路安全人員一起,設計一套抵制病毒郵件的安全方案。同時,出於安全的考慮,最好能夠把信箱伺服器跟其他的套用伺服器分開放置。如此,即使信箱伺服器受到攻擊,也不會影響到其他的套用伺服器。
信箱伺服器這個項目雖小,但是五臟具全。CIO在部署這個項目時,要考慮的內容當然不止以上這六個方面。有備無患,對於任何一個信息化項目都適用。總之,CIO在部署這個項目之前,要充分作好需求調研工作。在作好這項基本工作的同時,兼顧上面六個建議,相信可以出色的把這個項目落實下去。