赛迪网 > IT技术 Java > Java-企业应用
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

用apache james做简单的垃圾邮件过滤网关

发布时间:2007.10.30 05:14     来源:赛迪网技术社区    作者:baocl

网络环境如下:
 
三台服务器。
1.网关,公网IP,
2.domino邮件服务器。
3.另一台服务器。
 
通过把网关的端口25,映射到domino服务器上,让domino服务器可以收发邮件。
同时domino服务器还要把部分邮件转发到服务器3上。
大家的发邮件smtp统一是domino服务器。
由于domino过滤垃圾邮件服务器的功能不强,并且,为了实现转发邮件,因此domino服务器被迫取消了smtp验证,
即使用open reply模式。
在这种情况下,自从服务器被人盯上用来进行垃圾邮件发送和中转之后,
给服务器的性能带来很大影响,也影响了正常邮件的收发。
 
Apache James是个非常优秀的邮件服务器。
由于实际情况的特殊,没有办法通过简单的配置来同时不发送垃圾邮件和正常转发邮件到domino服务器,
在察看james文档之后,通过实现mailets接口来做到了这件事情。
 
现在的网络配置如下。
增加一台服务器,运行james,邮件域名和domino的一致。(因为域名一致,所以无法使用james内置的forward,才需要自己来实现邮件发送功能)
修改james的配置信息,使之需要smtp验证,网关端口25映射到james服务器的25端口上。
我增加了一个james matcher。来匹配邮件并进行发送到domino服务器。
大致代码如下:
 private String domain = "lizongbo.com";
 public Collection match(Mail mail) throws MessagingException {
        if ((mail.getSender().toString().indexOf(this.getDomain()) > 0)) {
            System.out.println("收到来自" + mail.getSender() + "的邮件");
            String path = "mailsavein/" + System.currentTimeMillis()
                          + ".txt";
            savemail(mail, path);
            JavaMailSender jms = new JavaMailSender();
            jms.sendmail(path);
        }
        for (Iterator i = mail.getRecipients().iterator(); i.hasNext(); ) {
            MailAddress rec = (MailAddress) i.next();
            if (rec.toString().indexOf(this.getDomain()) > 0) {
                System.out.println( "收到" + mail.getSender()
                                   + "一封发给" + rec + "的邮件");
                String path = "mailsavein/" + System.currentTimeMillis()
                              + ".txt";
                savemail(mail, path);
                JavaMailSender jms = new JavaMailSender();
                jms.sendmail(path);
            }
        }
        return mail.getRecipients();
    }
 
 
经过配置运行,现在domino服务器无法再会被外网的人利用起来进行垃圾邮件的发送了。
这样保证了domino服务器的稳定,也省下了买专门的邮件网关的开销。
 
通过对james的扩展,还可以实现很多更强大的垃圾邮件过滤,杀毒过滤,与SpamAssasin结合进行垃圾邮件过滤等等。
具体可以参考:http://wiki.apache.org/james
 
 
由于james使用的开发框架avalon落后,已经被apache终止。因此james3.x版本需要大的改动和升级,期待3.0版本的出现,能够提供更强大的功能。


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 关于spring 2.0自定义xml 标记 (10-29) · 关于spring 2.0自定义xml 标记 (10-29)
· Tomcat5配置Mysql JDBC数据库连接池 (10-29) · Tomcat5配置Mysql JDBC数据库连接池 (10-29)
· J2EE基础:Servlet/JSP服务器端的重定向 (10-29) · J2EE基础:Servlet/JSP服务器端的重定向 (10-29)
· Tomcat 服务器server.xml的关键参数配置 (10-29) · Tomcat 服务器server.xml的关键参数配置 (10-29)
· JAVA基础--J2EE开发过程中的异常处理 (10-29) · JAVA基础--J2EE开发过程中的异常处理 (10-29)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· 信息化市场百家争鸣 SaaS深陷争议“泥潭”
· 提高管理水平 "两栖"CIO应具备的六大能力
· 国产ITIL运维先行者 四大厂商角力BI市场
· 金融行业GSN专题解决方案 企业网解决方案
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统