Linux 版 (精华区)

发信人: Zinux (Linux技工), 信区: Linux
标  题: 建一个大容量的webmail系统
发信站: 哈工大紫丁香 (2001年06月11日10:38:40 星期一), 站内信件


推荐:tallboy   发表日期:2001年6月11日   阅读次数:43
------------------------------------------------------------------------
--------
 
一、操作系统的选择 
   
  
建议大家选用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/ 

关于负载平衡,这牵涉到较多的方面,我在另外的文章中再和大家探讨。如果大家
获得成功,欢迎大家给我来信, 
报告你们的成功,让我分享你们的成功,我将很乐于看到大家获得成功。如果安装
中有问题,欢迎大家和我在论坛里交流, 
或者直接发信给我(xie@96333.net).我会尽量回复大家的信。 

原作者:谢顺华  
来源:中国Linux论坛   

--

  puke! 
  技工而已

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.239.152]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.361毫秒