账号:
密码:
最新动态
产业快讯
CTIMES / 文章 /
能够处理大量邮件的自由软件 – Open WebMail
 

【作者: 董仲愷】2004年01月15日 星期四

浏览人次:【4662】

自2000年9月开始,成功大学电机系分布式系统实验室以NeoMail 1.14为基础开始发展Open WebMail,到现在差不多有三年的时间;目前这套系统已支持三十多国语言,在全世界有20个正式Mirror站台。由于其功能相当完整,许多国内外的各个机构、公司及学校都在使用,Open WebMail的官方网址是http://openwebmail.org。


目前Open WebMail的Server站台架在美国Spring Link骨干上的机房,由Daniel Pentecost及他的公司Norvasen与Pentecost Inc.完全免费提供,而整个网站的运行与维护则是由Thomas Chung在负责。基于Open WebMail是一个建立在开放原始码底下的程序,所以在开发的过程中,受到许多来自世界各地朋友的帮助, 让人感到有世界村及天涯若比邻的感觉。


至于http://turtle.ee.ncku.edu.tw/openwebmail则是程序的发展中心,所有最新的程序代码都是在这里测试完后才开始对外公布,然后再复制(Mirror)到官方站台及各地的Mirror Site。


Open WebMail的主要功能与特点

Open WebMail 主要功能分成电子邮件、网络行事历和网络硬盘三大部分。


电子邮件

Open WebMail提供完整的MIME邮件编写能力,并支持通讯簿、外部POP3邮件抓取、邮件规则、垃圾信过滤功能、全文检索、拼字检查,自动回复、多国语言,及简繁互换等功能。


网络行事历

透过网络行事历,用户可以方便地安排自己的行程,而系统会在事件到达之前,寄一封信到WebMail中提醒用户,或是将通知送往用户事先指定的Email Address,达到类似秘书提醒的功能


网络硬盘

网络硬盘则可作为用户在网络世界中的个人资料中心。除了可让邮件中的附件与网络硬盘相互复制外,Open WebMail的网络硬盘提供了各项完整的功能,包括目录/档案的操作,各类压缩文件案管理与及缩图建立等。


经由这三个主要组件的密切配合,Open WebMail提供给用户一个方便的作业环境,让用户能够随时随地透过网络管理,取得所需要的信息或数据。


Open WebMail的分类技术介绍

目前的WebMail软件依照存取信件匣档案的方式来作划分,主要可分为经由POP3/IMAP server存取,以及直接存取信件匣档案等两种存取方式。


《图一 经由 POP3/IMAP server 存取邮件》
《图一 经由 POP3/IMAP server 存取邮件》

如(图一)所示,在寄信方面,WebMail程序以SMTP Protocol和Mail Server 上的Transport Agent(Sendmail)沟通,并将信件经由TA送往Internet。而在信件匣的处理上,则是透过POP3或是IMAP4 Server两个机制来进行存取的动作。透过POP3/IMAP4 Server存取信件匣主要的好处,是在于提供WebMail服务的Server可以和Mail Server在不同部机器上执行。因此在已有的Mail Server,额外加上WebMail的服务功能时,就不必担心会影响到已有的Mail Server。当然(图一)Web Server所用的Http Server和WebMail,也都可以和Mail server安装在同一部机器里;不过当Mail Server Loading很重时,让Web server与Mail Server两者分开,可以有分散负载,即负载平衡的好处。


另一个好处是WebMail的开发人员不必去担心信件匣存取的一些细节问题,例如不用考虑信件匣Owner档案权限的问题,因为已由POP3/IMAP4 Server处理掉了;同时WebMail在设计上可以与信件匣的数据格式无关。只要是POP3/IMAP4 看得懂的格式,都可以为WebMail所用。所以有相当多的WebMail软件,如 SquirrelMail、Horde/IMP、TWIG都是采取此种设计。


但是透过POP3/IMAP4 Server存取信件匣也有一些缺点,首先是效率的问题;由于是透过POP3/IMAP4来存取信件匣,WebMail程序本身并无法将信件匣作一些进阶的数据管理或索引,因此当信件匣内信件数目太多时,WebMail必须透过POP3/IMAP4来进行大量数据的传输,如此一来,会导致速度变慢(试想信件匣内有5000封信件,用户分别要求以日期、作者、标题、大小等条件进行排序的情形)。


其次是功能上的限制,由于POP3/IMAP Server主要提供对信件匣里的信件基本操作,所以如果WebMail要提供Mail以外的一些功能就较不容易,如自动回信、行事历和网络驱动器等等。


《图二 直接存取信件匣档案》
《图二 直接存取信件匣档案》

如(图二)所示,我们可以发现寄信方面还是需要透过SMTP Protocol经由Transport Agent将信件送往Internet,但是在信件匣处理上却改成WebMail程序直接存取用户信件匣,不需要再透过POP3/IMAP4 Server。


直接存取用户信件匣的主要好处,是因为WebMail直接处理文件系统的数据, 程序可以针对信件匣内信件的一些数据字段进行索引或快取,并加快信件匣的访问速度。因此即使在信件匣内有着大量的信件时,还是能够维持不错的效能;并且也可以视需要而定,将信件存其它的Filesystem中。


但是如要直接存取本身的档案,WebMail需要了解所处理的信件匣格式细节,因此要支持多种格式会较为麻烦;同时为了处理信件匣属于不同拥有者所造成的档案权限限制,WebMail本身需要以Setuid Root的身分执行,因此WebMail程序本身的设计需要特别小心,以免造成系统安全上的漏洞。


采取这种设计方式的WebMail包括SqWebMail、NeoMail和Open WebMail等三种。


Open WebMail架构介绍

《图三 运作概观》
《图三 运作概观》

Open WebMail是属于直接存取信件匣档案的WebMail,如(图三)所示,Open WebMail除了可直接存取Mail Server上的信件匣外,还可以透过POP3通讯协议将其他Mail Server上的信件抓回来。让用户在Open WebMail中可以同时处理多个信箱的信件。


Open WebMail 中的模块大致分成三个部分,最上层的是CGI程序,直接面对 User Request;中间的部分为HTML信件相关处理、邮件过滤和抓取外部 POP3 信件的相关程序;最底层则为其他基本模块,其中maildb.pl所包含的主要有邮件索引存取,及邮件分析(建立mime tree)的部分。


提高执行效率的机制

一台WebMail Server往往需要面对大量的用户同时存取,因此如何提高 WebMail系统的执行效率就变得相当重要,以下我们列出一些设计上与效率有关的部分:


使用DBM加速信件匣存取

Open WebMail在设计上,大量地使用DBM数据库来索引信件匣内的数据,因此即使在面对信件匣内大量信件的状况下,仍然能够保持良好的反应速度。


透过索引存取信件首先碰到的问题在于如何维持索引与数据同步动作,因为信件匣可能随时被Open WebMail以外的程序所改动。研发单位所采用的方式是将信件匣的大小和档案修改时间存一份纪录在DBM的数据库中,如此一来,一旦信件匣有被更动过,只要比对DBM中的纪录就知道了。然而重建DBM索引是一个很花时间的动作,所以研发单位使用了一些技巧来加快这个动作。


《图四 信件更动示意图》
《图四 信件更动示意图》

(图四)是一个信件匣经过变动后,其中的信件所可能发生的4种情形。由于通常只有少部分的信件被更改(如 4,10),所以大部分的信件的大小都不会变动(1,2,3,8,9)。Open WebMail在重建索引时,每碰到一封信件会先依据旧的索引纪录,直接跳到信件结尾看看是否正确。如果能发现结尾标记,表示这封信件没被改过,就可以直接将旧有纪录复制到新的DBM 中。这么一来就省下逐行读入分析这封信所花的时间。


让程序常驻于内存中执行

每当有用户的Request进到 Httpd,Httpd都要呼叫执行Open Webmail中所对应的程序,以Perl CGI的角度来看,所需要的动作有:


  • ●执行Perl Interpreter,


  • ●Perl Interpreter由硬盘上载Open Webmail程序代码与相关连的模块到内存中,


  • ●Perl Interpreter将 Open Webmail Source Code编译成Perl Byte Code,


  • ●Perl Interpreter加载Byte Code,初始化环境(Initialize Memory、Global Variable)


  • ●Byte Code 执行



由于Open Webmail的程序代码相当庞大,步骤2、3所需的时间也就相当地可观。但是由于每当用户Request完成后,Open Webmail就结束执行,所以下次用户Request进来时, 就必需再重复1、2、3、4的动作。其实对同一支 perl 程序而言,步骤1、2、3、4的结果永远都是一样的,只有步骤5会根据用户状况产生不同的结果。如果能省下重复在1、2、3、4步骤上的时间,那么 Perl CGI程序的速度便可以大幅地提升。


研发单位找到的能让Perl CGI程序常驻内存的解决方案有三种,分别是 mod_perl、FastCGI和SpeedyCGI。


mod_perl

一开始研发单位尝试的是mod_perl,mod_perl会把Perl Interpreter整个放进Http Server里,且每个被mod_perl执行过的程序都会被存在内存中。Mod_perl 最大的特点是允许事先指定要加载哪些module到内存中,并让所有的mod_perl 程序共享。


然而mod_perl因为Perl Interpreter和Httpd放在同一个Proces中,权限等同Httpd, 所以无法支持Setuid Root,但是Open WebMail需要Setuid Root来存取属于不同用户的信件匣,所以Open WebMail无法配合mod_perl使用。


FastCGI

FastCGI 透过一支C写的Wrapper程序(FastCGI Frontend),将来自Httpd的CGI参数经由网络传给另一部计算机Remote FastCGI Server的CGI 程序。执行后,再透过网络将结果回传给FastCGI Frontend,再经由Httpd传给用户。在上面的流程中,Remote FastCGI Server上的CGI程序执行过后并不会结束,而是继续等待下一次的FastCGI Frontend的联机。


由于CGI程序和Httpd是两个独立的Process,所以FastCGI可以支持Open WebMail所需的Setuid Root。FastCGI是研发单位所考虑使用的第二方案,不过由于FastCGI是一个通用各种程序语言的解决方案,Open WebMail为了要配合FastCGI工作而需要较多的修改,不过目前已经有其他用户让Open WebMail在SpeedyCGI下常驻执行了。


SpeedyCGI

SpeedyCGI的运作方式很像FastCGI,主要的差别在于Frontend和Backend 是透过UNIX Domain Socket和mmap()沟通,所以两者一定是在同一部计算机上运行。另外一个差别是SpeedyCGI专门为Perl程序设计的,所以一般的Perl程序只要少数的修改就能配合SpeedyCGI工作。


研发单位将Open WebMail移植到SpeedyCGI 平台后,同时利用常驻执行的优点, 把大部分固定不变的数据都Cache在Global Variables中,以避免磁盘重复读取这些数据。


以下是研发单位利用一支大小约8000行的Open Webmail–Tool.pl工具程序行出单个信件匣中所有信件属性,在不同平台执行的测试数据如下:



 

 
 
Pure CGI SpeedyCGI Speedup
P4-1.6G/512Mb 0.39s 0.06s 6.5s
PII-400/128mb 1.14s 0.09s  12.6s
K6-266/128mb 2.63s  0.22s 11.95s
P200/16mb  4.66s 0.49s 9.5s

数据压缩传输

由于网页大部分都是文字数据,压缩比很高,对于透过调制解调器联机或是使用PDA上网的用户来说,这个功能能够大幅地降低等待网页出现所需的时间。


结语

Open WebMail提供完整的邮件处理功能,并整合网络行事历与网络硬盘等其它的功能,由于Web接口以无所不在方式来运作,让Open WebMail成为用户的个人网络信息中心。相较于封闭软件昂贵的授权费用,整套Open WebMail 采取开放原始码开发方式,用户可自由下载,并配合高效能且稳定FreeBSD或 Linux操作系统来运作。


延 伸 阅 读
这是一篇教导用户如何在Open WebMail上设定真实和虚拟用户的文章,如此一来,使用
者就可以使用POP3或网络浏览器(Open WebMail)来接收不同账号的信件。不过用户需要初步地了
解Postfix和vm-pop3d,才能够做这些设定
,相关介绍请见「如何在Open WebMail上设定虚拟用户」一文。
FastCGI是一个高延展性的CGI语言接口,能够建立一个动态的目录,让企业与客户透过网
页上的应用程序来做产品交易、服务和交流等商业活动可以顺利地执行。FastCGI有着快、开放和安
全的优点,并改善了旧有CGI的一些问题
,你可在「高性能的网页服务器服务语言 – FastCGI白皮书」一文中得到进一步的介绍。
IMP的全名为Internet Messaging Program,是以PHP语言写成的一个Webmail与IMAP和POP3
之间的程序。IMP可让IT人员灵活地运用Webmail的许多功能。这个网站里有着详尽的IMP介绍,并有
安装和设定的教导
,在「IMP Webmail Client」一文为你做了相关的评析。
相关组织网站
Squirrelmail官方网站
SqWebMail官方网站
NeoMail官方网站
相关文章
用Arduino 打造机器人:循迹、弹钢琴、下棋都行!
树莓派推出AI摄影机、新款显示器
智慧充电桩百花齐放
充电站布局多元商业模式
以爆管和接触器驱动器提高HEV/EV电池断开系统安全性
comments powered by Disqus
相关讨论
  相关新闻
» 达梭系统携手CDR-Life 加速癌症治疗科学创新
» 宜鼎独创MIPI over Type-C解决方案突破技术局限,改写嵌入式相机模组市场样貌
» 鼎新电脑串连生态系夥伴 数智驱动智慧低碳未来制造
» 鼎新电脑携手和泰丰田解缺工 以数位劳动力开启储运新时代
» Fortinet SASE台湾网路连接点今年落成 全台巡??落实云地零信任资安


刊登廣告 新聞信箱 读者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2024 远播信息股份有限公司版权所有 Powered by O3  v3.20.1.HK852163OQ0STACUKJ
地址:台北数位产业园区(digiBlock Taipei) 103台北市大同区承德路三段287-2号A栋204室
电话 (02)2585-5526 #0 转接至总机 /  E-Mail: webmaster@ctimes.com.tw