如何用apachejames做简单的垃圾邮件过滤网关?
如何用apachejames做简单的垃圾邮件过滤网关?
网络环境如下: 三台服务器。 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();。
答:现在一般的邮件服务提供商的WEB邮件系统中都有“过滤垃圾邮件”设置的功能,你只需要到相关的页面按照提示一步一步的操作就可以了,一般都是把你要过滤掉的邮件来源地址...详情>>
问:同事ip:10.101.107.28 我的IP:10.101.104.23我们在...
答:你们公司是WINDOWS域环境吗,如果是的话,你在网上邻居里应该能看到对方的主机。让她把文件夹共享出来就可以。 如果不是WINDOWS域,那得看你们是不是在一个...详情>>
问:数据结构顺序表的建立,可定义顺序表 #define maxnum elemtyp...
答:打开VC ,然后点击新建,出来界面之后选择Win32 Console Application并输入工程的名称和选择项目的位置,然后出现“一个空工程”,在点击“...详情>>