Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->网络应用 ->邮件服务器 ->正文

企业级邮件服务器Apache James介绍(1)

来源:Linuxdby.com 作者:Webmaster 时间:2007-05-31 点击: [收藏] [投稿]

列表6. JamesConfigTest运行时的输出
===========================================

Clear INBOX for red@localhost

Clear INBOX for green@localhost

Clear INBOX for blue@localhost

SENDING message from red@localhost to blue@localhost

SENDING message from green@localhost to blue@localhost

Show and Clear INBOX for blue@localhost
From: green@localhost
Subject: Testing blue from green
Content: This is a test message

From: red@localhost
Subject: Testing blue from red
Content: This is a test message
===========================================
这表明我们的James安装是成功的;在进行开发之前你需要按这种方式设置你的系统。然而,我们在这个系列的第二部分之前不会谈论到开发的问题。在这篇文章的剩余部分,我们将研究一下Matcher和Mailet API,以及随James发布版本一起提供的现成的匹配器和mailets。我们还将快速浏览一下James支持的其它特性。
匹配器
James自带了一些标准的匹配器(matchers)。它们全都实现了Matcher API,如列表7所示,并且提供了现有的MTA一般都有的功能,还提供了一些实用的扩展功能。这个接口非常简单;它包含了一对生命周期方法,init() 和 destroy() ,还有一对记录方法getMatcherInfo() 和 getMatcherConfig(),以及一个主方法,match() ,对Mail对象进行操作。Mail引用提供了容器状态的访问、邮件消息和要进行操作的元数据。
列表7. The Matcher 接口
===========================================

public interface Matcher
{
void init(MatcherConfig config);
void destroy();
String getMatcherInfo();
MatcherConfig getMatcherConfig();
Collection match(Mail mail);
}
===========================================
匹配器的任务是识别一组接收者,并返回一个代表要被mailet处理的接收者的字符串对象集合。通过结合匹配器的识别能力和mailet的处理能力,可以开发出复杂的e-mail消息处理应用程序。
随James一起发布的匹配器使你无需开发自己的匹配器就能做一些事情。在决定开始开发自己的匹配器之前最好先了解一下这些已有的匹配器。通常的情况下,你想做的工作可能已经帮你做好了。你可以在表格1中看到这些已有的匹配器:
表格 1. 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 匹配目录服务器的命令

正如你在表中所看到的,你不用编写任何新的代码就可以完成很多任务了,包括诸如匹配头、主题、接收者这样的原子级任务,以及像检测垃圾邮件和处理目录服务器命令这样的高层任务。
Mailets
James' 的很多特性是通过列表8中Mailet API 实现的,熟悉Servlet API的开发者可能会觉得奇怪,它看起来很眼熟。与Matcher API一样,Mailet接口支持两个生命周期方法,一个提供初始化(init() 方法),一个停止服务(destroy() 方法)。还有两个返回信息的方法,getMailetInfo(), 返回一个包含作者、版本、该mailet的版权等信息的字符串对象,getMailetConfig()很实用,它返回mailet的配置信息。init()方法有一个MailetConfig对象作为参数,虽然这个对象可能被修改,但它通常是由getMailetConfig()提供的。
列表 8. 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应用程序的类型的概念。
表格2. 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数据源进行更复杂的别名翻译

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:如何用Apache James把E-mail从内网(内部局域网)发到外网(如263.net,hotmail.com)   下一篇:用apache james做简单的垃圾邮件过滤网关

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号