最近公司发布了一个JAMES邮件服务器, 第二天早一来, 发现spool里面有几万的垃圾邮件.
在网上仔细查了一下, 一般都是自定义一个matcher和一个mailet, 如:
package com.eazitour.mailet;
import java.util.Collection;
import java.util.Iterator;
import java.util.Vector;
import javax.mail.MessagingException;
import org.apache.mailet.GenericMatcher;
import org.apache.mailet.Mail;
import org.apache.mailet.MailAddress;
public class FilterSenderMatcher extends GenericMatcher {
private static String[] hosts = null;
@Override
public Collection match(Mail mail) throws MessagingException {
//System.out.println("getCondition:" + getCondition());
if (hosts == null && getCondition() != null) {
hosts = getCondition().split(",");
}
if (hosts == null || hosts.length == 0 || getCondition() == null) {
return mail.getRecipients();
}
MailAddress mailAddress = mail.getSender();
//System.out.println("mailAddress.toString():" + mailAddress.toString());
for (String strTemp : hosts) {
if (mailAddress.toString().toLowerCase().indexOf(strTemp) != -1) {
//System.out.println(mailAddress.toString().toLowerCase().indexOf(strTemp));
return mail.getRecipients();
}
}
//mail.getRecipients().clear();//code1
return null;
}
}
可发现这种做法根本就过滤不了后缀是本服务器域名的邮件, 但JAMES包下的:org\apache\james\transport\matchers很多matche是这种写法. 经过尝试, 得把code1处的注释打开才可以过滤.
正确的操作步骤:
1.编写自己的Matcher, 上面一段code(把code1处的注释打开), 和Mailet.
package com.eazitour.mailet;
import javax.mail.MessagingException;
import org.apache.mailet.GenericMailet;
import org.apache.mailet.Mail;
import org.apache.mailet.MailAddress;
public class FilterSenderMailet extends GenericMailet {
@Override
public void service(Mail mail) throws MessagingException {
// MailAddress ma = mail.getSender();
// System.out.println("sender:"+ma.toInternetAddress().toString());
}
}
2. 把这两个JAVA类打包成JAR包, 放到james-2.3.2\apps\james\SAR-INF\lib目录下, 同时也要把james-2.3.2\apps\james.sar里面的james-2.3.2.jar,mail-1.4.1.jar,mailet-2.3.jar,mailet-api-2.3.jar这些包解压出来也放到这个目录下面, 不然会报找不到类的异常.
3.修改config.xml文件, 在<mailetpackages>后面添加:<mailetpackage>com.eazitour.mailet</mailetpackage>, 在<matcherpackages>后面添加:<matcherpackage>com.eazitour.mailet</matcherpackage>, 即是刚才的那两个类的包名.
4.修改config.xml文件, 添加过滤,在<spoolmanager>下面,<mailet match="All" class="PostmasterAlias"/>的后面添加:<mailet match="FilterSenderMatcher=@eazitour.com,@eazitour.cn" class="FilterSenderMailet"/>, FilterSenderMatcher即为Mathcer的类的名字, FilterSenderMailet也mailet的类的名字, 它会在上面配置的包下面去找这两个类, 先通过matcher, 如果matcher返回的不是null的collection, 刚会下一步调用mailet; 如果matcher返回null, 但mail.getRecipients()不为null, 邮件会发送成功, 但不调用mailet, 所以code1处的注释要打开才不会发送.
OK,大功告成!
分享到:
相关推荐
开发者可以通过编写自定义Mailets来实现特定的邮件处理逻辑,如垃圾邮件过滤、自动回复等。 2. **存储机制**:James支持多种存储解决方案,包括基于文件系统的存储、RDBMS(关系数据库管理系统)存储如MySQL或...
对于更复杂的需求,可以利用James的插件系统添加新的功能,如反垃圾邮件插件、邮件过滤插件等。 总的来说,James邮件服务器是一个强大且灵活的开源解决方案,适合那些需要高度自定义邮件服务的企业或个人。其全Java...
5. **反垃圾邮件功能**:James包含了一些内置的反垃圾邮件措施,如RBL查询(Real-time Blackhole List)和SPF(Sender Policy Framework)检查,帮助保护服务器免受垃圾邮件的侵扰。 6. **多语言支持**:James支持...
5. **反垃圾邮件**:James包含了一些反垃圾邮件的策略,如RBL(Real-time Blackhole List)查询,以阻止来自已知垃圾邮件源的邮件。 6. **邮件过滤和转发**:用户可以配置规则,对收到的邮件进行过滤,如自动归档、...
5. **反垃圾邮件和防病毒**:James可以集成第三方反垃圾邮件和防病毒解决方案,以保护邮件系统不被恶意软件或垃圾邮件侵扰。 6. **Web管理界面**:James提供了一个基于Web的管理界面,允许管理员远程监控和管理...
2. **可扩展性**:James是基于组件模型设计的,允许用户根据需求添加或替换不同的邮件处理模块,例如垃圾邮件过滤、病毒扫描等。 3. **安全机制**:通过SSL/TLS加密,James确保了邮件传输过程中的安全性,防止数据...
比如,可以设置自动垃圾邮件过滤、邮件自动转发等功能。 - **邮件自动化任务**:通过编程方式调用Javamail API,可以实现邮件自动发送功能。比如,定期发送工作报告、订阅邮件等场景。 #### 总结 通过使用James和...
同时,它提供了多种认证机制,包括基于用户名和密码的认证、LDAP集成以及SPF和DKIM等反垃圾邮件策略,以防止未经授权的访问和恶意邮件。 ### 配置与管理 James邮件服务器的配置文件是XML格式,易于理解和修改。...
6. **可扩展性**:James设计为模块化,可以添加自定义插件来扩展其功能,例如垃圾邮件过滤、邮件归档等。 7. **安全特性**:支持SSL/TLS加密,确保邮件传输的安全性,同时可以通过防火墙规则和认证机制来增强服务器...
James 提供了一些基本的反垃圾邮件措施,如RBL(Real-time Blackhole List)查询和SPF(Sender Policy Framework)检查。此外,可以集成第三方的防病毒解决方案,如ClamAV,保护邮件系统免受恶意软件的侵害。 7. *...
10. **JAMES服务器的高级特性**:除了基本的邮件服务,James还提供了如虚拟域、邮件过滤、邮件队列管理、垃圾邮件防护等高级特性,这些可以在实际项目中进一步探索和应用。 在学习过程中,通过实践编写发送和接收...
- **API扩展**:James提供了丰富的Java API,允许开发者自定义插件,扩展其功能,如添加新的邮件过滤规则、报告系统等。 **3. 安全性与稳定性** James服务器重视安全性,采用SSL/TLS加密确保邮件传输的安全。此外...
5. **垃圾邮件过滤**:James提供了一些基本的反垃圾邮件策略,如RBL(Real-time Blackhole List)检查,可以阻止来自黑名单IP的邮件。根据需要,可以启用或调整这些设置。 6. **日志配置**:为了便于故障排查和性能...
James提供了强大的反垃圾邮件和防病毒功能,可以集成第三方过滤器以增强安全性。 2. **POP3和IMAP4服务**:对于邮件接收,James支持POP3和IMAP4协议。POP3允许用户下载邮件到本地客户端,而IMAP4则让用户在邮件...
【垃圾邮件过滤技术】 垃圾邮件过滤是一种用于保护用户免受不请自来的、无关或有害的电子邮件侵扰的技术。这种技术通常通过多种方法来识别并阻止垃圾邮件,包括使用白名单和黑名单、规则过滤、内容扫描以及文本分类...
Mailets是可重用的邮件处理单元,可以执行各种任务,如垃圾邮件过滤、病毒扫描、邮件转发等。在`conf/mailetcontainer.conf`中定义Mailets的配置,决定哪些Mailets将在哪个阶段处理邮件。 **用户管理** James提供...
5. **集成其他服务**:James可以与其他开源项目集成,如Apache Directory Server用于用户认证,或者与SpamAssassin等反垃圾邮件工具配合,提高邮件过滤效果。 6. **配置和管理**:James提供了一个基于Web的管理界面...
6. **反垃圾邮件和过滤**:James 提供了一些基本的反垃圾邮件功能,如 RBL(拒绝黑名单)检查,以及可扩展的过滤规则,可以根据需要定制垃圾邮件防护策略。 7. **管理界面**:James 提供了一个基于 Web 的管理界面...