• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

分布式的Qmail邮件系统

发布: 2007-7-02 21:50 | 作者: admin | 来源: | 查看: 8次 | 进入软件测试论坛讨论

领测软件测试网 一. 设计目的 

  适应多用户、大容量的邮件系统,易扩展,提供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: .netOrgPerson 
  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的解决方案。 

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网