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 组织开发的开源邮件服务器软件,它完全基于 Java 技术构建,支持多种邮件协议,包括 SMTP(Simple Mail Transfer Protocol)、POP3(Post Office Protocol Version 3)以及 NNTP...
这对于学习邮件服务器的实现细节、进行二次开发或者调试问题都非常有帮助。 在深入研究源代码时,可以关注以下几个关键部分: 1. **org.apache.james.smtpserver**:SMTP服务的实现,包括SMTP会话处理、命令解析等...
Apache James是一款基于Java的开源邮件服务器软件,提供了丰富的邮件处理功能和配置选项。本文将对Apache James的安装、配置和应用进行详细介绍。 Apache James的安装 在安装Apache James之前,需要安装Java ...
- 针对特定需求进行二次开发,如添加新的Mailet或修改现有功能。 - 调试问题,查看日志,跟踪代码流程。 - 参与社区贡献,修复bug或提出新特性。 而"apache-james-2.3.2.zip"可能包含的是编译后的二进制文件和配置...
Apache James的源代码开放,使得开发者可以深入理解其工作原理,并对其进行二次开发。例如,你可以: - 自定义Mailets以实现特定的邮件处理逻辑。 - 调整存储策略以优化性能或满足特定的数据安全需求。 - 集成其他...
- **Apache James 3.0**:一款开源的邮件服务器。 - **Tomcat**:用于运行Java Web应用的服务器。 - **MySQL 5.1**:作为数据存储的数据库系统。 #### 三、安装与配置步骤 ##### 1. 安装与配置Apache James 3.0 - ...
如果你是一名开发者,你可以通过阅读源码学习邮件服务器的实现细节,或者根据自己的需求进行二次开发。对于系统管理员来说,理解源代码可以帮助优化配置,解决运行中遇到的问题。 在解压后的"apache-james-3.0-beta...
WebJamesEmail 是一个基于 Java 技术的网络电子邮件系统,主要使用了 Apache James 服务器...同时,由于 James 和 Hibernate 都是高度可配置的,因此 WebJamesEmail 也适合进行二次开发和定制,以满足特定的业务需求。
- **James**:用Java编写的邮件服务器,支持SMTP、POP3和NNTP等多种协议。 - **Logging**:基于Java的日志框架,提供高性能的日志记录功能。 - **Maven**:一种项目管理和综合工具,基于项目对象模型(POM)理念。 -...
xSocket是一个轻量级的基于nio的服务器框架用于开发高性能、可扩展、多线程的服务器。该框架封装了线程处理、异步读/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的...
xSocket是一个轻量级的基于nio的服务器框架用于开发高性能、可扩展、多线程的服务器。该框架封装了线程处理、异步读/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的...
xSocket是一个轻量级的基于nio的服务器框架用于开发高性能、可扩展、多线程的服务器。该框架封装了线程处理、异步读/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的...
xSocket是一个轻量级的基于nio的服务器框架用于开发高性能、可扩展、多线程的服务器。该框架封装了线程处理、异步读/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的...
xSocket是一个轻量级的基于nio的服务器框架用于开发高性能、可扩展、多线程的服务器。该框架封装了线程处理、异步读/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的...
xSocket是一个轻量级的基于nio的服务器框架用于开发高性能、可扩展、多线程的服务器。该框架封装了线程处理、异步读/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的...
xSocket是一个轻量级的基于nio的服务器框架用于开发高性能、可扩展、多线程的服务器。该框架封装了线程处理、异步读/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的...
xSocket是一个轻量级的基于nio的服务器框架用于开发高性能、可扩展、多线程的服务器。该框架封装了线程处理、异步读/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的...
xSocket是一个轻量级的基于nio的服务器框架用于开发高性能、可扩展、多线程的服务器。该框架封装了线程处理、异步读/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的...
xSocket是一个轻量级的基于nio的服务器框架用于开发高性能、可扩展、多线程的服务器。该框架封装了线程处理、异步读/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的...