论坛首页 Java企业应用论坛

讨论--关于开发邮箱系统

浏览 47439 次
该帖已经被评为精华帖
作者 正文
   发表时间:2004-02-27  
我一直关注这里,但是每次都是看帖子,好像没有发现有关于java开发mail的话题。让大家一起探讨一下要用java开发mail服务器(即邮箱系统),不知用什么组件,什么框架比较好,国外现在有比较成熟、稳定的免费、开源得例子吗!请各位高手一起探讨这个问题。
   发表时间: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在技术上不足,而是从应用的角度来说,不适合做而已。
0 请登录后投票
   发表时间:2004-02-27  
并非不能做, 据说所知, 上海有个公司做这个还是很牛的, 不过基本上也不能光靠javamail那么些东西,  得自己做很多工作
0 请登录后投票
   发表时间:2004-02-28  
引用
如果在更大的环境中来看Email Server,大型的Email系统,百万用户级,千万用户级的Internet Email系统,几乎无一例外的采用Qmail/Postfix等Unix平台的Email Server,在这个用户级别上,Java Email Server的效率和性能是不行的。


难道只有一台服务器在跑??

能不能给出一些数据证明一下呢???
0 请登录后投票
   发表时间:2004-02-28  
当然不是单台服务器了,比较典型的是:

qmail + qmail-ldap-patch + OpenLDAP,然后做LDAP集群,不过即便如此,还是要用C进行很多开发工作的。

你不如让Dlee给出具体的数据来,他以前开发过基于这种架构的Email System。
0 请登录后投票
   发表时间:2004-02-29  
谢谢,我去问dlee看一下
0 请登录后投票
   发表时间: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 已经很流行了。
0 请登录后投票
   发表时间:2004-02-29  
我的一个朋友开发过一个电信级别的email系统(国内的,很有名的公司用的,不过后来他们的email收费了,所以这套系统就废了)。
首先认证系统就是使用内存数据库,也就是把客户ID和PD放在内存中,用一个高级别的线程做查询,一个最低级的线程不断的把内存中的数据备份到数据库。系统平台是UNIX,内存计划使用4G。发送和接收系统也是直接使用C。他说客户数量支持千万级,瞬时发送和接收率可以做到10w级。而最近武汉一个联通的人告诉我他们的服务器是杭州一个公司用python开发的。我想既然是电信的,级别应该也不低。
不过我觉得类似这样的应用,我们这些人很少会遇到,所以我也就没有仔细交流。但是他们都认为使用java是肯定不能满足这样的要求的。
0 请登录后投票
   发表时间:2004-03-01  
robbin 写道:
引用
千万用户级的Internet Email系统,几乎无一例外的采用Qmail/Postfix等Unix平台的Email Server

Qmail是一个在linux或者unix环境下运行?我公司的一个项目也是在原有的系统中嵌入了Qmail,但是Qmail没有界面的东西,要自己写,还有Qmail的功能并不怎么样!国内现有的邮箱系统,如网易等,他们是用什么开发出来的东西?请指教!
0 请登录后投票
   发表时间:2004-03-01  
你有没有真正用过 Qmail,还是道听途说?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics