Java Apache 企业邮件服务(又名:Apache James) 是利用纯java编写的,支持SMTP和POP3邮件服务和NNTP新闻服务,是完整和便携的企业级邮件引擎解决方案。James当前基于可用的开放协议。
James Server也是一个邮件应用平台。James工程同时开发Apache Mailet API,并且James Server 是一个Mailet容器,这点使得邮件处理更容易设计,编写和部署自定义的应用程序。模块化和自定义是James的优点,它允许管理员去创建强大易用的应用程序。
James构建在Avalon Application Framework,这个框架促进了许多开发实践,例如面向组件开发和IOC。James囊括了Phoenix Avalon Framework container,它为James server奠定了强大和稳定的基础。
这篇文档介绍了James的概念和James的实现,还有安装、配置手册,为开发人员build James Server。
I. James 概念
摘要(summary):
--The James Server
James 是一个开源项目,为了创建一个坚固,灵活,强大的企业类服务,并可提供邮件和邮件相关的服务.也被设计为高可定制性,允许管理员去灵活配置James.
James Server 是构建在Avalon Framework上的.标准的James发行版本包括了Phoenix Avalon Framework 容器.除了为James提供坚固的服务架构,Phoenix 的使用允许James管理员去部署它们自己的应用程序到容器中.这些应用程序在邮件处理过程中能被调用.
James server的实现由一些完整的服务集合和相关的组件构成,集成在一起,实现邮件解决方案.这些组件描述如下.
--POP3 Service
POP3 协议允许用户去获取邮件消息,普遍用于客户端下载和管理邮件信息.
James是POP3服务的一个简单直接实现,它与规范一致并且最大化兼容通用的POP3客户端.此外,James能让POP3客户端使用SSL/TLS连接.
--SMTP Service
SMTP是在internet上发送和转移emali的标准方法.James提供基于SMTP规范所有功能的实现,支持一些可选特性,例如消息大小限制,SMTP验证,加密的 客户/服务器 通信.
--NNTP Service
NNTP用于客户端从新闻服务器存储和获取消息.James通过实现NNTP规范实现了服务的交互,还有为存储新闻消息所提供的仓库.James简单和直接的实现,但支持一些额外的特性,例如NNTP验证,加密的 客户/服务器 通信.
--FetchMail
FetchMail ,不像其他的James组件,这不是一个RFC的实现.然而,这个组件允许管理去配置James,能够从更多的POP3服务获取Email和转移邮件到本地.这方便在不同的机器上的多个账户合并邮件转移到一个用户(This is useful for consolidating mail delivered to a number of accounts on different machines to a single account.)
---The SpoolManager, Matchers, and Mailets
当James处理收来的邮件时,James从引擎上区分不同的服务(SMTP,FecthMail)来转移邮件.SpoolManager 组件是James的邮件处理引擎.James的SpoolManager组件是一个Mailet容器,It is these mailets and matchers that actually carry out mail processing.
--Repositories
James有许多不同的仓库去存储消息数据(email,news messages) 和用户信息.用户仓库存储用户信息,包括用户名验证信息和别名.邮件仓库存储已被转移的消息.Spool仓库存储正在被处理的消息.最后,新闻仓库被用作存储新闻消息.另外,他们存储什么类型的数据,仓库以数据存储在什么地方来区分.有3种存储类型--File,Database 和DBFile.
--RemoteManager
James提供一个简单的telnet-base 控制接口,通过这个接口你能添加和删除用户,配置每个用户的别名和forward addresses和停止服务.
一个驻扎在天津的普通程序员,当个PM,TL,CODER 就是没有当过CEO。
My idiom:Where there is a will,there is a way!
注:加班写作,转载请著名出处!!