分享
 
 
 

分布式的Qmail邮件系统

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

一. 设计目的

适应多用户、大容量的邮件系统,易扩展,提供mail服务冗余特性。

二. 配置环境

我的测试环境采用了三台PC Server,均采用RedHat 6.2,openldap2.0.7和qmail-1.03 以及qmail-ldap,分别运行smtp/pop3服务,具体配置如下。

192.168.0.19 omni1.i100.com.cn 主smtp/pop3 server,dns MX记录,邮件存储主机,qmqp server

192.168.0.5 cocoon.i100.com.cn LDAP server,邮件存储主机

192.168.0.2 gw2.i100.com.cn 邮件存储主机,qmqp server,同时是次smtp/pop3 server

在192.168.0.19的/data/vuser/目录下,存储johnny的邮件。

在192.168.0.5的/data/vuser/目录下,存储jacky的邮件。

在192.168.0.2的/var/qmail/vuser/目录下,存储denny的邮件。

以上配置在实践中,可以配置成邮件存储和ldap以及smtp server分别位于不同机器。

三. 软件

openldap-2.0.7.tgz

qmail-1.03.tar.gz

qmail-ldap-1.03-20010301.patch

ucspi-tcp-0.84.tar.gz

编译qmail的时候,记得把对cluster的支持编译进去。Edit the Makefile to reflect your setup. You can change the following values: QLDAP-CLUSTER

Compiles the clustering code in. Note: this doesn't mean clustering is on, it just means you _can_ turn on clustering. 缺省qmail是支持cluster结构的。

||||||四. LDAP和qmail的安装

关于LDAP和qmail的安装,在这里,我给出我的LDAP的ldif文件:

dn: dc=i100, dc=com, dc=cn

objectclass: top

objectclass: orgnization

dn: cn=Manager, dc=i100, dc=com, dc=cn

uid: Manager

objectclass: qmailUser

mail: johnnys@cn.solution100.com

dn: cn=johnny, dc=i100, dc=com, dc=cn

cn: johnny

sn: johnny

objectclass: top

objectclass: person

objectclass: inetOrgPerson

objectclass: qmailUser

mail: johnny@i100.com.cn

mailhost: omni1.i100.com.cn

mailalternateaddress: johnnys@i100.com.cn

mailmessagestore: /data/vuser/johnny/

mailquota: 51200

uid: johnny

userpassword: hSAMdaZcsdAOI

dn: cn=jacky, dc=i100, dc=com, dc=cn

cn: jacky

sn: jacky

objectclass: top

objectclass: person

objectclass: inetOrgPerson

objectclass: qmailUser

mail: jacky@i100.com.cn

mailhost: cocoon.i100.com.cn

mailalternateaddress: jacky@i100.com.cn

mailmessagestore: /data/vuser/jacky/

mailquota: 51200

uid: jacky

userpassword: hSAMdaZcsdAOI

dn: cn=denny, dc=i100, dc=com, dc=cn

cn: denny

sn: denny

objectclass: top

objectclass: person

objectclass: inetOrgPerson

objectclass: qmailUser

mail: denny@i100.com.cn

mailhost: gw2.i100.com.cn

mailalternateaddress: denny@i100.com.cn

mailmessagestore: /var/qmail/vuser/denny/

mailquota: 51200

uid: denny

userpassword: hSAMdaZcsdAOI

以上大家可以看到,我把三个用户的邮件分别存到了不同的机器上。如果用户多,可以把a-n和o-z开头的用户分别存储到不同的机器上。

五. 基本系统配置

在三台机器上分别install qmail with qmail-ldap patch.

需要特别配置的是/var/qmail/control下的相关文件。

ldapuid ldapgid 这是可以读写用户邮件目录的系统用户的uid和gid,在不同的机器上,会有不同的配置;确保此用户有读写用户邮件目录的权限。

ldapserver 此文件指定LDAP服务器的ip地址;如果您想ldap有冗余作用,在主LDAP server down了的时候,启用次LDAP server,可以在该文件中指定。

如:ldap1.i100.com.cn:389 ldap2.i100.com.cn:389 :)

ldapserver 此文件内容是0或者1,表示是否启动qmail cluster模式。我们当然要启动了。

echo 1 > /var/qmail/control/ldapserver

六. Qmail Cluster工作原理

在允许cluster的邮件环境中,每台主机都可以处理该cluster声明的域的邮件;当一个mail到达主smtp server的时候,Qmail查询LDAP server中有关该用户的mailhost属性,如果mailhost属性指定的不是此server的/var/qmail/control/me中定义的的主机,此邮件被通过qmqp协议转发到mailhost定义的主机上。

注:所有主机名必须是合法的dns主机名。

七. 详细配置

在每台运行qmail的系统上运行qmail-qmqpd进程,才可实现邮件转发。需要设置tcp.qmqp

文件,此文件中定义可信任的mailhost.

如: 192.168.0.:allow

:deny

然后用tcprules生成tcp.qmqp.cdb文件。

||||||运行 /usr/local/bin/tcpserver -v -x /var/qmail/control/tcp.qmqp.cdb

-u 502 -g 501 0 628 /var/qmail/bin/qmail-qmqpd 2>&1 | /var/qmail/bin/splogger qmqpd &

启动qmail-qmqpd进程,监听在628 port。

在客户端,使用oe将pop3 server设置为主smtp/pop3 server地址(这里是192.168.0.19),就可以收到存储在192.168.0.5和192.168.0.2上用户的邮件。 :)

八. 有关qmail-qmqpd server

以上实现了邮件的分布式存储,但是随着用户的增加,主smtp/pop3 server会成为整个系统的瓶颈;而且一旦主smtp/pop3 server down机,整个系统将不再有效。

解决办法是增加qmqpd server。

现在主smtp/pop3 server是192.168.0.19,我测试环境是把192.168.0.2同时也作为qmqpd server;由此,一旦192.168.0.19 down机,192.168.0.2仍然可以继续提供smtp/pop3服务。

我简单的采用手工down掉192.168.0.19,而把pop3和smtp server设置成192.168.0.2的方式,以证实此方法的可行性;并且192.168.0.2并不是此域声明的MX记录。

以上需要在两台qmqpd server的/var/qmail/control目录中,增加qmqpservers文件,在其中每行写入一台qmqpd server的ip地址。 :)

九. 其他

如果需要webmail功能,可以和sqwebmail进行整合。此方案不提供对pop3存储的冗余措施,如果可能,可以采用Raid、NFS或者SAN的解决方案。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有