Chinaunix首页 | 论坛 | 博客
  • 博客访问: 470033
  • 博文数量: 711
  • 博客积分: 3000
  • 博客等级: 中校
  • 技术积分: 4200
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-28 14:18
文章分类

全部博文(711)

文章存档

2011年(1)

2008年(710)

我的朋友

分类:

2008-10-29 11:54:15


  作者:尚玉辉
  
  
  一、设计目的
  
    适应多用户、大容量的邮件系统,易扩展,提供mail服务冗余特性。
  
  二、配置环境
  
    我的环境采用了三台PC Server,均采用RedHat6.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 邮件存储主机,qmqpserver,同时是次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以及smtpserver分别位于不同机器。
  
  三、软件
  
    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 followingvalues:
    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的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: href="mailto:johnnys@cn.solution100.com">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: href="mailto:johnnys@i100.com.cn">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: href="mailto:jacky@i100.com.cn">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: href="mailto:denny@i100.com.cn">denny@i100.com.cn
  mailmessagestore: /var/qmail/vuser/denny/
  mailquota: 51200
  uid: denny
  userpassword: hSAMdaZcsdAOI
  
  以上大家可以看到,我把三个用户的邮件分别存到了不同的机器上。如果用户多,可?br>?把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,表示是否启动qmailcluster模式。我们当然要启动了。
    echo 1 > /var/qmail/control/ldapserver
  
  六、Qmail Cluster工作原理
  
    在允许cluster的邮件环境中,每台主机都可以处理该cluster声明的域的邮件;?br>币桓? mail到达主smtpserver的时候,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/pop3server地址(这里是192.168.0.19),
  就可以收到存储在192.168.0.5和192.168.0.2上用户的邮件。
  
  八、有关qmail-qmqpd server
  
    以上实现了邮件的分布式存储,但是随着用户的增加,主smtp/pop3server会成为整个
  系统的瓶颈;而且一旦主smtp/pop3 server down机,整个系统将不再有效。
  
    解决办法是增加qmqpd server。
    现在主smtp/pop3server是192.168.0.19,我环境是把192.168.0.2同时也作为
  qmqpd server;由此,一旦192.168.0.19down机,192.168.0.2仍然可以继续提供
  smtp/pop3服务。
    我简单的采用手工down掉192.168.0.19,而把pop3和smtpserver设置成192.168.0.2
  的方式,以证实此方法的可行性;并且192.168.0.2并不是此域声明的MX记录。
  
  以上需要在两台qmqpdserver的/var/qmail/control目录中,增加qmqpservers文件,
  在其中每行写入一台qmqpd server的ip地址。             :)
  
  九、其他
  
    如果需要webmail功能,可以和sqwebmail进行整合。
    此方案不提供对pop3存储的冗余措施,如果可能,可以采用Raid、NFS或者SAN的?br>饩龇桨浮?  本文只是简单介绍了配置过程,更多的原理性的介绍,大家可以参考我后面给出?br>牧唇印?  
  
  target="_blank">
  target="_blank">
  
  
【责编:admin】
--------------------next---------------------

阅读(266) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~