分享
 
 
 

建一个大容量的webmail系统

王朝other·作者佚名  2006-11-23
窄屏简体版  字體: |||超大  

一、操作系统的选择

建议大家选用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: opi@96333.net

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。

把用户所在的域加在local上,为了保持qmai-user一致,让qmail-lspawn查询,需把配置文件修改一致,

然后运行qmail-newu.

linux提供的NFS服务器不是很好,为了获取更好的性能,推荐用bsd.

如果大家要用linux,可以参考http://nfs.sourceforge.net/

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有