国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

在apache 下建立高可擴展的web郵件系統實例

2024-05-04 21:47:35
字體:
來源:轉載
供稿:網友

1.2 要求 

該文檔提到了三種服務器:web服務器,imap服務器和LDAP服務器。這些服務器可以位于獨立的主機上,或若干個獨立的機 器上(例如:23個web服務器,5個LDAP服務器和10個IMAP服務器),或單臺服務器上。同時需要具有在 Linux環境下從源代碼安裝軟件的基本知識

1.3 使用的軟件 

構建該系統需要以下的軟件包: Apache 1.3.6 或以上版本 http://www.apache.org/ PHP 3.0.12 需要將對IMAP和LDAP的支持編譯進來 OpenLDAP 1.2 Cyrus 1.5.19 (注:不要使用1.6) postfix 19990627 pwcheck_ldap patch (針對cyrus 1.5的) IMP (2.0.4, 2.0.10, 和2.1.3-dev進行了測試) UW IMAP (針對 c-client) 注:cyrus 1.6樹使用了一種不同的,被稱作SASL的鑒別方法, pwcheck_ldap補丁不是針對這種鑒別方法設計的。然而,對SASL的LDAP的補丁正在設計中,你可以參觀該主頁來獲得最新信息。

1.4 特別注釋 

該系統有一個部分的可伸縮性不是很好:IMP使用的用來保存會話數據,參 數,及地址簿的SQL服務器。

2. 安裝軟件 2.1 Web服務器的安裝 

在web服務器上,管理員需要安裝下列軟件包:Apache, PHP, postfix, OpenLDAP, UW IMAP, 及IMP. 安裝Apache和PHP是很容易的,具體步驟在PHP軟件包中的安裝導引有詳細的說 明。在安裝PHP時,你需要將對LDAP和IMAP的支持編譯進來。 安裝postfix可以參考隨軟件包的安裝指南,特別要注意文件LDAP_README。

2.2 LDAP服務器的安裝 

需要安裝OpenLDAP軟件 來構建LDAP服務器。你需要決定一個root dn并相應地向LDAP的db中加入設置。

2.3 IMAP服務器的安裝 

在IMAP服務器上,你將需要安裝LDAP, postfix, Cyrus及cyrus的pwcheck_ldap補丁。編譯postfix時需要有加入對ldap的支持。根據軟件安裝文檔安裝Cyrus,但 是需要根據pwcheck_ldap補丁的文檔對pwcheck_ldap.c進行修改。另外需要修改pwcheck_ldap.c來提供ldap服 務器及根dn信息;同樣若在linux服務器上運行IMAP服務器,則需要在在文件pwcheck_ldap.c作如下修正: 增加行: #include <linux/stddef.h> 另外還需要做一些別的語法修改,具體可以在編譯 是發現。 使用下面的命令配置cyrus:
./configure --with-login=unix_pwcheck --with-pwcheck=ldap
后面的編譯及安裝則根據cyrus的文檔;

3. 如何配置服務器協同工作 3.1 LDAP服務器 的配置 

每個在LDAP數據庫教程中的 郵件用戶信息除了其他的希望提供的信息以外需要有下面的內容:(假設你的根dn是o=someorg, c=US):
dn: uid=someuser, o=someorg, c=us 
uid: someuser 
userpassword: somepassword 
maildrop: fulladdress@machine.dom.ain 
mailacceptinggeneralid: someuser 
mailacceptinggeneralid: somealias

同樣,需要選擇一個用戶擁有cyrus管理權限。只有需要在imap服務器上配置cyrus時,才會需要考慮管理問題。另外,最好不要給一個已經 存在的用戶添加管理權限,這樣做可能導致安全問題或者導致該用戶不能查看自己的信件的問題。

3.2 imap服務器的配置 

配置在IMAP服務器上的postfix使用ldap來進行別名匹配。在文檔LDAP_README對這個問題進行 了說明。對于Cyrus,按照軟件包的安裝說明文件進行即可。同樣,不要忘記 激活pwcheck并在imap.conf中增添管理用戶。

3.3 web服務器 

在這一步的設置中,web服務器同樣是作為接收郵件網關的前端。配 置postfix來使用ldap進行別名匹配。從而實現檢查LDAP的maildrop表項并轉發該郵件到maildrop地址,所以在maildrop 中需要全郵件名。 例如,你可以將700,000個用戶分配到各個服務器上,平均每臺服務器10000個用戶。郵件目的地 址是user1@dom.ain的郵件將接入到某臺WEB服務器,而該郵件將根據maildrop屬性被轉發到地址,而發網 user657的郵件將被轉發給user657@mail34。而且,maildrop屬性同時可以被用作轉發地址,如給user302的信 件被轉發給someuser@somewhereelse.com">

例如,你可以將700,000個用戶分配到各個服務器上,平均每臺服務 器10000個用戶。郵件目的地址是user1@dom.ain的郵件將接入到某臺WEB服務器,而該郵件將根據maildrop屬性 被轉發到地址,而發網user657的郵件將被轉發給user657@mail34。而且,maildrop屬性同時可以被用作轉發地 址,如給user302的信件被轉發給someuser@somewhereelse.com。

對IMP的培配置一般將根據軟件文檔,配置結束以后,需要做如下修 改: 在config/defaults.php教程3增添如下內容:

  1. /* LDAP/IMAP Server Default */ $default->LDAP_server = 'ldap.dom.ain'; $default->LDAP_dn = 'o=someorg,c=US'; $default->LDAP_search_field = 'uid'; $default->ldap_choose_server = true;  
  2. to mailbox.php3 apply the following patch: 
  3. Index: mailbox.php3 =================================================================== RCS file: /home/cvs/imp/mailbox.php3,v retrieving revision 2.29 diff -c -r2.29 mailbox.php3 *** mailbox.php3 1999/07/29 07:20:00 2.29 --- mailbox.php3 1999/08/04 18:04:10 *************** *** 29,34 **** --- 29,51 ---- require './lib/mimetypes.lib'; require './config/defaults.php3'; + /************LDAP**************/ + + if ($default->ldap_choose_server) { + $ldapconnect = ldap_connect($default->LDAP_server); + if ($ldapconnect) { + print("YES! "); + $ldapbind = ldap_bind($ldapconnect); + $ldaps教程earch = ldap_search($ldapconnect, $default->LDAP_dn, $default->LDAP_search_field."=".$imapuser, array("maildrop")); + $ldapget = ldap_get_entries($ldapconnect, $ldapsearch); + $ldapspl = explode("@", $ldapget[0]["maildrop"][0]); + $server = $ldapspl[1]; + $port = $default->port; + } + } 
  4. + /**********end ldap************/ + + /* Html styles configuration */ require './config/html.php3'; /* Mailbox configuration */  

全部配置結束以后,將具有一個高可擴展性的web郵件系統。

注:1999年8月,IMP的新版本已經包含了這些補丁的內容,所以如果使 用新版本的話,就不需添加這些內容。

4. Miscellaneous 4.1 Adding Users

這里是一小段向LDAP服務器中增添用戶的代碼,并且同時向cyrus增添一個郵件用戶。這是針對 IMAP服務器設計的,但是你可以修改其適應別的環境。

  1. <?php  
  2.  
  3. $ldapconn = ldap_connect("ldap.dom.ain");  
  4. $machine = "mail01";  
  5. if ($ldapconn)  
  6. {  
  7. $ldhb = ldap_bind($ldapconn"cn=cyrusadmin, o=someorg,c=US","password");  
  8. $dn = "uid="$username .", o=someorg, c=US";  
  9. $info["uid"]=$username;  
  10. $info["userpassword"] = $password;  
  11. $info["objectclass"] = "account";  
  12. $info["maildrop"] = $username ."@" .$machine .".dom.ain";  
  13. $info["mailacceptinggeneralid"] = $username;  
  14. $ldhb = ldap_add($ldapconn$dn$info);  
  15. ldap_close($ldapconn);  
  16. }  
  17. $imapconn = imap_open("{" .$machine .".dom.ain:143}""cyrusadmin","password");  
  18. if ($imapopen)  
  19. {  
  20. imap_createmailbox($imapconn"{" .$machine ."dom.ain:143}user.".$username );  
  21. imap_close($imapconn);  
  22. }  
  23. ?> 
注:由于一個bug的問題,這里使用明文password。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 凤城市| 洪洞县| 青浦区| 波密县| 应用必备| 安阳市| 会东县| 汪清县| 武威市| 贵德县| 陆河县| 江门市| 新营市| 兰西县| 革吉县| 惠东县| 中西区| 和林格尔县| 柘城县| 隆化县| 仪征市| 三河市| 旌德县| 南宫市| 缙云县| 南靖县| 武隆县| 梁河县| 吉木乃县| 蕉岭县| 贵定县| 长子县| 元氏县| 迭部县| 通辽市| 泸定县| 五大连池市| 当涂县| 广元市| 怀远县| 历史|