Apache James 开发感受和一点点经验 Mackalli

      自己做了一个基于JavaSwing的IM聊天软件,后来想着实现邮件问题,整个项目类似于Tencnt 的, 由于自己对Java的偏爱和开源的崇拜ing,服务器自然选择了开源的James,总体感觉很好用。。。。。。

  开发工具Eclipse+Mysql+James:

  网上能找到最多的是James的配置,深入的文章很少,在这里我只说两点,一 你要是内网IP只能向外网发送邮件,不能受到邮件(计算机网络的基础知识),二 要是想和外网实现通信,必须设置DNS或者你有唯一的外网IP。

     配置上解决了,下面就是二次开发,我选择的是Mysql数据库,根据配置会生成一个mail数据库,下面有三个表 users,spool,inbaox

users就是用户表,spool是信息记录和状态综合表,inbox是邮件格式信息表。

  好了,下面就是设计自己的邮箱数据库了。我这里提供两种思路供大家思考,一 不要动系统三个表,建立新的关联表进行处理用户数据,二是再建立一个关联的数据库和系统表进行关联,这里我采用第

二种方法,至于原因稍后给出,看一下我的数据库架构。contactinfo是联系人的表,emailinfos是邮件信息的表,userinfo是用户表  这个表和users是想关联的,userid是相同的,我用触发器实现了两个表信息的同步。下面分析使用和我选择第二种方式的原因

  每次来自桌面客户端注册向useinfo写入用户信息,同时触发器完成向James users里写入注册信息,这样在网页注册时可以单独向James里的users里注册,实现了两个信息库的共存和结合。第二  在邮件收发操作时,先由web里的Servlet从James Server里读取邮件放在qq数据库中,然后在由用户操作qq数据库完成邮件读取,编辑,删除,更改!

  看到这里或许你已将明白了我选择第二种方式的原因:

     James邮件系统提供自己的存储数据库(本数据库)部分,这个数据库是邮件注册用户信息,记录用户收发邮件的系统数据库,平时不做处理,只有系统自己根据系统响应完成,建立次级邮件数据库(次级数据库)系统,每次把邮件的数据库内容读取到次级邮件数据库系统中,再在次级邮件系统里进行操作,这样很好保证了邮件系统的安全和稳定,基本的操作都在分区系统里完成,同样减少了邮件系统的访问强度,防止过度的访问给邮件系统带来的连接负担,同时也提供一些特殊的操作   eg:删除(次级数据库)和彻底删除(邮件系统本数据库),而邮件系统本数据有DBA定期维护。

   一个实用稳定安全扩充性强的系统必须做好数据库和前台综合架构的考录,自己完成了整个过程的工作,感觉收获很大,最后感慨两句

大三了,看着大四的都在签约工作,感觉有点矛盾和不舍,不知道明年的自己该如何选择!!!!!!

   最后希望大家多分享一些东西,项目里的不涉及安全和隐私的和大家一起学习。同时希望学到知识的码农们有颗感恩的心,我们现在的社会确实有点冷清!!!!!!!     博客出自  Mackalli  2011/10/30 23:25

 

posted @ 2011-10-30 23:25  java_li  阅读(2028)  评论(2编辑  收藏  举报