« maildrop - Webmail dev problem - 解决了几个隐晦问题 | Main | Webmail dev status - 8月31日webmail开发进度小结 »

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。
本文网址:http://www.hzqbbc.com/blog/arch/2005/08/new_webmail_dev.html
 

August 08, 2005

New webmail dev - 新webmail正式动工开发

计划多时的webmail系统已经正式启动并开始coding了。这个项目以GPL版权释出,使用perl语言编写,其主要的目的是要设计一个适应当前高速发展的IT应用环境,满足用户多变的需求,能快速进行开发、改进和升级,适应能力强的webmail系统,而次要的目的是设计一个能够替代目前国内外最流行的webmail软件:SqWebMail,OpenWebmail及squirrel,Igenus等。详细的分析见下文。

Why Perl?

为什么使用perl语言呢?因为这两年我做过多次测试,对于Maildir++的webmail系统而言,操作最多的I/O动作,以c速度最快,perl次之,而php慢了很多,有时耗费的时间是perl的10-100倍不等。

其次,php不同版本之间的api变动比较大,而perl变动小,perl5以后95%以上的核心api没有大的变化,程序兼容性强。php则有一些升级的问题。

最后,c的开发速度慢,不便修改,perl兼顾了php开发速度快和c性能较好的优点。所以我计划使用perl。

Webmail 特性介绍

该webmail系统暂定名为extmail,也曾考虑过其他名字,如ALTwebmail, lightwebmail等,但一直想不出好名字,希望朋友们给我一点好建议,想一个好的名字,设计一个好的logo,帮助这个软件发展。

extmail目前1.0之前计划的有别于其他流行webmail的特性主要有:

  • 支持巨型邮箱(超过1GB)海量文件
  • 通过优化的设计和小巧的代码,extmail能够较好的应付大型邮箱,例如拥有5000封到1万封的邮箱,I/O速度远超Igenus等php的webmail,也比OpenWebmail/maildir补丁快。仅次于SqWebMail,如需要提速则可用c写相关的XS扩展以达到和c一样的性能速度!

  • 支持大附件,可随意调整限制
  • 传统的Webmail系统附件限制较严格,通常不能上载太大,例如php的webmail如果上载太大将导致php执行超时,而extmail支持几乎无限的上载时间,经过良好设计的I/O库能以低开销,支持大型附件,及高速Base64编码。目前测试版本至少上载100MB-150MB附件没任何问题。

  • 速度快,安全可靠,无suid问题
  • 考虑到安全可靠的因素,extmail没有使用常规的suid设计来访问Maildir,也不需要象igenus那样必须改apache运行权限来实现直接访问Maildir,而是透过Suexec来实现安全的变换运行用户。这样的设计,能避免suid带来的安全问题和改apache运行id带来的隐患及麻烦。

    同时,extmail充分考虑到性能的问题,通过大量优化的短小代码和减少不必要的perl模块,并尽量不依赖任何其他第三方perl模块,能实现相当高的web访问速度。如果觉得性能还不够,可以通过mod_perl/fastcgi来大幅度提高速度。

  • 模板化,MVC设计
  • igenus和sqiurrel等不支持真正意义的模板技术,因此修改界面基本上都需要改动php代码,而openwebmail及sqwebmail的模板设计也不甚有效,例如sqwebmail就将大量html代码嵌入c中,修改起来也必不可少的需要改c代码,重新编译,相当麻烦。

    extmail使用了轻量级的Template引擎,实现了内容和数据的完全分离,代码中不包含任何html信息,最大化的降低了修改界面的难度。而且支持cache技术,便于提速。

  • 多字符,多语言支持
  • 一直以来,webmail软件对非本土字符的支持就不太好,为了能在不改动设置的前提下顺利阅读简体中文,繁体中文,日文,韩文及其他国家的文字,extmail利用utf8转化及Iconv技术,提供了同屏显示多种文字的能力。真正的解决了邮件乱码的问题。

    多语言能力主要体现在利用模板引擎,配上不同语言种类的界面。

  • 面向对象设计,体积小易修改
  • 从高性能角度出发,extmail屏弃了大而全的设计思路,采取了综合面向对象和过程设计优点的方法,尽量利用perl系统函数来实现功能,不依赖其他外挂模块或CPAN上的模块,这样整个代码的维护难度低,且体积小,修改容易。

    面向对象的设计利于开发人员理解整个webmail系统。

当前开发状态

extmail 因一些事停滞了半年之久,现在已纳入正式的开发日程里。目前已基本实现了如下的模块/功能:

  • Maildir++ 90%的要求
  • 包括了quota,maildirsize维护,子目录建立/删除等。邮件的各种操作,如阅读,标记,移动,删除,更新相应的cache等都已基本实现。

  • MIME 模块
  • 基本实现了邮件的解码,附件下载,邮件的结构解析,基本编码功能,最近刚实现了新建邮件体的功能,即建立mime message并发送出去,但还没完工。

  • Index索引cache实现
  • 已基本实现了索引cache,实践证明速度非常快。与SqWebmail基本一致。并实现了cache的rebuild,delete,简单排序(还不完整)和check new mail等功能。

  • 模板Template
  • 已实现了模板模块,能够利用简单的模板来分离数据和界面。并使用了类似smarty的一些简单语法和标记。但目前还有待完善。
  • Session设计
  • 会话Session的设计框架已完成,包括读/写/解析session 文件,并产生唯一的sid。

  • 配置模块config
  • 设计了一个简单的Config模块,用于维护配置文件。目前还没正式使用,已实现基本的编码。

结束语

希望看到本文的朋友支持我的工作,并给予意见和鼓励,乃至帮助,有兴趣加入开发的朋友可以直接回复本文。按目前进度,争取10月份发布1.0

Posted by hzqbbc at August 8, 2005 09:04 PM

Comments

看到老大的MAIL 真是万分高兴,鼓励一下。到发行时通知一声。

Posted by: fengyong at August 12, 2005 10:34 AM

都没人回,看你怪可怜的。。。哎~~~
支持,我看好你

我留的mail地址是错的,为了防止讨厌的spam

Posted by: skylove at August 12, 2005 02:27 PM

嘿嘿,skylove,其实在东西没成型之前,是不会有什么人关注的嘛。就只是靠熟悉的兄弟支持一下咯。

ps:如果有兴趣就帮我想想webmail的名称吧。我是没什么点子的了......

Posted by: hzqbbc at August 13, 2005 11:49 AM

不错呀,好长时间没有和你探讨了,今天偶尔看着了,觉得中国要是多你这样的程序员那我们的IT产业至少不会象当前这样呀

Posted by: wan8832 at August 29, 2005 03:59 PM

怎么申请这个邮箱?

Posted by: wzy0421 at January 8, 2006 07:47 PM

怎么申请这个邮箱?

Posted by: wzy0421 at January 8, 2006 07:48 PM

extmail.org去看看就知道了。

免费下载。

Posted by: hzqbbc at January 10, 2006 11:47 PM

Post a comment




Remember Me?

(you may use HTML tags for style)