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.
Apache James Hupa 是基于交互式邮件存取协议之上的GWT开发包,我们可以基于GWT进行WebMail的开发。
插件:[开发插件|http://dl.google.com/eclipse/plugin/3.7]
注:IMAP(Internet Mail Access Protocol)(交互式邮件存取协议)IMAP是斯坦福大学在1986年开发的研发的一种邮件获取协议。它的主要作用是邮件客户端(例如MS Outlook Express)可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等
Apache James Protocols 项目是一个轻量级高度可扩展的邮件协议框架,他可以于任何socket实现进行集成。
注:以后的协议层性能调优可以考虑用NIO或者用mina进行强化。
James应用该项目实现SMTP服务。
Apache James IMAP 项目提供了对IMAP、简单数据访问的编码实现。
在James3中应用该项目实现了IMAP服务。
IMAP(Internet Mail Access Protocol)(交互式邮件存取协议)IMAP是斯坦福大学在1986年开发的研发的一种邮件获取协议。它的主要作用是邮件客户端(例如MS Outlook Express)可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等.
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,如下:
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 处理目录服务器的管理命令 |
从这个列表可以看出,有几个James所支持的特性要归功于Mailet API,包括复杂的目录服务器支持、别名、存储和路由能力。
2.James-MatchersAPI也是James的重要成员, James自带了一些标准的匹配器(matchers)。它们全都实现了Matcher API:
James自带的匹配器(matchers)
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 匹配目录服务器的命令 |
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存储方式接口如下:
Apache James Mime4J 提供 对MIME类型邮件数据和RFC822格式邮件的解析。
Apache James jSPF是SPF规范的Java实现.jSPF是一种防止伪造email的发件人地址,从服务器端防止垃圾邮件的一种规范。反欺诈的实现。
SPF:寄件人来源认定,在SPF体系中,每个需要发送电子邮件的企业在其对外发布的DNS域名记录中,列出自己域名下需要发送邮件的所有IP地址段;
而接收到邮件的服务器则根据邮件中发件人所属的域名,查找该企业发布的合法IP地址段,再对照发送邮件的机器是否属于这些地址段,就可以判别邮件是否伪造的。
SPF规范|
http://mail.zsnc.net:1080/aboutspf.htm
例如:邮箱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就很可能不属于上述两个地址段,将被判为假冒邮件。
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 的资源情况,发现资源瓶颈。如发现内存泄露。
- 大小: 103.9 KB
分享到:
相关推荐
1.javamail1.4 2.common-mail-1.1 3.james-binary-2.3.1 运用以上三种组件实现发送邮件 在发送邮件时,出现javax.mail.AuthenticationFailedException时 怎么解决,请看此。。。
James有潜力成为功能更强的应用服务器,这得益于它的组件式体系结构和mailet基础设施。mailet对e-mail 所起的作用与servlets对Web服务器的作用相似,E-mail服务器在最终发展成为Internet的DARPA出现的早期就已经很...
如果您每次必须从一个项目切换到另一个项目时都看到手动安装组件并更新Delphi设置, James可能会为您提供帮助。 用法 詹姆斯有两种操作模式 加载Delphi设置 所有的Delphi设置都存储在Windows注册表中(例如已安装的...
关于Adobe flex3 组件和框架的生命周期的讲解,是作者:James Polanco & Aaron Pedersen,由我本人翻译的,如有不妥之处,请留言通知我。我的gmail帐号是:kevinlee820@gmail.com 希望与大家共同进步。
这本书是James Kirkland做系统维护工作的结晶.本文档是英文版,很值得仔细研读。 本书详细介绍了Linux系统故障的诊断与排除技巧,是作者长期实践经验的结晶。全书共分15章:第1章介绍系统引导、启动和关闭问题,这是...
-卸载LeBron James-要快速卸载此附加组件,请转到浏览器设置上的“添加页面”。 选择不需要的附件,然后将其发送到垃圾箱中。 我们为自己的LeBron James背景和新标签扩展名感到非常自豪,因为它不仅是另一个背景扩展...
10up组件库一个基于WordPress和可访问性构建的准系统前端组件库。总览在10up,我们努力提供可提供一流用户体验的网站。 为了同时提高效率和一致性,我们需要对使用的内容和使用方式进行标准化。 通过对常用前端组件...
基于的无限加载器react组件 安装 npm install react-infinite-loader --save 用法 在列表中的项目下方添加无限加载程序组件。 在加载程序处于查看状态时,将触发onVisited事件,以供您重新加载更多数据。 查看以...
这是GitHub和James的服装资产包(女性)(又名JCAP-F)的主要下载页面,这是用于Blender的精彩 (以前的ManuelBastoniLAB)附加组件的服装资产的开放包。 该项目独立于MB-Lab主项目,旨在填补MB-Lab与Daz 3D,Make...
标记:用于注释设计的预构建组件
借助我们的附加组件,每次打开新标签页时,您都会获得一整套喜欢的NBA All-Start James Harden的高清图像。 无论您是在家中PC之前还是在办公室中工作,都可以使用此功能强大的扩展程序作为个人组织者。 小部件和功能...
它由Sun Microsystems(现在是Oracle Corporation)的James Gosling等人在1995年推出,被设计为一种简单、健壮、可移植、多线程、动态的语言。Java的主要特点和优势包括以下几个方面: 跨平台性(Write Once, Run ...
纯css 纯CSS UI组件 情态的 标签 手风琴 灯箱 个人资料卡 转变 图示 进度条
vue-g2 |基于和的可视化组件库在vue-cli中使用1.安装依赖可以通过npm添加依赖npm i @antv/g2@3.5.15 @antv/data-set@0.9.6 vue-g2 --save或者通过yarn添加依赖yarn add @antv/g2@3.5.15 @antv/data-set@0.9.6 vue-g...
UML的创建者James Rumbaugh、Ivar Jacobson和Grady Booch,清晰完整地讲述了UML的所有概念,包括对序列图、活动模型、状态机、组件、类和组件的内部结构以及特性描述的主要修订。手册式结构不仅有助于读者对UML的...
运行ng generate component component-name生成一个新的组件。 您还可以使用ng generate directive|pipe|service|class|guard|interface|enum|module 。 建造 运行ng build来构建项目。 构建工件将存储在dist/目录中...
它是如何工作的组件的解剖要构建组件,我们需要: 一个名字 ; 对领域的描述; 使用数据的回调函数; 用于自定义组件的选项。组件名称使用该名称: 作为React.js的显示名称; 区分UI中的组件。栏位说明组件的字段由...
一个Vue.js表单条件渲染组件,将提供与Vue-Fcr 0.2.2类型类似的功能,目前尚处于试验阶段,代码库将经常更改,直到1.0.0 visual / dynamix示例和自定义运算符很快出现 特征 导入表单中的任何组件/元素作为输入 自动...
Netlify的Next.js博客模板是仅使用Netlify堆栈构建博客的样板。... 简码:使用React组件(如WordPress简码)扩展内容编写 依存关系 入门 要使用该模板创建博客,请打开终端,将cd插入要在其中创建
react-native-fade-in-view 一个简单的轻量级 RN 组件,在其子组件中淡入淡出安装 yarn add react-native-fade-in-view 或 npm install react-native-fade-in-view --save API onFadeComplete A淡入淡出动画完成时...