建一个大容量的webmail系统

    技术2022-05-11  92

    建一个大容量的webmail系统 一、操作系统的选择          建议大家选用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/  关于负载平衡,这牵涉到较多的方面,我在另外的文章中再和大家探讨。如果大家获得成功,欢迎大家给我来信, 报告你们的成功,让我分享你们的成功,我将很乐于看到大家获得成功。如果安装中有问题,欢迎大家和我在论坛里交流,

    最新回复(0)