`
xiaoshan5634
  • 浏览: 74000 次
  • 性别: Icon_minigender_1
  • 来自: 东莞
社区版块
存档分类
最新评论

Apache James 邮件服务器二次开发

阅读更多

apache james 作为一个成品,基本上我们不需要做任何开发。但是,有时候我们需要做某些特殊控制,例如:1.在config.xml上面指定每封邮件只能带上10M的附件,但是老总要特殊对待,怎么弄呢?只能对源码进行重新修改。2.现在james在adduser的时候密码是经过加密的,但是我们不需要它进行加密,怎么办呢?同样只能修改源码。

 

      在对james做二次开发的时候我们需要准备一些东西:

        1. james 的源码,在apache上面可以下载

        2. ant ,因为没有ant,你改完后没办法打包。

        3. jdk1.5 的任何版本

 

      准备好这些东西后,我们可以进行二次开发了!

 

      这次我就要修改发送邮件带附件的问题,只能某些人能够不限量,其他人都是只有10m。统一限制肯定在config.xml上面配置了,至于某些人不限量,我们需要写死在代码里面。

 

     由于时间关系,我这里直接说是修改那个类就好了,打开org.apache.james.smtpserver.DataCmdHandler ,在123行进行一下修改

 

if (maxMessageSize > 0) {  
    if (getLogger().isDebugEnabled()) {   

        StringBuffer logBuffer =   

            new StringBuffer(128)   

                    .append("Using SizeLimitedInputStream ")   

                    .append(" with max message size: ")   

                    .append(maxMessageSize);   

        getLogger().debug(logBuffer.toString());   

    }   

    /*这里就是控制生成msgIn的,如果穿进去的文件的byte > maxMessageSize ,返回的对象进行调用就会有问题*/   

    if("test3@fengyongsen.com".equals(session.getState().get(SMTPSession.SENDER).toString())){   

        msgIn = new DotStuffingInputStream(msgIn);   

    }else{   

        msgIn = new SizeLimitedInputStream(msgIn, maxMessageSize);   

    }   

}   

 

 

  修改完后,将这个java文件覆盖到james源码包相应的地方。

 

      然后运行ant编译!如果在运行ant编译的时候出现异常,ok!这时候我们需要带eclipse帮我们编译。将james的所有java文件和lib包全部弄到eclipse里面,编译好后,将class文件拷贝到 james 源码包下面的build\classes 目录下,然后再次运行ant,这次就不会出现错误了!

 

      打好包后,我们会发现james源码目录下面会有一个叫 dist 的文件夹,这就是我们的james的邮件服务器,修改一下config.xml 配置文件就可以用,如果你原来已经有一个正在运行的james ,直接把 dist包下面的 james-2.3.2\apps\james.sar 覆盖过去即可重启使用!

 

     在windows 二次开发james 调试工作比较郁闷,建议在linux下面开发,调试也比较简单! 因为phoenix 只能运行在 linux

分享到:
评论

相关推荐

    apache James使用入门

    Apache James 是一款由 Apache 组织开发的开源邮件服务器软件,它完全基于 Java 技术构建,支持多种邮件协议,包括 SMTP(Simple Mail Transfer Protocol)、POP3(Post Office Protocol Version 3)以及 NNTP...

    Java开源邮件服务器james源码

    这对于学习邮件服务器的实现细节、进行二次开发或者调试问题都非常有帮助。 在深入研究源代码时,可以关注以下几个关键部分: 1. **org.apache.james.smtpserver**:SMTP服务的实现,包括SMTP会话处理、命令解析等...

    Apache James专题

    Apache James是一款基于Java的开源邮件服务器软件,提供了丰富的邮件处理功能和配置选项。本文将对Apache James的安装、配置和应用进行详细介绍。 Apache James的安装 在安装Apache James之前,需要安装Java ...

    apache-james-2.3.2.jar+源码

    - 针对特定需求进行二次开发,如添加新的Mailet或修改现有功能。 - 调试问题,查看日志,跟踪代码流程。 - 参与社区贡献,修复bug或提出新特性。 而"apache-james-2.3.2.zip"可能包含的是编译后的二进制文件和配置...

    apache-james-2.3.2-src.tar.gz

    Apache James的源代码开放,使得开发者可以深入理解其工作原理,并对其进行二次开发。例如,你可以: - 自定义Mailets以实现特定的邮件处理逻辑。 - 调整存储策略以优化性能或满足特定的数据安全需求。 - 集成其他...

    基于Java的邮件服务器

    - **Apache James 3.0**:一款开源的邮件服务器。 - **Tomcat**:用于运行Java Web应用的服务器。 - **MySQL 5.1**:作为数据存储的数据库系统。 #### 三、安装与配置步骤 ##### 1. 安装与配置Apache James 3.0 - ...

    apache-james-3.0-beta3-source-release.zip

    如果你是一名开发者,你可以通过阅读源码学习邮件服务器的实现细节,或者根据自己的需求进行二次开发。对于系统管理员来说,理解源代码可以帮助优化配置,解决运行中遇到的问题。 在解压后的"apache-james-3.0-beta...

    WebJamesEmail

    WebJamesEmail 是一个基于 Java 技术的网络电子邮件系统,主要使用了 Apache James 服务器...同时,由于 James 和 Hibernate 都是高度可配置的,因此 WebJamesEmail 也适合进行二次开发和定制,以满足特定的业务需求。

    apache简介_动力节点Java学院整理

    - **James**:用Java编写的邮件服务器,支持SMTP、POP3和NNTP等多种协议。 - **Logging**:基于Java的日志框架,提供高性能的日志记录功能。 - **Maven**:一种项目管理和综合工具,基于项目对象模型(POM)理念。 -...

    java开源包1

    xSocket是一个轻量级的基于nio的服务器框架用于开发高性能、可扩展、多线程的服务器。该框架封装了线程处理、异步读/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的...

    java开源包11

    xSocket是一个轻量级的基于nio的服务器框架用于开发高性能、可扩展、多线程的服务器。该框架封装了线程处理、异步读/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的...

    java开源包2

    xSocket是一个轻量级的基于nio的服务器框架用于开发高性能、可扩展、多线程的服务器。该框架封装了线程处理、异步读/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的...

    java开源包3

    xSocket是一个轻量级的基于nio的服务器框架用于开发高性能、可扩展、多线程的服务器。该框架封装了线程处理、异步读/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的...

    java开源包6

    xSocket是一个轻量级的基于nio的服务器框架用于开发高性能、可扩展、多线程的服务器。该框架封装了线程处理、异步读/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的...

    java开源包5

    xSocket是一个轻量级的基于nio的服务器框架用于开发高性能、可扩展、多线程的服务器。该框架封装了线程处理、异步读/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的...

    java开源包10

    xSocket是一个轻量级的基于nio的服务器框架用于开发高性能、可扩展、多线程的服务器。该框架封装了线程处理、异步读/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的...

    java开源包4

    xSocket是一个轻量级的基于nio的服务器框架用于开发高性能、可扩展、多线程的服务器。该框架封装了线程处理、异步读/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的...

    java开源包8

    xSocket是一个轻量级的基于nio的服务器框架用于开发高性能、可扩展、多线程的服务器。该框架封装了线程处理、异步读/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的...

    java开源包7

    xSocket是一个轻量级的基于nio的服务器框架用于开发高性能、可扩展、多线程的服务器。该框架封装了线程处理、异步读/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的...

Global site tag (gtag.js) - Google Analytics