基於LDAP 的Web 郵件服務器的設計與實現

E mail 是Internet 最常用的服務之一。ISP (服務提
供商) 的E mail 系統能否支持數以百萬計的客戶將決定
整個服務的成敗。
大容量郵件性能的決定因素是網絡效率和數據存儲
方式。收取郵件的延時由網絡延時和郵件系統延時兩部分
組成。網絡延時可通過提高網絡層效率來減少; 郵件系統
延時指檢取郵件時, 郵件服務器搜索、認證、郵件存儲服
務器定位和讀取等多步操作帶來的延時。爲了提高網絡效
率, 需提高每一步的效率, 儘量消除瓶頸。在充分採用如
千兆以太網、SAN 高速存儲等硬件技術的基礎上, 改進郵
件系統的存儲方式非常關鍵, 先進的信息存儲技術對於提
高系統響應速度是非常有效的。
隨着需求的增長, 採用關係數據庫存儲方式的郵件系統
已顯得越來越力不從心。採用“表”來實現對數據的管理, 僅
能在用戶量較小的情況下滿足用戶的性能需求, 難以支持
Webmail 系統向大容量、可擴展性發展的要求。同關係數據
庫相比, 目錄服務不但對於大容量的查找操作響應速度非常
快, 並且支持分佈式存儲結構, 容易實現數據的擴展, 能滿足
大容量存儲要求。因此將目錄服務在TCPöIP 上的實現
輕量級目錄訪問協議(L igh tweigh t D irecto ry A ccess
P ro toco l, LDA P) 引入Webmail 系統成爲必然。
1 輕型目錄服務協議
目錄服務技術是以通用的格式和方式實現信息的存
儲和共享。目錄服務的實現方式有多種, 目前趨於統一到
ITU TX1500 系列建議標準。但X1500 要耗費大量計算
資源, 且不支持TCPöIP 協議。於是IETF 下的A S ID 小組
制定了輕量級目錄訪問協議LDA P, 用相當於X1500 標準
10% 的代價完成了其90% 的功能。LDA P 已成爲Internet
上目錄服務的事實標準。但LDA P 不能代替X1500, 他需
要X1500 系列標準的數據以及服務模型的支持。
2 LDAP 模型
LDA P 協議定義了4 個模型, 分別是信息模型、命名
模型、功能模型以及安全模型。
信息模型 描述儲存在LDA P 目錄裏的信息的結構。
LDA P 目錄裏基本單元是目錄項(Ent ry)。目錄項表示諸
如人、部門、服務器等現實世界中的對象(object) , 由包
含該對象信息的屬性(at t ribute) 集組成。每個屬性描述
了該對象的屬性由一個類型( type) 和一個或多個值(value) 來描述。目錄中的任何一個目錄項都
有一個包含必備的屬性和可有可無的屬性的集合。該集合
稱爲目錄方案( schema) , 允許對存儲在目錄中的數據進行
控制和維護。
命名模型 定義瞭如何組織和識別目錄項(Ent ry) ,
即目錄信息庫(D irecto ry Info rmat ion L ibrary, D IL ) 的邏
輯組織結構, 這個邏輯組織結構定義爲目錄信息樹
(D IT)。D IT 是一種逆向樹結構。命名模型也定義瞭如何
訪問目錄項。D IT 中的每一個結點都是一個目錄項, 每個
目錄項在D IT 內是基於其辨識名(D ist inguished N ame,
DN ) 來排放的。DN 是用以識別目錄項的惟一名字, 是由
一系列自底向上遞歸連接其父結點的相關辨識名(RDN )
組成的字符串, 各個RDN 用逗號隔開。組成DN 的每個
RDN 是D IT 上由D IT 的根到這一相關目錄項的各個分
支。每個RDN 都是該目錄項的屬性。通常, 一個RDN 的
形式爲< 屬性名稱> = < 屬性值> 。
功能模型 描述能對儲存在LDA P 目錄裏的信息執
行什麼操作, 他是X1500 目錄抽象服務的一個子集。對目
錄的操作集分爲3 類: 搜索( Interrogat ion ) , 更新
(Update) , 認證和控制(A uthent icat ion and Cont ro l)。認
證和控制允許客戶端認證自己以及控制一個任務的某些
方面, 包括綁定和解綁定、連接和斷開LDA P 服務器、建
立訪問控制權和保護信息等。
安全模型 描述如何保護LDA P 目錄中的信息, 防止未
經許可的訪問。基於綁定操作, 是面向連接的協議, 定義瞭如
何保護目錄中的信息不受侵害。影響安全策略的2 個方面是:
認證過程與訪問控制模型(A ccess Cont ro lModel)。
3 郵件系統各模式比較
311 傳統的集中式CöS 模式的郵件系統
早期電子郵件系統採用共享文件的消息傳遞方式, 郵
件存儲方式爲典型的övaröspoo löm ail 方式。系統以非常消
極的方式爲客戶端提供對共享資源的訪問, 用戶必須登錄
到特定的網絡服務器, 才能訪問共享目錄。
20 世紀90 年代後期, CöS 結構佔據了主導地位, 郵件
存儲方式也發展爲採用關係數據庫, 即U nix userö
M ailbox 方式。與共享文件系統相比, CöS 系統中服務器的
工作要主動得多, 因此被稱爲主動郵件系統。CöS 模式的
郵件系統是基於關係數據庫的集中式系統。郵件系統的所
有部件(如收發模塊、用戶認證模塊、郵件存儲模塊等) 都
運行於同一臺服務器上, 不能夠將不同的功能模塊放在不
同的機器上進行負載分擔。對於用戶認證模塊, 驗證用戶
身份的信息都存放於同一文件中, 在大用戶量的情況下,
隊列效率將會大大降低。郵件存儲模塊使用關係數據庫,
不能將用戶數據庫模塊分割成幾部分分別存儲在幾臺存
儲服務器上, 每個人的郵件是一個文件, 用戶越多郵件文

件就越多, 而在U nix 系統中同一級目錄中的文件超過一
定數量後, 文件系統運轉效率將會大大降低; 另外, 由於
每一個用戶的多封郵件都位於同一個文件中, 所以如果在
用戶取信過程中出現網絡異常, 則很容易引起郵箱的死
鎖。
集中式CöS 模式郵件系統的先天性缺陷使之難以承
受大用戶量的訪問, 因而這類系統通常只適用於支持用戶
量在15 萬以下的系統。Sendmail 系統是此類系統的典範。
312 基於LDA P 協議的郵件系統
採用LDA P 協議的郵件系統也是主動郵件系統, 工作
原理與集中式CöS 模式的郵件系統基本相同, 不同的是他
既支持集中式的也支持分佈式的CöS 模式系統構架, 郵件
存儲方式使用新的useröM aildir 方式。在郵件系統中引入
LDA P 協議的最主要目的是爲了構造能滿足大容量需求
的分佈式郵件系統。
分佈式郵件系統的可以將軟件的不同模塊, 如收發模
塊、用戶認證模塊、郵件存儲模塊、用戶接入模塊等, 分別
運行在不同的機器上, 共同完成整個郵件系統的功能, 實現負
載分擔; 採用目錄方式存儲用戶數據。目錄服務作爲分佈式計
算環境中的一部分, 提供定位和確定系統中用戶和資源的方
法, 系統可以根據需要和用戶的使用模式進行定製。這種結構
所支持的用戶量有比較大的靈活性, 目前採用這種架構的系
統均可以支持到幾千萬以上的用戶量。例如最爲著名的電子
郵件站點Ho tmail, 他採用基於LDA P 協議的多機分佈式並
行操作的方式, 目前其用戶已達3 000 萬。
4 系統設計
由於BöS 結構的靈活性及應用的廣泛性, 我們將
Web 訪問技術與目錄服務相結合, 採用3 層結構模型, 建
立一個基於Web 的目錄服務的郵件系統。
E mail 服務從邏輯上可以劃分爲郵件交換服務、文
件存儲服務、用戶認證服務和郵件存取服務, 本系統由郵
件收發模塊、用戶在線服務模塊和系統服務管理功能模塊
來完成這些服務。通過這些功能模塊, 可實現對LDA P 目
錄的認證、添加、刪除、查找、返回等操作。
411 總體結構
本系統中Web 瀏覽器和Web 服務器之間是BöS 結
構, 而Web 服務器和LDA P 服務器之間則是CöS 結構; 從
整體看可將Web 瀏覽器和Web 服務器整個看作客戶端,
LDA P 服務器作爲相應的服務器端。結構圖如圖1 所示。
(1) 系統管理服務功能模塊
本系統的系統服務管理採用基於Web 的方式。主要
功能有: 郵件服務器的配置、增加用戶, 郵箱容量控制; 查
詢用戶等;
(2) 用戶在線服務功能模塊

5 系統實現
本系統在L inux 平臺上開發, 其開發環境由
OpenLDA P, Apache, PHP 組成。
應用程序主要分爲: class addr_ ldap 的設計、系統管
理服務實現和用戶在線訪問服務的實現。下面以addr_
ldap 設計爲例說明系統的實現。
LDA P 提供了很多C 語言編寫的A P I 函數, PHP 語
言也支持這些函數, 調用他們能簡化程序編寫。採用定義
類的方式, 在類中封裝常用函數(如ac_ start ( ) , ac_ clo se
() , get_ ldap_ data () 等) , 通過調用了各種LDA P A P I 函數
(如ldap_ bind () , ldap_ search ( ) , ldap_ add ( ) 等) 來實現對
LDA P 目錄服務器的訪問。在應用程序中通過聲明該類的
對象來調用這些函數。
< ?
class addr_ ldap
{
  var $ldap_ ho st = " localho st";
  var $ldap_ po rt = 389;
  var $basedn  = "o= test, c= cn";
  var $roo tdn  = "cn= roo t, o= test, c= cn";
  var $roo tpw   = "123456";
  var $userdn  = U SERNAM E;

 var $uid_ dn;
  var $mn_ roo t_ dn;
⋯⋯
ö3 3 3 常用功能函數3 3 3 3 3 3 3 ö
funct ion ac_ start () {   111111  }
ö3 3 3 Email 地址操作函數3 3 3 3 3 3 3 ö
funct ion del_ addr ($uid, $name, $type) { }
ö3 ⋯⋯其餘函數略⋯⋯3 ö
}
? >
6 結 語
本系統利用LDA P 的4 個模型實現了Webmail 系統的
分佈式模型。存儲模塊將用戶基本信息與用戶郵件分開存儲,
LDA P 目錄裏存儲用戶基本信息和郵件實際存儲位置的路
徑, 這樣可以將該模塊用多臺計算機分佈實現, 解決了關係數
據庫存儲郵件系統存在的擴展性差、對分佈式系統支持不夠

的缺點。在索引信息領域LDA P 服務遠優於傳統的關係數據
庫, 因此LDA P 的應用必將更廣泛、更普及。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章