歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

建一個大容量的webmail系統

  一、操作系統的選擇 建議大家選用freebsd或Linux,不要用solaris,solaris的編譯器和GUN的不兼容,而且有很多地方都怪怪的。 DNS也要預先設置好。(MX記錄) 二、必需的軟件 1、qmail (www.qmail.org) 2、qmailldap (www.nrg4u.com) 3、openldap (www.openldap.org) 4、sqwebmail (www.inter7.com/sqwebmail) 5、imap(www.inter7.com/courierimap 可選) 我們全部選用Open Source Certified,軟件是the GPL license.其實大家不要怕是free軟件,比起一些商業軟件,不公布源代碼,售價不菲,漏洞不斷,補丁不停,他們要好的多。比如qmail經過很多人測試,甚至qmail的作者還懸賞$500美圓讓人找漏洞。事實證明qmail是很安全的。比M$的E$應該好的多. 在論壇裡我聽有人說,ldap慢,我不知道怎樣得到這個結果,ldap是專門為讀來設計的,應該比傳統的關系數據庫快一個數量級以上。有人說ldap在一百萬級以上查詢會很慢,我沒有很好的測試環境,不知道具體的結果。但我相信,ldap應付我們一般的應用足以。 三、軟件的安裝 1.安裝openldap. openldap安裝比較容易,建議大家用stable版本。 ( 好象大家對ldap還不是很熟,如果有時間,我再整理一些ldap的資料給大家。) 修改slapd.conf:(主要如下) chemacheck on database ldbm suffix "dc=96333, dc=com" rootdn "cn=Manager, dc=96333, dc=com" rootpw {crypt}xxxxxxxx (或者用明文) 修改slapd.oc.conf:增加objectclass qmailUser; objectclass qmailUser requires objectclass, mail, uid allows mailMessageStore, homeDirectory, userPassWord, mailAlternateAddress, qmailUID, qmailGID, mailQuota, mailHost, mailForwardingAddress, deliveryProgramPath, qmailDotMode, deliveryMode, mailReplyText, accountStatus, 根據需要可以增加birthday,question,answer等屬性。 2.解壓qmail-1.03.tar.gz,安裝qmaildap補丁。 tar zvxf ../ qmail-1.03.tar.gz patch -p1 < qmailldap-... 編輯Makefile文件 LDAPFLAGS=-DQLDAP_CLUSTER # Perhaps you have different ldap libraries, change them here LDAPLIBS=-L/usr/local/lib -lldap -llber # and change the location of the include files here LDAPINCLUDES=-I/usr/local/include # to make the Netscape download progress bar work with qmail-pop3d


# uncomment the next line (allready done) MNW=-DMAKE_NETSCAPE_WORK # to enable the auto-maildir-make feature uncomment the next line MDIRMAKE=-DAUTOMAILDIRMAKE # to enable the auto-homedir-make feature uncomment the next line HDIRMAKE=-DAUTOHOMEDIRMAKE # on most systems we need this to make checkpassword SHADOWLIBS=-lcrypt # to enable the possibility to log and debug imap and pop uncoment the # next line DEBUG=-DDEBUG # WARNING: you need NONE DEBUG auth_* to run with inetd # Just for me, make from time to time a backup BACKUPPATH=/backup/qmail-backup/qmail-ldap.`date "+%Y%m%d-%H%M"`.tar # STOP editing HERE !!! 然後按正常的次序安裝qmail(增加必要的用戶,make setup check ,config-fast your.full.host.name) qmail啟動腳本: env - PATH="/var/qmail/bin:/usr/local/bin" \ qmail-start ./Maildir/ /usr/local/bin/setuidgid qmaill \ /usr/local/bin/multilog t /var/log/qmail & smtp啟動腳本: env - PATH="/var/qmail/bin:/usr/local/bin" \ tcpserver -H -R -l$HOSTNAME -x /etc/tcp.smtp.cdb -c100 \ -uqmailduid -gqmaildgid 0 25 \ /var/qmail/bin/qmail-smtpd 2>&1 > /dev/null & pop3啟動腳本: env - PATH="/var/qmail/bin:/usr/local/bin" \ tcpserver -H -R -l$HOSTNAME -c100 0 110 /var/qmail/bin/qmail-popup \ $HOSTNAME \ /var/qmail/bin/auth_pop /var/qmail/bin/qmail-pop3d Maildir & 3.sqwebmail的安裝。 安裝用--with-authldap 參數即可。禁止其他的模塊安裝。 sqwebmail系統有另外一個選擇,可以安裝成fastcgi(www.fastcgi.com),需要重新編譯apache. fastcgi提供持續連接,不象cgi每次初始化都要重新啟動,浪費系統資源。但sqwebmail作者暗示 我們用authdaemon提供更好的性能,不必用fastcgi. 修改authldaprc文件,與ldap服務器相適應。 LDAP_SERVER 192.168.0.10 LDAP_PORT 389 LDAP_BASEDN dc=96333, dc=com LDAP_BINDDN cn=Manager, dc=96333, dc=com LDAP_BINDPW xxxxxxx LDAP_MAIL mail LDAP_DOMAIN 96333.com LDAP_HOMEDIR mailmessagestore LDAP_FULLNAME cn LDAP_CRYPTPW cryptPassword 如果大家裝過sqwebmail的,知道sqwebmail是個很優秀的free軟件,但他也有一些不太滿意的地方,有些功能 也不夠完善。幸運的是sqwebmail提供全部的源代碼(用c寫的),我們可以方便的修改以適應我們的需求。 不過需要大家有一定的C技能。我在另外的文章中再和大家探討這個問題。 4。 增加郵件用戶 dn: uid=xie, dc=96333, dc=com uid: xie

cn: xie shunhua sn: shunhua objectClass: top objectClass: person objectClass: inetOrgPerson objectClass: qmailUser mail: [email protected] mailHost: mail1.96333.net mailMessageStore: /mail/xie mailQuota: 1000000S,100C qmailUID: 1001 qmailGID: 1001 userPassword: {crypt}b28a87518a 大家要注意,ldapuid,gid要有讀寫用戶郵件目錄的權限。 PHP提供很多ldap函授,大家可以方便應用。 5。修改qmail控制文件 ~control/ldapserver Space separated list of Hostnames or IP addresses of LDAP servers Required Example: ldap.nrg4u.com ~control/ldapbasedn The base DN from where the search in the LDAP tree begins Most times required Default: NULL Example: o=Internet Pipeline, c=CH Note: Referrals are ignored ~control/ldaplogin cn=Manager,dc=96333,dc=com ~control/ldappassword xxxx ~control/ldaplocaldelivery ~control/ldaprebind ~control/ldapcluster ~control/ldapuid 501 ~control/ldapgid 501 大家要注意,ldapuid,gid要有讀寫用戶郵件目錄的權限。 6.分布式處理和負載平衡。 我們可以把pop3、smtp、imap、web分別裝在幾台不同的機器上,用戶的注冊信息保存在後台的ldap服務器上。 用戶的郵件裝在NFS服務器上。 ----- ------ ------ ------- ------ ------ ------ ------ web web pop pop smtp smtp imap imap ------ ------ ------- ------- ------- ------- ------ -------- ------------------------------------------------------------------------ --------- ------ ------ ------ ldap ldap NFS NFS -------- ------- ------- ------- 所有的web、pop、smtp、imap服務器是共有IP地址,ldap、nfs服務器是私有IP地址. 負載平衡通常有DNS輪循,web服務器重定向,NAT等,可以采用ip端口映射把25,110,80分別映射到幾台服務器上, 提供系統的負載均衡。在web服務器上裝上mini qmail,用qmqp把郵件傳遞到中心服務器上。如果不裝mini qmail 可以把發送郵件的連接連接到smtp服務器上,在smtp上也需要裝sqwebmail(sqwebmail調用qmail-inject發信). pop、smtp上裝上正常qmail。 imap imap ------ ------ ------- ------- ------- ------- ------ -------- ------------------------------------------------------------------------ --------- ------ ------ ------ ldap ldap NFS NFS -------- ------- ------- ------- 所有的web、pop、smtp、imap服務器是共有IP地址,ldap、nfs服務器是私有IP地址. 負載平衡通常有DNS輪循,web服務器重定向,NAT等,可以采用ip端口映射把25,110,80分別映射到幾台服務器上, 提供系統的負載均衡。在web服務器上裝上mini qmail,用qmqp把郵件傳遞到中心服務器上。如果不裝mini qmail 可以把發送郵件的連接連接到smtp服務器上,在smtp上也需要裝sqwebmail(sqwebmail調用qmail-inject發信). pop、smtp上裝上正常qmail。 所有的web、pop、smtp、imap服務器是共有IP地址,ldap、nfs服務器是私有IP地址. 負載平衡通常有DNS輪循,web服務器重定向,NAT等,可以采用ip端口映射把25,110,80分別映射到幾台服務器上, 提供系統的負載均衡。在web服務器上裝上mini qmail,用qmqp把郵件傳遞到中心服務器上。如果不裝mini qmail 可以把發送郵件的連接連接到smtp服務器上,在smtp上也需要裝sqwebmail(sqwebmail調用qmail-inject發信). pop、smtp上裝上正常qmail。
Copyright © Linux教程網 All Rights Reserved