荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: zzt (好好学习,天天向上), 信区: Linux
标  题: [Chat] 建立大容量Web界面的Email系统(fwd)
发信站: BBS 荔园晨风站 (Wed Feb 16 19:42:21 2000), 转信

【 以下文字转载自 zzt 的信箱 】
【 原文由 zzt.bbs@bbs.netease.com 所发表 】
发信人: SunGang (笨刚), 信区: FreeBSD
标  题: [Chat] 建立大容量Web界面的Email系统(fwd)
发信站: 网易 BBS (Mon Feb 14 09:08:42 2000), 转信

                建立大容量Web界面的Email系统
                                                摘自王波主页

最近几年来,基于Web的免费Email系统非常流行,当前,几个著名的免费Email网站基
本上已经成为大多数人的选择,建立单纯提供免费Email服务的站点不再像以前那样受
到热烈欢迎,但是提供Web界面的Email服务已经成为了一个商业站点为其注册成员提供
的基本服务之一。

一个Email系统可以分为服务器端和客户端,Web界面的Email系统则是将Email客户放在
了Web服务器端,因此Email系统所需要实现的是一个Web界面的Email客户。然而,由于
这个Email系统要求用户数量较大,因此对于Email服务器也有特定的要求。


a. 操作系统和用户数据库

由于提供Web和Email服务要求稳定性和性能特别高,因此一般都使用Unix作为服务器的
操作系统,例如hotmail使用FreeBSD和Solaris,国内163等站点也是BSD系列。然而,
Unix的标准Email系统也不合适用做这种大容量服务。有的Unix系统,例如当前版本的
Linux,其用户标识只有16位,因此用户数量最多只能有64K,即使Unix系统本身支持32
位的用户标识,考虑到性能因素,单台服务器支持的用户数量也不要超过10万。

为了具有支持更多用户的可扩展性,一般采用多台服务器同时提供服务,虽然此时仍然
可以使用标准Unix用户作为Email用户,但考虑到安全性、性能以及可管理性,一般采用
非Unix系统用户来作为Email用户。而保存用户数据通常采用支持网络访问的数据库形
式,一般常用的有LDAP、标准
数据库、以及Email系统自己实现的用户数据库。其中,LDAP由于是提供目录服务的标
准,因此应该为最佳的选择,其常用的开放源代码实现为OpenLDAP;而标准数据库由于
实现方便、可扩展性强,其中在Internet上最常用的为MySQL;此外,也有使用其他方式
的实现。


b. 邮件的保存

由于用户数量较大,如何保存用户的邮件就是一个非常重要的问题。传统Unix使用一个
单一目录来保存所有用户的邮件,在用户数量较多时就极大的降低了文件系统的性能。
只有使用多级目录,每个目录下的文件数量有限,才能降低打开文件时的系统消耗,或
者不再使用简单的文件来保存
邮件,而采用某一种封装形式。完全采取数据库形式来保存邮件,由于用户邮件操作多
为文件操作,且大小变化较大,因此会造成性能和存储空间上较大的浪费。

由于用户数量巨大,并且也要求能被多台服务器同时访问,必须采用存储空间较大的服
务器或服务器集群来保存,通过光纤通道或者网络文件系统NFS来共享存储空间,使得每
个用户的邮件存储路径对于每个服务器都是一致的。光纤通道是一种非常昂贵的解决方
法,更为常用的是使用NFS,
可以使用专用的NFS服务器,如NetApp,或者使用带有RAID能力的PC Unix服务器。

当使用NFS共享存储空间的时候,一个非常重要的问题必须注意。由于NFS缺乏文件锁定
机制,因此使用传统的用户邮件存储格式mailbox时,因为所有的邮件都保存在同一个文
件中,因此进行邮件操作就必须加锁,以保证没有访问冲突,这就使得它不适合NFS存储
方式。为了解决这个问题,
qmail提出了Maildir存储方式,每个邮件作为单独的一个文件保存在用户个人的邮件目
录下,就避免了加锁。因此,常见的免费邮件服务器,一般都采用Maildir方式来保存用
户的邮件。

如果不打算使用共享文件系统的方式来保存用户的邮件,而打算让每个服务器只访问其
自己硬盘存储空间上的用户邮件,那么Email服务器和客户端都需要进行定制,使它们能
通过用户名来找到用户属于的真正服务器,将访问任务交给这个服务器完成。这种方法
的缺点除了所需要的改动较大之外,系统结构复杂之外,还由于服务器是按用户进
行分割的,不利于分担负载。其优点也是由于它不通过网络访问其他服务器,因此可以
采用任意的邮件存储格式,包括采用强大的cyrus系统来保存邮件和提供服务。


c. 邮件服务器软件

标准的Email软件,例如sendmail,虽然也提供了一些包括aliases等方法,来支持非
Unix系统用户,但是这些能力对于实现这种Email系统是不够的。为了支持这些Email
用户,必须使用自己的Email服务器软件。一般由于现有的Email软件都相当成熟,而
且也都是开放源代码的软件,因此一般都是改动原有的Email软件,如
sendmail、qmail等,使其支持特定的Email用户。完全重写一个Email服务软件,从成
熟性、稳定性来看并不可取。

不管从性能上,安全性上考虑,sendmail并不是理想的选择,而且由于qmail本身就支
持Maildir,因此就成为了常用的Email软件的基础开发平台。然而需要注意的是,qmail
使用GPL许可进行保护,因此基于qmail进行的任何改动,原则上必须公开源代码,这
对开发商业系统有一定障碍。当然可以通过不改动qmail,而改动相关的系统库函数,
或者采用外挂的方式来绕过这个问题。另一个可选的基础Email软件是postfix,其本身
就具备与LDAP、MySQL的接口,几乎不需要改动就能作为邮件系统的一部分。


d. Web客户端

Web界面Email系统的另一个重要的部分就是Web客户端,这一部分的功能将如同个人计
算机中的OutLook,负责给用户提供访问自己邮件的能力。由于Web访问本身是无连接
的,因此必须保证用户的安全性。基本上,安全性可以通过登录后建立的会话标识、临
时目录,并在程序中进行验证来保证。

Web客户端必须以统一的方式来访问服务器,可以通过直接文件访问的方式来获得用户的
邮件,或者通过POP3、IMAP等标准协议来访问。对于使用网络文件系统来共享用户邮件
的系统,通过直接文件访问的方法最为直接和便利,也不需要额外的消耗。而通过POP3、
IMAP协议来访问服务器,其直接的好处就是Web客户端和Email服务器相分离,提高了系
统安全性。

当前,已经有一些相当成熟的开放源代码的Web客户端软件,其中IMP是采用PHP来实现
的,通过IMAP协议访问服务器的Web邮件客户端软件。而WING则是采用Perl来实现的另
一个Web客户端软件。这些开放源代码软件都相当不错,然而,将这些软件与自己的系
统相集成,还会需要进行一定改动。此外,还应该遵循其许可要求,将改动的代码对
外公开。


e. 实现负载均衡

由于需要提供给大量的用户进行访问,因此单台服务器不能满足这个需要,而必须要
使用多服务器的方式。除了按照功能性进行分割之外,如Web服务器、Email服务器以
及文件服务器相分离,还需要对一些资源紧张的服务使用多服务器进行负载均衡。虽
然当前一些商业厂家也提出了一些服务器集群的方案,但常用的简单而有效的方法还
是DNS循环解析,Web服务器重定位和NAT负载均衡等几种。

DNS循环解析是为同一个名字分配多个IP地址,它用在Yahoo等相当大的站点上,实际
效果也相当不错。而Web服务器重定位则是由Web服务器随机产生位于不同服务器上的
真实页面URL,使不同的浏览器载入不同服务器上的页面,使用它只能实现Web客户端
的负载均衡。而NAT负载均衡则利用第四层交换机,使同样的请求转向不同的服务器,
除了昂贵的交换机之外,也有一些软件能完成NAT功能,我曾对FreeBSD的natd进行了
改动,使其能支持负载均衡,对于因为交换机价格问题而不得不降低性能要求的使用
者来讲,也是一种选择。


f. 实例分析

当前在国内最流行的Web界面Email系统为网易公司的系统,它是采用qmail作为基本
服务器软件,再加以改动的系统。它采用NFS网络文件系统作为用户邮件存储空间,
使用Maildir作为邮件存储格式,提供多级目录以支持大量用户。其Web客户端为他
们自己实现的,通过直接访问用户邮件的方式为用户提供服务。不考虑其软件的小
问题,这种实现方式是非常流行且成熟的方式,大部分免费邮件服务系统都是采用
的这种模式。

另一种方式是尽量利用已有的开放源代码软件,一种可行的方案是使用Postfix、
OpenLDAP、cyrus和IMP来实现大容量Email系统,其中,主邮件服务器使用Postfix
查询LDAP服务器,决定用户的真实邮箱地址,然后转发到真实邮件主机上,该主机
通过LDAP查询确认,将邮件放入cyrus服务器中,而IMP通过登录cyrus,使用IMAP访
问用户邮件。当用户增多,一台cyrus服务器不够时,可以将新添加的用户放置到新
增加的服务器上,只需要在LDAP服务器设置相应的属性就可以了。在这种方式下,由
于用户是严格按服务器分割造成了管理等困难之外,这种结构本身较为复杂。然
而,如果用户数量不是很多,那么就不需要使用多台cyrus服务器和LDAP服务器,复
杂程度就大大降低,比较适合中小型站点使用。

--
   笨笨的憨头
         _________________________________
          # whois sungang@usa.net
          # finger sungang@pconline.com.cn

※ 来源:.网易 BBS bbs.netease.com.[FROM: 202.96.159.236]
--
※ 转寄:.网易 BBS bbs.netease.com.[FROM: 210.39.3.50]
.
--
※ 转载:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.1.11]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店