首頁>>廠商>>短信平臺廠商>>北京春笛

分布式電子郵件系統(tǒng)設(shè)計(jì)

2004/10/20

設(shè)計(jì)目標(biāo)

  郵件系統(tǒng)在當(dāng)今社會,作為一種基礎(chǔ)通訊平臺,已經(jīng)不單純是簡單收發(fā)郵件,而是成為互聯(lián)網(wǎng)各種應(yīng)用的核心,承載越來越重要的應(yīng)用。中國人口眾多,上網(wǎng)人數(shù)逐年劇增,使用郵件也日益頻繁。郵件系統(tǒng)從建成的那一天起,就面臨升級的壓力。如何設(shè)計(jì)一個結(jié)構(gòu)良好的大容量郵件系統(tǒng),對于系統(tǒng)穩(wěn)定性、可靠性,對于日后的升級維護(hù)有著至關(guān)重要的作用。

  春笛公司作為一個在郵件領(lǐng)域默默耕耘的公司,以小用戶量的企業(yè)郵件系統(tǒng)立身,最終希望打造一個堅(jiān)固的、高度可擴(kuò)展的、容易管理維護(hù)的大容量分布式郵件系統(tǒng)。在設(shè)計(jì)時,我們主要考慮如下方面:

1.底層堅(jiān)固、高度穩(wěn)定。

  為保證系統(tǒng)的穩(wěn)定可靠,需要在硬件、操作系統(tǒng)、核心MTA、應(yīng)用層在內(nèi)的每一個環(huán)節(jié)都穩(wěn)定可靠才行。硬件通常選取知名品牌服務(wù)器,穩(wěn)定性、可靠性都有保障,差別不大。

  操作系統(tǒng)選擇Linux或者FreeBSD, 針對郵件系統(tǒng)的特點(diǎn),內(nèi)核需要特殊調(diào)整:如打開文件數(shù)(open files)、stack size 、max user processes等。除了操作系統(tǒng)核心外,系統(tǒng)只加載必須的軟件,屏蔽一切不不要的服務(wù)端口。

  在操作系統(tǒng)之上,處理smtp、pop3請求的MTA的穩(wěn)定性、效率也至關(guān)重要。當(dāng)今世界上使用比較多的是qmail和postfix, 都有分布世界各地的大批用戶。相比較而言,qmail有著更好的模塊化設(shè)計(jì)、更好的安全性,更高的投遞效率、更可靠的隊(duì)列設(shè)計(jì)。Postfix優(yōu)勢在于和sendmail有著很好的兼容性,部署容易,集成程度比較高,也是一個非常不錯的MTA軟件。

  應(yīng)用層我們選取Apache+tomcat。Apache久負(fù)盛名、久經(jīng)考驗(yàn),tomcat背后有SUN支持,最重要的是tomcat5支持應(yīng)用層負(fù)載均衡(Load Balance)。另外,java作為一種面向?qū)ο蟮木幊陶Z言,最能體現(xiàn)軟件工程思想,有一系列的UML設(shè)計(jì)工具、集成開發(fā)環(huán)境、應(yīng)用服務(wù)器可以選擇。很多學(xué)校也開設(shè)JAVA課程,以后JAVA會像c語言那樣普及,變成程序員必備的技能之一。郵件系統(tǒng)應(yīng)用層會根據(jù)用戶的反饋增加信的增值服務(wù)品種,如果基于java開發(fā),很容找到相關(guān)人才。這樣縮短開發(fā)周期、節(jié)省開發(fā)成本、降低維護(hù)難度。Google很多服務(wù)是基于java開發(fā)的。當(dāng)然,java也有執(zhí)行效率低的缺點(diǎn),但隨著硬件速度的提升,單只程序運(yùn)行速度的劣勢很容易被良好的設(shè)計(jì)模式優(yōu)勢取代。

2.容易管理、維護(hù)。

  系統(tǒng)結(jié)構(gòu)復(fù)雜之后,必然會帶來管理維護(hù)上的麻煩。我們的設(shè)計(jì)思想是希望通過統(tǒng)一的一個管理控制界面,讓系統(tǒng)管理員對每臺服務(wù)器的運(yùn)行狀況、負(fù)載情況、流量了如指掌;同時通過一個管控界面,可以遠(yuǎn)程控制服務(wù)器啟動、關(guān)閉,對服務(wù)進(jìn)程遠(yuǎn)程啟動、停止,對流量調(diào)配。當(dāng)出現(xiàn)異常時,系統(tǒng)自動通過短信通知到管理人員的手機(jī)上。

3.增加設(shè)備簡單、有效。

  系統(tǒng)擴(kuò)展性是衡量系統(tǒng)設(shè)計(jì)好壞的一個重要指標(biāo)。好的系統(tǒng)能夠通過簡單添置硬件、軟件做少許配置即可滿足需要。我們設(shè)計(jì)的是讓用戶數(shù)量的增長和郵件服務(wù)器數(shù)量呈線性關(guān)系。由于PC服務(wù)器的硬件成本比較低,以一臺高性能PC服務(wù)器3萬元人民幣計(jì)算,如果作為SMTP服務(wù)器可以支撐15萬用戶,作為POP服務(wù)器可以支撐30萬用戶,作為存儲服務(wù)器,可以支撐3萬用戶。平均每用戶為0.2元、0.1元、1元。

  在保證系統(tǒng)穩(wěn)定可靠的同時,能夠最大地降低成本。降低成本有2個途徑,一是最大限度利用硬件,二是避免使用高端的存儲備份設(shè)備、負(fù)載均衡設(shè)備、四層交換機(jī)等。


4.具有多級權(quán)限管理,支持個人用戶、企業(yè)用戶、運(yùn)營商等。

  大容量郵件系統(tǒng),不僅僅是個人用戶,還有企業(yè)用戶。不同用戶群體的需求是不同的。針對不同用戶群,提供不同的服務(wù)套餐,無疑是市場營銷重要手段。而這,需要有技術(shù)上做保障才行。金笛郵件應(yīng)用層采用java技術(shù),無疑是體現(xiàn)用戶需求的最佳技術(shù)手段。

  作為運(yùn)營商,要有豐富權(quán)限管理體系,使郵件系統(tǒng)的每一個管理環(huán)節(jié)嚴(yán)緊、嚴(yán)密。

5.高度模塊化,模塊之間最小耦合。

  模塊化程度的高低,可以體現(xiàn)的系統(tǒng)的成熟度。充分利用開源寶庫中的免費(fèi)資源,將優(yōu)秀的開源項(xiàng)目經(jīng)過改良、優(yōu)化,會搭建出優(yōu)秀的系統(tǒng)。不贊成完全從底層開發(fā)。
模塊之間通過標(biāo)準(zhǔn)接口通訊,耦合程度盡可能小,這樣,即使出問題也不會影響全局。最重要的是,系統(tǒng)擴(kuò)展性大大增強(qiáng)。如可以隨時將病毒掃描過濾模塊升級,或者將垃圾郵件過濾模塊升級,其它模塊無需做任何改動。

6.提供與其它系統(tǒng)直接的接口:如計(jì)費(fèi)平臺、短信彩信平臺、防毒網(wǎng)關(guān)等。


  作為郵件運(yùn)營,計(jì)費(fèi)模塊很重要。良好的設(shè)計(jì)可以為靈活的計(jì)費(fèi)提供原始數(shù)據(jù)。根據(jù)這些計(jì)費(fèi)數(shù)據(jù),可以制定靈活的促銷手段。

  隨著彩信的普及,郵件系統(tǒng)與彩信會逐漸融合。其它的擴(kuò)展平臺,如防病毒網(wǎng)關(guān)、反垃圾網(wǎng)關(guān)、反黃網(wǎng)關(guān)都可以靈活對接。

7.應(yīng)用層二次開發(fā)、部署簡單方便。

  郵件系統(tǒng)的生命力來自客戶的需求,只有不斷滿足客戶需求,推陳出新,與時俱進(jìn),才會不斷有新的用戶加入。根據(jù)用戶需求進(jìn)行二次開發(fā),這是必不可少的。二次開發(fā)必須簡單,方便。金笛郵件通過統(tǒng)一的二次開發(fā)接口Jindi-Mailet實(shí)現(xiàn)服務(wù)端應(yīng)用的擴(kuò)展。

  郵件系統(tǒng)架構(gòu)上的演化和優(yōu)劣比較大容量郵件系統(tǒng)按照存儲方式不同,大致可以分為2類:

1. 統(tǒng)一存儲
  郵件隊(duì)列和郵件數(shù)據(jù)集中放在存儲設(shè)備上。前端smtp服務(wù)器多臺,POP服務(wù)器多臺,隨機(jī)選擇一臺smtp服務(wù)器或者POP服務(wù)器(這個過程一般采用DNS輪詢方式完成)。選定某臺服務(wù)器后,與該服務(wù)器建立連接,通過認(rèn)證系統(tǒng)確認(rèn)用戶身份后,發(fā)送或者接收郵件數(shù)據(jù)。因?yàn)槭墙y(tǒng)一存儲,數(shù)據(jù)都是放在磁盤陣列上,通過NFS方式掛在每臺服務(wù)器上。不論是通過哪臺功能服務(wù)器,都可以完成郵件收發(fā)。

  用戶對Webmail的請求和smtp/pop3類似,也是通過多臺機(jī)器隨機(jī)選取實(shí)現(xiàn)負(fù)載分布。

2.分布式存儲

  郵件數(shù)據(jù)分布在每一臺服務(wù)器上,每臺服務(wù)器都提供完整的郵件服務(wù):
  smtp/pop3/imap/webmail/數(shù)據(jù)庫。用戶請求過來之后,首先查詢目錄服務(wù)器,驗(yàn)證用戶身份,然后找到對應(yīng)的服務(wù)器,建立連接,收取或者發(fā)送郵件。

  這種方式最大的優(yōu)點(diǎn)是用戶數(shù)量和郵件服務(wù)器數(shù)量可以保持線性增長。每臺服務(wù)器支持10萬郵箱,當(dāng)一臺服務(wù)器用戶已達(dá)這個數(shù)字時,啟用另外一臺?梢酝ㄟ^管理程序在不同服務(wù)器直接遷移用戶。動態(tài)管理服務(wù)器。

  從早期UNIX幾十用戶的簡單郵件系統(tǒng),到現(xiàn)在幾百萬、上千萬郵件系統(tǒng),中間經(jīng)歷很多變化。不妨把這些梳理一下,比較郵件系統(tǒng)各種技術(shù)的優(yōu)劣。

1.一機(jī)一域、一機(jī)多域(虛擬域)
  一機(jī)一域代表用戶是企業(yè)用戶。一臺服務(wù)器作為郵件服務(wù)器。一機(jī)多域象新網(wǎng)、萬網(wǎng),給很多企業(yè)提供郵箱。

  所有的服務(wù),如smtp,pop3,imap都在一臺服務(wù)器上,對方郵件服務(wù)器通過查詢DNS即可唯一鎖定收件方服務(wù)IP,直接投遞過去。


  這種單機(jī)郵件系統(tǒng),由于受cpu、內(nèi)存、硬盤的制約,用戶最多一般不超過10萬用戶。考慮可靠性,一般采用HA,將用戶數(shù)據(jù)存放磁盤陣列上,正常只有一臺服務(wù)器工作,異常時自動切換到另外一臺。

  對于一般的企業(yè)用戶,這種單機(jī)郵件系統(tǒng)已經(jīng)夠用。但對于大型郵件系統(tǒng),這種單機(jī)系統(tǒng)顯然無法滿足。

2.多機(jī)一域,功能分割,集中存儲。
  郵件服務(wù)器smtp、pop3、imap、webmail服務(wù)分布在不同的服務(wù)器上,通過NFS統(tǒng)一訪問同一存儲區(qū)域。


  這種做法,實(shí)現(xiàn)一個簡單功能分布,使每一臺服務(wù)器功能單一,幾臺服務(wù)器各司其職,處理能力大大增強(qiáng)。這種簡單的功能分散,實(shí)現(xiàn)起來比較簡單,只要在不同的服務(wù)器其上部署相關(guān)服務(wù)即可,將存儲服務(wù)器通過NFS mount到每一個服務(wù)器上,然后在DNS中做相關(guān)配置。

  當(dāng)用戶增大到一定數(shù)量,并發(fā)量會比較大,單臺smtp可以到256并發(fā)量,最多不會超過1000并發(fā)量。因此smtp很容易成為瓶頸。


  當(dāng)郵件用戶并發(fā)量大時,smtp很容易成為瓶頸,在系統(tǒng)中出現(xiàn)瓶頸的地方可以多增加幾臺服務(wù)器,然后更新DNS,通過 DNS查詢解析不同的smtp服務(wù)器地址,可以使請求平均分配到每一臺服務(wù)器上。

  現(xiàn)在許多大容量郵件系統(tǒng)都脫胎于此,特點(diǎn)是部署容易,簡單易行。缺點(diǎn)是當(dāng)訪問量增大后,數(shù)據(jù)訪問全部通過NFS,也很容易出現(xiàn)磁盤IO瓶頸。

4.多機(jī)一域,功能分布,存儲分布。
  該系統(tǒng)前端(front-end)是一個郵件交換器和目錄服務(wù)器LDAP,后端是多臺獨(dú)立的存儲服務(wù)器,通過管理中心調(diào)度,將存儲服務(wù)器通過NFS掛在相應(yīng)的smtp服務(wù)器或者pop服務(wù)上。

  在目錄服務(wù)器上,會保存用戶名、密碼、smtpserver、popserver、storeserver等信息,當(dāng)用戶請求過來是,先查詢LDAP,如果是收信,找到該用戶對應(yīng)的smtp, 通過直接路由方式連接smtpserver,發(fā)信;如果是收信,找到對應(yīng)的pop,連接popserver下載郵件。

  該架構(gòu)解決了服務(wù)器處理瓶頸、數(shù)據(jù)存儲IO瓶頸。缺點(diǎn)是主要的任務(wù)分發(fā)通過郵件交換器完成。一但郵件交換器出問題,整個系統(tǒng)都將無法運(yùn)行。


5.多機(jī)一域,雙層負(fù)載均衡,存儲分布。
  為避免出現(xiàn)單點(diǎn)故障,將4改良,增加多臺郵件交換器和LDAP服務(wù)器。郵件交換器通過DNS輪詢實(shí)現(xiàn)負(fù)載均衡,LDAP服務(wù)器做成雙機(jī)熱備,任何一臺有故障,另一臺接替。存儲服務(wù)器通過DRBD實(shí)現(xiàn)兩兩鏡像,避免出現(xiàn)存儲故障。

  這樣一套系統(tǒng),可以支持千萬用戶級。以2000萬用戶為例,4000并發(fā)量測算,按照處理能力:
Smtp:15萬用戶/臺,pop:30萬/臺

  需要:smtp:133臺,pop:66臺,共計(jì)約199臺PC服務(wù)器。

  這個方案的優(yōu)點(diǎn)是沒有瓶頸,可以無限擴(kuò)充,缺點(diǎn)是需要很多存儲服務(wù)器,資源上有些浪費(fèi)。


6.多機(jī)一域,郵件功能服務(wù)器。
  這種方案將以郵件服務(wù)器為單位,形成郵件服務(wù)器陣列。每臺郵件服務(wù)器具有完整的郵件服務(wù)功能:smtp/pop3/imap/webmail等。用戶認(rèn)證信息集中存放于LDAP服務(wù)器,通過LDAP查找用戶所在郵件服務(wù)器。

  系統(tǒng)管理通過集中管控界面可以控制用戶數(shù)據(jù)在服務(wù)器之間進(jìn)行移動、復(fù)制、刪除。郵件服務(wù)器進(jìn)行兩兩互備。

  設(shè)置獨(dú)立的過濾服務(wù)器,主要過濾病毒、垃圾郵件和黃色圖片。過濾服務(wù)器與郵件服務(wù)器之間通過socket通訊,所有處理在內(nèi)存完成,大大加快了處理速度。

該系統(tǒng)有如下特點(diǎn):
  (1)這種方案系統(tǒng)造價比較低。以每臺服務(wù)15萬用戶計(jì)算,100臺服務(wù)器可以承載1500萬用戶。100臺服務(wù)器大約200萬-300萬人民幣左右。
  (2)結(jié)構(gòu)簡單,布置方便,容易維護(hù)。
 。3)用戶容量與服務(wù)器數(shù)量保持線性增長,擴(kuò)容只需要增加服務(wù)器即可。
 。4)帳戶在服務(wù)器直接動態(tài)可調(diào),可遷移。
  (5)沒有瓶頸,應(yīng)付突發(fā)事件的能力強(qiáng)。
 。6)小面積的故障,不會影響整理系統(tǒng)。

  基于以上優(yōu)點(diǎn),我們推薦優(yōu)先考慮此方案。


功能設(shè)計(jì)

功能上我們遵循如下設(shè)計(jì)理念:

  1. 集中管控。
  管理一個大型郵件系統(tǒng),就象管理一臺服務(wù)器那樣簡單。在單一管理界面下,通過web瀏覽器即可監(jiān)控任何環(huán)節(jié),完成大部分操作。

  2.自動化、智能化。
  通過自動裝置,如SMS監(jiān)控系統(tǒng)流量、內(nèi)存、進(jìn)程、磁盤空間等,設(shè)定報警閥值,超過閥值就會自動報警,防范于未然。

  3.最簡化、最優(yōu)化。
  用簡單辦法完成簡單的事情。簡單意味著效率、穩(wěn)定、可靠。

1.主要功能:

基本功能:

Smtp,pop3,imap,webmail

增值模塊:

SMS,MMSNETFile,Photo,largeFile, Schedule,AntiSPAM,

AntiVirus, Anti-pronography, …

可選模塊:

語音郵件、視頻郵件、郵件傳真服務(wù)

2.功能清單:

系統(tǒng)管理員

域管理員

普通用戶

1.統(tǒng)計(jì)、審計(jì)功能:

域用戶管理

認(rèn)證登錄WebMail  

2.監(jiān)控功能:

郵件廣播

用戶session信息初始化

3.服務(wù)器管理:遠(yuǎn)程開機(jī)、關(guān)機(jī)、啟動服務(wù)、停止服務(wù)

域級過濾規(guī)則設(shè)定

顯示首頁         

4.域管理:添加、變更、轉(zhuǎn)移、刪除

域級黑名單

保存圖標(biāo)位置     

5.過濾服務(wù)器管理

用戶郵箱大小、附件大小、郵件大小控制

郵件索引顯示     

6DNS管理

功能服務(wù)定制:sms/防病毒等。

郵件移動         

  

郵件排序         

   

顯示頁碼         

   

回復(fù)信件         

   

轉(zhuǎn)發(fā)信件         

   

刪除信件         

   

永久刪除信件     

   

顯示信件原文     

   

顯示郵件內(nèi)容     

   

加入到地址本     

   

加入到拒收列表   

   

保存郵件

   

pop取信

   

文件夾顯示

   

文件夾刪除

   

文件夾添加

   

文件夾重命名

   

查找郵件

   

發(fā)郵件頁面顯示

   

立即發(fā)送郵件

   

定時發(fā)送郵件

   

保存草稿

   

發(fā)送短信郵件

   

添加附件

   

刪除附件

   

個人地址本顯示

   

團(tuán)體地址本顯示

   

添加個人地址本

   

刪除個人地址本

   

修改個人地址本

   

添加團(tuán)體地址本

   

刪除團(tuán)體地址本   

   

修改團(tuán)體地址本   

   

地址本排序       

   

導(dǎo)出地址本       

   

導(dǎo)入地址本       

   

顯示自動轉(zhuǎn)發(fā)     

   

修改自動轉(zhuǎn)發(fā)     

   

顯示自動回復(fù)     

   

修改自動回復(fù)     

   

顯示簽名檔       

   

刪除簽名檔       

   

增加簽名檔       

   

修改簽名檔       

   

顯示pop收信設(shè)置  

   

pop收信設(shè)置修改  

   

pop收信設(shè)置增加  

   

pop收信設(shè)置刪除  

   

修改密碼          

   

顯示參數(shù)設(shè)置     

   

參數(shù)設(shè)置修改

   

顯示多風(fēng)格設(shè)置   

   

多風(fēng)格設(shè)置修改   

   

顯示反垃圾級別設(shè)置

   

反垃圾級別設(shè)置   

   

顯示殺毒狀態(tài)     

   

修改殺毒狀態(tài)     

   

顯示過濾設(shè)置     

   

郵件過濾設(shè)置添加 

   

郵件過濾設(shè)置修改 

   

郵件過濾設(shè)置刪除 

   

顯示拒收設(shè)置     

   

拒收設(shè)置修改     

   

外掛一次認(rèn)證     

   

session維護(hù)進(jìn)程

3.后端統(tǒng)計(jì)

統(tǒng)計(jì)類別

統(tǒng)計(jì)項(xiàng)目

描述

系統(tǒng)資源

負(fù)載情況

5分鐘采樣一次,自動繪制統(tǒng)計(jì)圖

CPU使用情況

User,system,nice and idel

內(nèi)存

Totoal,used,free

交換分區(qū)

Used ,free,cached,shared

硬盤

Total,used,free, inode

網(wǎng)絡(luò)狀況

收到字節(jié)數(shù),發(fā)送字節(jié)數(shù)

郵件總量統(tǒng)計(jì)

郵件數(shù)量,總流量

統(tǒng)計(jì)每域、每用戶收發(fā)郵件總量和字節(jié)數(shù)。

投遞失敗統(tǒng)計(jì)

統(tǒng)計(jì)投遞失敗的記錄

按照每域、每用戶統(tǒng)計(jì)

隔離郵件統(tǒng)計(jì)

郵件感染病毒,或者認(rèn)定為垃圾郵件的

按照每域、每用戶統(tǒng)計(jì)

短信統(tǒng)計(jì)

短信發(fā)送數(shù)統(tǒng)計(jì)

按照每域、每用戶統(tǒng)計(jì)

4.后端服務(wù)器管控功能

項(xiàng)

功能

描述

服務(wù)器節(jié)點(diǎn)遠(yuǎn)程管理

添加

向集群中添加一臺服務(wù)器

除去

從集群中拿掉一臺服務(wù)器

重啟

遠(yuǎn)程重啟服務(wù)器

關(guān)機(jī)

遠(yuǎn)程關(guān)機(jī)

服務(wù)遠(yuǎn)程管理

啟動

遠(yuǎn)程啟動某服務(wù)器服務(wù)進(jìn)程

停止

遠(yuǎn)程停止服務(wù)器進(jìn)程

監(jiān)控、報警

設(shè)定監(jiān)控項(xiàng)目,過載報警

發(fā)送SMS到管理員手機(jī)

負(fù)載均衡管理

LVSRR-DNS, LDAP

負(fù)載均衡遠(yuǎn)程調(diào)控

Tomcat集群管理

添加節(jié)點(diǎn)、刪除、更新

管理webmail服務(wù)器

Session服務(wù)器管理

集中管理用戶session


北京春笛公司供稿 CTI論壇編輯



相關(guān)鏈接:
北京春笛公司基于linux的內(nèi)外網(wǎng)郵件路由方案 2004-10-21
金笛郵件列表JDMailList V1.0功能介紹 2004-10-21
北京春笛公司彩郵系統(tǒng)運(yùn)營方案建議書 2004-10-20
北京春笛公司內(nèi)外網(wǎng)郵件收發(fā)方案 2004-10-20
金笛短消息系統(tǒng)在稅務(wù)行業(yè)的應(yīng)用 2003-11-11

分類信息:     技術(shù)_email_新聞   技術(shù)_email_文摘
海阳市| 兴和县| 黄龙县| 富蕴县| 娱乐| 邵阳县| 青阳县| 枞阳县| 洞头县| 洞口县| 湘潭县| 长春市| 岑巩县| 上思县| 将乐县| 当雄县| 宝清县| 阿拉善盟| 元阳县| 西乌| 曲阜市| 丰镇市| 乡城县| 江永县| 台州市| 嘉定区| 海兴县| 罗田县| 长治市| 高邑县| 马山县| 江都市| 揭阳市| 道孚县| 阜阳市| 喀喇| 扶风县| 武邑县| 河曲县| 诸暨市| 黔西县|