锁定老帖子 主题:讨论--关于开发邮箱系统
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2004-02-27
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2004-02-27
rubasse 写道 我一直关注这里,但是每次都是看帖子,好像没有发现有关于java开发mail的话题。让大家一起探讨一下要用java开发mail服务器(即邮箱系统),不知用什么组件,什么框架比较好,国外现在有比较成熟、稳定的免费、开源得例子吗!请各位高手一起探讨这个问题。
就我个人的经验来谈谈吧。如果是在现有的Java开发的软件系统上集成Email的功能,那么还是一件很简单的事情,也是Java Mail API完全可以胜任的,而且主流的商业Java App Server对Java Mail都支持的很好。 如果在更大的环境中来看Email Server,大型的Email系统,百万用户级,千万用户级的Internet Email系统,几乎无一例外的采用Qmail/Postfix等Unix平台的Email Server,在这个用户级别上,Java Email Server的效率和性能是不行的。 在企业级的邮件系统中,主要是要能够良好的和局域网的用户域结合起来,和企业的工作流软件结合起来,这个领域主要是MS的Exchange Server,IBM的Notes和Novell的GroupWise的天下。纯Java的Mail系统在功能上还差的很多,需要巨大的开发工作量才能达到一个企业级邮件系统的基本要求。 因此我觉得Java Mail似乎还提不上中大型Email Server的地步,这不是Java Mail在技术上不足,而是从应用的角度来说,不适合做而已。 |
|
返回顶楼 | |
发表时间:2004-02-27
并非不能做, 据说所知, 上海有个公司做这个还是很牛的, 不过基本上也不能光靠javamail那么些东西, 得自己做很多工作
|
|
返回顶楼 | |
发表时间:2004-02-28
引用 如果在更大的环境中来看Email Server,大型的Email系统,百万用户级,千万用户级的Internet Email系统,几乎无一例外的采用Qmail/Postfix等Unix平台的Email Server,在这个用户级别上,Java Email Server的效率和性能是不行的。
难道只有一台服务器在跑?? 能不能给出一些数据证明一下呢??? |
|
返回顶楼 | |
发表时间:2004-02-28
当然不是单台服务器了,比较典型的是:
qmail + qmail-ldap-patch + OpenLDAP,然后做LDAP集群,不过即便如此,还是要用C进行很多开发工作的。 你不如让Dlee给出具体的数据来,他以前开发过基于这种架构的Email System。 |
|
返回顶楼 | |
发表时间:2004-02-29
谢谢,我去问dlee看一下
|
|
返回顶楼 | |
发表时间:2004-02-29
呵呵,具体数据我已经丢掉了。当时我们是自己写的压力测试程序来做测试,不是很科学,而且主要是用来测试我们自己的系统。但是已经足以解决一些问题了。权威的测试套件是 SPECmail2001,要花钱买的。后来公司经营不善,就没有把这项工作认真做彻底。
Java 是肯定不适合做大容量(10 万以上用户量)邮件系统的,因为从来没有人这样做过。但是小规模的邮件系统(企业内部的邮件系统,用户量<1万,我甚至都怀疑 Java 邮件系统能否支持上千的用户量,不过不敢随便臆断)是可以做的,也有开源软件。以前有人曾经问过这个问题。 http://james.apache.org 也许你可以成为第一个吃螃蟹的人。我完全相信你比 90% 的人都要聪明的多。 Java 根本就不适合做协议级的软件开发,这类系统级的开发是 C 的强项。主要问题是 Java 程序消耗的系统资源太大,完全无法承担大容量并发访问时所要求的性能和稳定性。 国内做邮件系统的很多是基于 Qmail 或者 Postfix 等开源软件,修改了源代码后在上面再进行二次开发,添加 Web 界面等等。 应用层可以用多种方式来实现,例如 CGI、PHP、JSP 等等。如果我做这样的系统我更愿意使用 PHP,开发效率比 JSP 快多了。不过要实现象 Notes 那样对协同工作的支持,系统将会是非常复杂的,就只有 Java 可以胜任了(不单单是一个表示层),可以通过 JNI 接口访问低层的功能。 用户身份验证可以用多种方式来做,如操作系统帐号、数据库、LDAP 等等。Qmail 缺省是基于操作系统帐号的,不过通过打补丁的方式也可以支持其它验证方式。我们以前是基于数据库(Oracle or MySQL)的,也可以基于 LDAP(OpenLDAP),用 LDAP 的性能应该会更好。因为用户身份信息通常很少修改,很适合放在 LDAP 中。 所有大容量邮件系统的体系结构都是“分布应用、集中存储”。 对于应用的负载均衡有几种方式,软件方式和硬件方式。软件方式指的是使用负载均衡集群(集群有很多种,负载均衡是一种),如 LVS。硬件方式指的是用四层交换机在 TCP/IP 的应用层(HTTP、FTP、SMTP、POP3/IMAP4 etc.)自动进行负载均衡。 不管用软件方式还是硬件方式,你都需要在做负载均衡的每台机器上复制用户的 Session 信息,这样某台机器发生故障后不会影响正在执行的操作流程(不必重新登录)。 存储可以使用 RAID 来提高性能,也可以使用 NAS,现在 NAS 已经很流行了。 |
|
返回顶楼 | |
发表时间:2004-02-29
我的一个朋友开发过一个电信级别的email系统(国内的,很有名的公司用的,不过后来他们的email收费了,所以这套系统就废了)。
首先认证系统就是使用内存数据库,也就是把客户ID和PD放在内存中,用一个高级别的线程做查询,一个最低级的线程不断的把内存中的数据备份到数据库。系统平台是UNIX,内存计划使用4G。发送和接收系统也是直接使用C。他说客户数量支持千万级,瞬时发送和接收率可以做到10w级。而最近武汉一个联通的人告诉我他们的服务器是杭州一个公司用python开发的。我想既然是电信的,级别应该也不低。 不过我觉得类似这样的应用,我们这些人很少会遇到,所以我也就没有仔细交流。但是他们都认为使用java是肯定不能满足这样的要求的。 |
|
返回顶楼 | |
发表时间:2004-03-01
robbin 写道:
引用 千万用户级的Internet Email系统,几乎无一例外的采用Qmail/Postfix等Unix平台的Email Server
Qmail是一个在linux或者unix环境下运行?我公司的一个项目也是在原有的系统中嵌入了Qmail,但是Qmail没有界面的东西,要自己写,还有Qmail的功能并不怎么样!国内现有的邮箱系统,如网易等,他们是用什么开发出来的东西?请指教! |
|
返回顶楼 | |
发表时间:2004-03-01
你有没有真正用过 Qmail,还是道听途说?
|
|
返回顶楼 | |