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
页:
[1]