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

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

2004/10/20

設計目標

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

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

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

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

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

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

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

2.容易管理、維護。

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

3.增加設備簡單、有效。

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

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


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

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

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

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

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

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


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

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

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

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

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

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

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

2.分布式存儲

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

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

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

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

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


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

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

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


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

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


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

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

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

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

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


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

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

  需要:smtp:133臺,pop:66臺,共計約199臺PC服務器。

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


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

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

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

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

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


功能設計

功能上我們遵循如下設計理念:

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

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

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

1.主要功能:

基本功能:

Smtp,pop3,imap,webmail

增值模塊:

SMSMMSNETFilePhotolargeFile, Schedule,AntiSPAM

AntiVirus, Anti-pronography, …

可選模塊:

語音郵件、視頻郵件、郵件傳真服務

2.功能清單:

系統(tǒng)管理員

域管理員

普通用戶

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

域用戶管理

認證登錄WebMail  

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

郵件廣播

用戶session信息初始化

3.服務器管理:遠程開機、關機、啟動服務、停止服務

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

顯示首頁         

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

域級黑名單

保存圖標位置     

5.過濾服務器管理

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

郵件索引顯示     

6DNS管理

功能服務定制:sms/防病毒等。

郵件移動         

  

郵件排序         

   

顯示頁碼         

   

回復信件         

   

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

   

刪除信件         

   

永久刪除信件     

   

顯示信件原文     

   

顯示郵件內(nèi)容     

   

加入到地址本     

   

加入到拒收列表   

   

保存郵件

   

pop取信

   

文件夾顯示

   

文件夾刪除

   

文件夾添加

   

文件夾重命名

   

查找郵件

   

發(fā)郵件頁面顯示

   

立即發(fā)送郵件

   

定時發(fā)送郵件

   

保存草稿

   

發(fā)送短信郵件

   

添加附件

   

刪除附件

   

個人地址本顯示

   

團體地址本顯示

   

添加個人地址本

   

刪除個人地址本

   

修改個人地址本

   

添加團體地址本

   

刪除團體地址本   

   

修改團體地址本   

   

地址本排序       

   

導出地址本       

   

導入地址本       

   

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

   

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

   

顯示自動回復     

   

修改自動回復     

   

顯示簽名檔       

   

刪除簽名檔       

   

增加簽名檔       

   

修改簽名檔       

   

顯示pop收信設置  

   

pop收信設置修改  

   

pop收信設置增加  

   

pop收信設置刪除  

   

修改密碼          

   

顯示參數(shù)設置     

   

參數(shù)設置修改

   

顯示多風格設置   

   

多風格設置修改   

   

顯示反垃圾級別設置

   

反垃圾級別設置   

   

顯示殺毒狀態(tài)     

   

修改殺毒狀態(tài)     

   

顯示過濾設置     

   

郵件過濾設置添加 

   

郵件過濾設置修改 

   

郵件過濾設置刪除 

   

顯示拒收設置     

   

拒收設置修改     

   

外掛一次認證     

   

session維護進程

3.后端統(tǒng)計

統(tǒng)計類別

統(tǒng)計項目

描述

系統(tǒng)資源

負載情況

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

CPU使用情況

User,system,nice and idel

內(nèi)存

Totoalusedfree

交換分區(qū)

Used ,free,cached,shared

硬盤

Totalused,free, inode

網(wǎng)絡狀況

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

郵件總量統(tǒng)計

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

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

投遞失敗統(tǒng)計

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

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

隔離郵件統(tǒng)計

郵件感染病毒,或者認定為垃圾郵件的

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

短信統(tǒng)計

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

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

4.后端服務器管控功能

功能

描述

服務器節(jié)點遠程管理

添加

向集群中添加一臺服務器

除去

從集群中拿掉一臺服務器

重啟

遠程重啟服務器

關機

遠程關機

服務遠程管理

啟動

遠程啟動某服務器服務進程

停止

遠程停止服務器進程

監(jiān)控、報警

設定監(jiān)控項目,過載報警

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

負載均衡管理

LVSRR-DNS, LDAP

負載均衡遠程調(diào)控

Tomcat集群管理

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

管理webmail服務器

Session服務器管理

集中管理用戶session


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



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

分類信息:     技術(shù)_email_新聞   技術(shù)_email_文摘
轮台县| 大冶市| 台南市| 郧西县| 百色市| 江都市| 万源市| 滦南县| 滦南县| 乌海市| 乌兰浩特市| 丰宁| 蒲城县| 大理市| 余姚市| 文成县| 南安市| 韶关市| 凤山市| 江门市| 通江县| 大港区| 保德县| 华坪县| 岚皋县| 龙川县| 仁怀市| 东方市| 青铜峡市| 布尔津县| 灵寿县| 宜昌市| 德江县| 格尔木市| 尼木县| 遵义市| 邯郸市| 汝城县| 遂平县| 罗源县| 新郑市|