会员控制台 会员登陆 会员注册 最后更新 高级搜索 会员投稿 退出登陆
设为首页
收藏本站
留言给我
  首页 | 操作系统类 | 程序设计类 | 数据库类 | 应用服务类 | 网络及硬件类 | 其他技术 | GBunix论坛
操作系统类
程序设计类
数据库类
应用服务类
网络及硬件类
其他技术
Unix中文 / 应用服务类 / MailServer / 分布式的 Qmail 邮件系统
分布式的 Qmail 邮件系统
2005-01-06    尚玉辉    www.linuxforum.net    点击:
分布式的 Qmail 邮件系统
一、设计目的

  适应多用户、大容量的邮件系统,易扩展,提供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的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的解决方案。本文只是简单介绍了配置过程,更多的原理性的介绍,大家可以参考我后面给出的链接。
  
  http://www.lifewithqmail.org/ldap/
  http://cr.yp.to/qmail/mini.html

十、声明

  小弟对邮件系统也不是很精通,如果有错误之处,请大家原谅。
  转发此文章,请注明出自www.linuxforum.net和作者。
  johnnys@cn.solution100.com

了解更多详情,参与讨论,请进入GBUNIX论坛

http://www.gbunix.com/bbs/index.php
责任编辑: trotter

相关文章
Linux应用:动手加固OpenSSH服务器 - 12-25 01:59 pm - 点击: 2025
Linux系统中OpenSSH的安装和配置 - 01-10 04:48 pm - 点击: 535
利用 OpenSSH 建立自己的安全通道 - 01-06 03:53 pm - 点击: 516

发表评论 查看评论 加入收藏 Email给朋友 打印本文
给该文章评分
1 2 3 4 5 6 7 8 9 10
平均得分 0, 共 0 人评分
1 2 3 4 5 6 7 8 9 10
发表评论
标题:
内容:
声明:本站资讯均来自互联网,所有文章版权归原作者和出版者所有,如涉及版权问题,请来信告知!
Copyright © 2002-2004 GBunix.com. All rights reserved.