荔园在线

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

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


发信人: lvyou (花落漫天雪落无痕), 信区: Linux
标  题: 建立大容量Web界面的Email系统
发信站: 荔园晨风BBS站 (Sun Oct 14 21:49:13 2001), 转信


建立大容量Web界面的Email系统
2001-10-14 11:01

发布者:netbull 阅读次数:100



最近几年来,基于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服务器,复杂程度就大大降低,比较适合中小型站点使用








来源:中华技术网


--

                                                     ^^
                               ,+ '`^`''+,
                             .'           '.
                            /               \
^^-_-^^-_-^^-_-^^-_-^^-_-^^-_-^^^^-_-^^-_-^^-_-^^-_-^^-_-^^-_-^^^^-_-^^-_- ^^-?

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 202.96.134.135]


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

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