Main | Installation Document - Extmail 安装文档 »

September 18, 2005

About Extmail - 关于Extmail的介绍

什么是Extmail?

Extmail 是一个以perl语言编写,面向大容量/ISP级应用,免费的高性能Webmail软件。它以GPL版权释出,设计初衷是希望设计一个适应当前高速发展的IT应用环境,满足用户多变的需求,能快速进行开发、改进和升级,适应能力强的webmail系统。

Extmail还被设计成一个能够替代目前国内外一些主流webmail软件的系统,例如:SqWebMail,OpenWebmail及squirrel,Igenus等。

Extmail设计背景

流行在互联网上的Unix平台webmail软件相当多,有的功能还非常强大,但在实际的应用中,尤其是在ISP、企业邮局、办公邮件平台等要求较高的环境下,这些webmail软件就暴露了很多不足,有的安装要求高、软件包依赖多,有的没实现模板化导致修改困难,有的速度慢,有的功能太简单,有的兼容性差,有的对邮件解析的能力弱,还有大量的并不支持多语言显示。

因此,为了适应严格的IT应用环境,我们迫切需要一个拥有实用的功能,便于修改,速度快而稳定,兼容性好,能适应多国邮件的webmail系统,Extmail就是在这样的需求下被设计的。

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 特性介绍

目前Extmail 的版本还非常低,截止本文发布时,也只有0.12版,其主要特性有:
  • 支持巨型邮箱(超过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的系统架构


Extmail按分层的结构设计,最底层的是处理核心CORE modules,中间是应用模块App modules,上层是应用cgi/fcgi程序及模板显示等业务逻辑。

以下是系统结构图;

详细的系统结构图介绍可以参考Webmail Bigpicture - Webmail的结构图

未来发展

从长远来看,Extmail开发队伍将紧紧以OpenSource为基础,并逐步充实Extmail,最终发展成为一个完整的邮件应用解决方案,将包括如下的主要备件:
  • Webmail
    目前的extmail webmail日后将逐步完善成为一个既能单独工作又能与extmail协作工作的软件。
  • Spam Filter
    垃圾邮件,病毒邮件过滤器,这个部件将基于APF技术和软件,融合其他过滤软件的特色。
  • Statistic Monitor
    流量、日志分析软件,将以RRDTools、商业系统DMS的分析软件为基础,发展成为一个完善的监控软件。
  • Webman admin
    新开发一个能兼容mysql/ldap/flat text的帐户管理软件,并基于webmin开发相应的MTA管理软件。替换当前的postfixadmin及其他相关的web管理程序。
  • Passport Auth/Manager
    基于OpenID和其他单点登陆技术的单点登陆和认证系统,统一所有的web应用的登陆接口。
  • ExtMail Installer
    基于source或RPM/PKG的邮件解决方案安装包(软件),计划利用商业软件DMS的安装包为蓝本开发。
  • 其他部件.....

但发展的路子还是很漫长的,诚挚邀请国内外的朋友一同开发,最终完成这一计划。:-)

Posted by hzqbbc at September 18, 2005 08:47 PM

Comments

汉颜………………这么小的程序,完成这么多的功能!!
国内所有运营公司的邮箱去死!!!

Posted by: Zoom.Quiet at October 20, 2005 07:52 PM

楼主这么说,是要贬还是要褒呢?有意见的话请不吝指正 :-)

Posted by: hzqbbc at October 20, 2005 10:55 PM

老大果然厉害,呵呵,学习学习

Posted by: magier at October 21, 2005 01:41 AM

请问如何加入开发团队,本人也在写postfix的webmail,希望可以加入为Extmail尽一点力!

Posted by: 鱼肠 at January 2, 2006 07:56 PM

感谢老大提供了这么好的软件。希望一直开发下去,偶要学些Perl贡献一点力量!!
兄弟们加油!!

Posted by: 边缘如刀 at January 12, 2006 07:03 PM

我会点PHP,不懂perl,但真诚希望你们的项目能获得成功!
我在精神上支持你们

Posted by: luojiannx at April 6, 2006 04:42 PM

我现在想安装一下这个系统在linux+qmail+vpopmail上
但是总是提示错误信息“DBD::mysql::st execute failed: Unknown column 'username' in 'where clause' at /home/httpd/cgi-bin/extmail/libs/Ext/Auth/MySQL.pm line 82”
我怀疑现在发布的安装包中是不是缺少了关于数据库以及其相关表结构的说明.请速回复

Posted by: sandy at April 24, 2006 11:51 PM

想加入Spam Filter开发团队,请问如何加入。

Posted by: puma at May 8, 2006 11:16 PM

在Debian 上安装,有没有什么问题?TKS

Posted by: debian at June 29, 2006 03:14 PM

是否支持多域名!也就是我给多个域名同时开设邮件服务!是否可以使用同一套程序来实现

Posted by: dancebear at July 9, 2006 10:06 PM

老大可能不记得我了,但我一直记着你!
呵呵,支持支持。

Posted by: 于铁锋 at September 19, 2006 12:34 AM

容量很大吗,为什么我们的邮箱才存了27封邮件就满了,而且经常有发不出邮件的情况。

Posted by: sks at October 31, 2006 07:40 PM

Post a comment




Remember Me?