选择显示字体大小

建立大容量web界面的email系统

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

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

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

  由于提供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;而标准数据库由于实现方便、可扩展性强,其中在int e.net上最常用的为mysql;此外,也有使用其他方式的实现。

  2. 邮件的保存

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

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

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

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

  3. 邮件服务器软件

  标准的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的接口,几乎不需要改动就能作为邮件系统的一部分。

  4. web客户端

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

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

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

  5. 实现负载均衡

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

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

  6. 实例分析

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

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


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons