JAMES组件简介

[quote="AliKevin"]
The Apache James Project delivers a rich set of open source modules and libraries, written in Java, related to Internet mail communication which build into an advanced enterprise mail server.
[/quote]

[list]
[*][b]James-Hupa[/b]
[/list]
Apache James Hupa 是基于交互式邮件存取协议之上的GWT开发包,我们可以基于GWT进行WebMail的开发。
插件:[开发插件|http://dl.google.com/eclipse/plugin/3.7]
注:IMAP(Internet Mail Access Protocol)(交互式邮件存取协议)IMAP是斯坦福大学在1986年开发的研发的一种邮件获取协议。它的主要作用是邮件客户端(例如MS Outlook Express)可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等

[list]
[*][b]James-Protocols[/b]
[/list]
Apache James Protocols 项目是一个轻量级高度可扩展的邮件协议框架,他可以于任何socket实现进行集成。
注:以后的协议层性能调优可以考虑用NIO或者用mina进行强化。
James应用该项目实现SMTP服务。
[list]
[*][b]James-IMAP[/b]
[/list]
Apache James IMAP 项目提供了对IMAP、简单数据访问的编码实现。
在James3中应用该项目实现了IMAP服务。
IMAP(Internet Mail Access Protocol)(交互式邮件存取协议)IMAP是斯坦福大学在1986年开发的研发的一种邮件获取协议。它的主要作用是邮件客户端(例如MS Outlook Express)可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等.

[list]
[*][b]James-Mailets[/b]
[/list]
Apache James Mailets 项目为james提供了操作mail的可扩展开发的API,它为开发e- mail应用程序提供了一个基于组件生命周期和容器的解决方案。类似于servlet,mailet程序可以部署到任何mailet容器中。
James 的很多特性是通过Mailet API 实现的,熟悉Servlet API的开发者可能会觉得奇怪,它看起来很眼熟。Mailet接口支持两个生命周期方法,一个提供初始化(init() 方法),一个停止服务(destroy() 方法)。还有两个返回信息的方法,getMailetInfo(), 返回一个包含作者、版本、该mailet的版权等信息的字符串对象,getMailetConfig()很实用,它返回mailet的配置信息。init()方法有一个MailetConfig对象作为参数,虽然这个对象可能被修改,但它通常是由getMailetConfig()提供的。
The Mailet 接口

public interface Mailet
{
void init(MailetConfig config);
void destroy();
String getMailetInfo();
MailetConfig getMailetConfig();
void service(Mail mail);
}

services() 方法以一个Mail 对象为参数,完成主要的处理工作。Maile对象提供了对容器状态、邮件消息和要进行处理的元数据的访问。
表格2是James已有的mailet实现的列表,它可以给你一个James支持的特性和已有的mailet应用程序的类型的概念。
1. James自带的 mailets,如下:
[table]
|Mailet Description|
|Null 结束e-mail消息的处理|
|AddHeader 给消息内容加一个文本的头信息|
|AddFooter 给消息内容加一个文本的脚信息|
|Forward 将消息转发给列表中的接收者|
|Redirect 提供可配置的转发服务|
|ToProcessor 将e-mail处理转发给一个指定的处理器|
|ToRepository 将消息复制到指定的目录下|
|NotifySender 将消息作为附件转发给原始的发送者|
|NotifyPostmaster 将消息作为附件转发给postmaster|
|RemoteDelivery 管理SMTP主机的发送|
|LocalDelivery 将消息发送到本地邮箱|
|JDBCAlias 使用JDBC数据源进行别名翻译|
|JDBCVirtualUserTable 使用JDBC数据源进行更复杂的别名翻译|
|UseHeaderRecipient 从消息的头信息中重建邮件的接收者|
|ServerTime 发送一个带有服务器时间戳的消息|
|PostmasterAlias 将 postmaster@ 的消息转发到一个个人的地址中|
|AddHabeasWarrantMark 给消息添加一个Habeas Warrant标记|
|AvalonListserv 提供一个基本的目录服务器功能|
|AvalonListservManager 处理目录服务器的管理命令|
[/table]

从这个列表可以看出,有几个James所支持的特性要归功于Mailet API,包括复杂的目录服务器支持、别名、存储和路由能力。

2.James-MatchersAPI也是James的重要成员, James自带了一些标准的匹配器(matchers)。它们全都实现了Matcher API:
James自带的匹配器(matchers)
[table]
|Matcher Description|
|All 匹配所有的e-mail并返回所有的接收者|
|HasHeader 匹配含有指定的头信息的消息|
|HasAttachment 匹配带有附件的消息|
|SubjectStartsWith 匹配标题以指定的文本开头的消息|
|SubjectIs 匹配含有指定的标题消息|
|HostIs 匹配来自指定的主机的消息|
|HostIsLocal 匹配本机产生的消息|
|UserIs 匹配指定的用户的消息|
|SenderIs 匹配指定的发送者的消息|
|SenderInFakeDomain 匹配发送者的主机地址不能解析的消息|
|SizeGreaterThan 匹配比指定的限制大的消息|
|Recipients 匹配接收者在指定的列表中的消息|
|RecipientsLocal 匹配接收者在本地的消息|
|IsSingleRecipient 匹配仅有一个接收者的消息|
|RemoteAddrInNetwork 匹配来自指定的IP地址、域等列表的消息|
|RemoteAddrNotInNetwork 匹配不是来自指定的IP地址、域等列表的消息|
|RelayLimit 匹配转发次数大于指定的服务器数的消息。|
|InSpammerBlackList 与mail-abuse.org提供的列表中的地址匹配|
|NESSpamCheck 采用得自Netscape Mail Server的方法匹配垃圾邮件|
|HasHabeasWarrantMark 采用Habeas Warrant匹配邮件|
|FetchedFrom 与FetchPOPMatches所用的 X-fetched-from 头信息匹配 |
|CommandForListserv 匹配目录服务器的命令|
[/table]

[list]
[*][b]James-Mailbox[/b]
[/list]
Apaehe James Mailbox项目是一为各种邮件协议提供灵活存储和访问管理的API。目前支持MailDir, Database (via JPA) and JCR等存储。
James的Repository机制灵活,以Spring的注入方式可以任意配置扩展。

目前支持的Repository
1.JPA:DB
2.MailDir:File System,MUA(MAIL USER AGENT)An MUA can read and delete messages while new mail is being delivered: each message is stored in a separate file with a unique name, so it isn't affected by operations on other messages. An MUA doesn't have to worry about partially delivered mail: each message is safely written to disk in the tmp subdirectory before it is moved to new. The maildir format is reliable even over NFS
3.Jcr:(jackrabbit)Jackrabbit is content repository,it is a fully conforming implementation of the Content Repository for Java Technology API (JCR, specified in JSR 170 and 283).
A content repository is a hierarchical content store with support for structured and unstructured content, full text search, versioning, transactions, observation, and more.
4.memeory
5.queue

JAMES-Mailbox存储方式接口如下:
[img]http://dl.iteye.com/upload/attachment/555762/86fd4642-5561-3155-953f-35f40d75c1dd.jpg[/img]
[list]
[*][b]James-Mime4j[/b]
[/list]
Apache James Mime4J 提供 对MIME类型邮件数据和RFC822格式邮件的解析。

[list]
[*][b]James-jSPF[/b]
[/list]
Apache James jSPF是SPF规范的Java实现.jSPF是一种防止伪造email的发件人地址,从服务器端防止垃圾邮件的一种规范。反欺诈的实现。
SPF:寄件人来源认定,在SPF体系中,每个需要发送电子邮件的企业在其对外发布的DNS域名记录中,列出自己域名下需要发送邮件的所有IP地址段;
而接收到邮件的服务器则根据邮件中发件人所属的域名,查找该企业发布的合法IP地址段,再对照发送邮件的机器是否属于这些地址段,就可以判别邮件是否伪造的。
SPF规范|[url]http://mail.zsnc.net:1080/aboutspf.htm[/url]
例如:邮箱kevin@126.com的用户通过126.com的邮件服务器220.181.15.43向我们的邮件系统发信,我们通过域名解释服务查找域名126.com发布的IP地址段,发现有两条:220.181.12.0/22和202.108.5.0/24,包含220.181.15.43,因此判定这封邮件是真实的;假如该用户从其他地址发送邮件,那么我们探测到的发件机器IP就很可能不属于上述两个地址段,将被判为假冒邮件。

[list]
[*][b]James-MPT[/b]
[/list]
Apache James Mail Protocol Tester (MPT) is a framework for the scritable functional testing of ASCII based line protocols
James-Postage
Apache James Postage 是一个对支持 POP3 and SMTP.邮件协议的邮件服务器进行测试的框架。
Postage 可以记录James 的资源情况,发现资源瓶颈。如发现内存泄露。

[list]
[*][b]本篇结束.[/b]
[/list]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值