`
AliKevin2011
  • 浏览: 116912 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JAMES组件简介

阅读更多
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.


  • James-Hupa

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

  • James-Protocols

Apache James Protocols 项目是一个轻量级高度可扩展的邮件协议框架,他可以于任何socket实现进行集成。
注:以后的协议层性能调优可以考虑用NIO或者用mina进行强化。
James应用该项目实现SMTP服务。
  • James-IMAP

Apache James IMAP 项目提供了对IMAP、简单数据访问的编码实现。
在James3中应用该项目实现了IMAP服务。
IMAP(Internet Mail Access  Protocol)(交互式邮件存取协议)IMAP是斯坦福大学在1986年开发的研发的一种邮件获取协议。它的主要作用是邮件客户端(例如MS  Outlook Express)可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等.

  • James-Mailets

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                              匹配目录服务器的命令


  • James-Mailbox

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存储方式接口如下:

  • James-Mime4j

Apache James Mime4J 提供 对MIME类型邮件数据和RFC822格式邮件的解析。

  • James-jSPF

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就很可能不属于上述两个地址段,将被判为假冒邮件。

  • James-MPT

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
分享到:
评论

相关推荐

    javamail,common-mail,james 发送邮件的三大组件

    1.javamail1.4 2.common-mail-1.1 3.james-binary-2.3.1 运用以上三种组件实现发送邮件 在发送邮件时,出现javax.mail.AuthenticationFailedException时 怎么解决,请看此。。。

    james邮件安装教程-附安装包

    James有潜力成为功能更强的应用服务器,这得益于它的组件式体系结构和mailet基础设施。mailet对e-mail 所起的作用与servlets对Web服务器的作用相似,E-mail服务器在最终发展成为Internet的DARPA出现的早期就已经很...

    delphi-james:James-Delphi项目经理

    如果您每次必须从一个项目切换到另一个项目时都看到手动安装组件并更新Delphi设置, James可能会为您提供帮助。 用法 詹姆斯有两种操作模式 加载Delphi设置 所有的Delphi设置都存储在Windows注册表中(例如已安装的...

    flex3组件和框架的生命周期

    关于Adobe flex3 组件和框架的生命周期的讲解,是作者:James Polanco & Aaron Pedersen,由我本人翻译的,如有不妥之处,请留言通知我。我的gmail帐号是:kevinlee820@gmail.com 希望与大家共同进步。

    Linux系统故障诊断与排除--James Kirkland

    这本书是James Kirkland做系统维护工作的结晶.本文档是英文版,很值得仔细研读。 本书详细介绍了Linux系统故障的诊断与排除技巧,是作者长期实践经验的结晶。全书共分15章:第1章介绍系统引导、启动和关闭问题,这是...

    LeBron James Backgrounds & New Tab-crx插件

    -卸载LeBron James-要快速卸载此附加组件,请转到浏览器设置上的“添加页面”。 选择不需要的附件,然后将其发送到垃圾箱中。 我们为自己的LeBron James背景和新标签扩展名感到非常自豪,因为它不仅是另一个背景扩展...

    wp-component-library:一个使用WordPress和可访问性构建的准系统前端组件库

    10up组件库一个基于WordPress和可访问性构建的准系统前端组件库。总览在10up,我们努力提供可提供一流用户体验的网站。 为了同时提高效率和一致性,我们需要对使用的内容和使用方式进行标准化。 通过对常用前端组件...

    react-infinite-loader:React无限加载器组件

    基于的无限加载器react组件 安装 npm install react-infinite-loader --save 用法 在列表中的项目下方添加无限加载程序组件。 在加载程序处于查看状态时,将触发onVisited事件,以供您重新加载更多数据。 查看以...

    james-mblab-clothes-female:詹姆斯的MB-实验室服装资产(女)

    这是GitHub和James的服装资产包(女性)(又名JCAP-F)的主要下载页面,这是用于Blender的精彩 (以前的ManuelBastoniLAB)附加组件的服装资产的开放包。 该项目独立于MB-Lab主项目,旨在填补MB-Lab与Daz 3D,Make...

    标记:用于注释设计的预构建组件

    标记:用于注释设计的预构建组件

    James Harden HD Wallpapers NBA All-Star Theme-crx插件

    借助我们的附加组件,每次打开新标签页时,您都会获得一整套喜欢的NBA All-Start James Harden的高清图像。 无论您是在家中PC之前还是在办公室中工作,都可以使用此功能强大的扩展程序作为个人组织者。 小部件和功能...

    Java组件课程设计-基于SpringBoot的酒店管理系统.zip

    它由Sun Microsystems(现在是Oracle Corporation)的James Gosling等人在1995年推出,被设计为一种简单、健壮、可移植、多线程、动态的语言。Java的主要特点和优势包括以下几个方面: 跨平台性(Write Once, Run ...

    pure-css:纯CSS UI组件

    纯css 纯CSS UI组件 情态的 标签 手风琴 灯箱 个人资料卡 转变 图示 进度条

    vue-g2:基于Vue和AntVG2的可视化组件库

    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参考手册

    UML的创建者James Rumbaugh、Ivar Jacobson和Grady Booch,清晰完整地讲述了UML的所有概念,包括对序列图、活动模型、状态机、组件、类和组件的内部结构以及特性描述的主要修订。手册式结构不仅有助于读者对UML的...

    bank-of-james

    运行ng generate component component-name生成一个新的组件。 您还可以使用ng generate directive|pipe|service|class|guard|interface|enum|module 。 建造 运行ng build来构建项目。 构建工件将存储在dist/目录中...

    om-inputs:通用的Om组件来处理输入

    它是如何工作的组件的解剖要构建组件,我们需要: 一个名字 ; 对领域的描述; 使用数据的回调函数; 用于自定义组件的选项。组件名称使用该名称: 作为React.js的显示名称; 区分UI中的组件。栏位说明组件的字段由...

    vue-fcr:Vue组件,用于处理表单条件渲染

    一个Vue.js表单条件渲染组件,将提供与Vue-Fcr 0.2.2类型类似的功能,目前尚处于试验阶段,代码库将经常更改,直到1.0.0 visual / dynamix示例和自定义运算符很快出现 特征 导入表单中的任何组件/元素作为输入 自动...

    jared_james_womack

    Netlify的Next.js博客模板是仅使用Netlify堆栈构建博客的样板。... 简码:使用React组件(如WordPress简码)扩展内容编写 依存关系 入门 要使用该模板创建博客,请打开终端,将cd插入要在其中创建

    :performing_arts: 一个简单的轻量级 RN 组件,在其子组件中淡出

    react-native-fade-in-view 一个简单的轻量级 RN 组件,在其子组件中淡入淡出安装 yarn add react-native-fade-in-view 或 npm install react-native-fade-in-view --save API onFadeComplete A淡入淡出动画完成时...

Global site tag (gtag.js) - Google Analytics