james简介和配置
- 格式:doc
- 大小:85.50 KB
- 文档页数:7
James邮件服务器简介与配置一.J ames简介Java Apache邮件服务器一般是指Apache组织开发的James,它是一个轻便的、安全的100%纯Java实现的邮件服务器。
不仅如此James还可以提供更多的功能,感谢James给我们提供了插件化协议架构和mailet底层构造,它可以让我们利用web服务器的servlets处理邮件。
Email服务到处都是,开始是DARPA(国防部高级研究计划局)的一个计划并最终发展为Internet,但是James成为了打破这一传统规则的第一个应用。
The Java Apache 企业邮件服务器(a.k.a. Apache James)是一个100%用Java实现的SMTP 和POP3邮件服务器,同时,他还实现了NNTP新闻服务器的功能。
James被设计成一个完整的、可移植的企业邮件引擎解决方案,他完全基于目前可用的开放性协议。
James还是一个邮件应用平台。
Apache组织提供了一套Java API-mailet API,利用mailet API,可以根据自己的需要用Java语言编写代码来对邮件进行个性化的处理。
mailet可以生成一个自动回复,更新数据库,阻止垃圾邮件,建立消息档案,或者任何我们能想像的到的功能。
与mailet 密切相关的是消息适配器(matcher),一个消息适配器可以判断mailet是否要对服务器中的一个邮件进行处理。
James项目提供了Mailet API和一个邮件应用平台API的实现。
他建立在Apache Avalon 应用框架(关于Avalon -/)的基础之上。
二、J ames组成James是一个支持多种协议的消息处理和存储引擎,目前由以下几个部分组成:1.两个邮件服务器(SMTP和POP3)2.一个远程管理服务器3.一个NNTP服务器4.一个支持Mailet API的邮件处理引擎5.一个文件系统消息存储机制和一个关系型数据库消息存储机制接口6.文件系统用户记录存储机制和一个试用的LDAP目录存储接口7.支持POP3和远程管理的TLS(SSL)连接8.支持SMTP认证三、James的设计目标James被设计为实现几个确定的目标。
比如它完全使用Java开发以便适应最大的轻便行;它提供了很多安全特性用于保护服务器的运行环境安全还提供了安全服务。
James是多线程的,它使用了很多Avalon架构提供的功能。
James提供了完善的服务,包括一个完全可以运行的Email服务器。
这些服务主要是有Macther和MailetAPI实现的,这两个API提供了Email检查和处理功能。
James支持标准的email协议(SMTP,POP3,IMAP),另外还提供了一些附加功能,它使用了松散耦合的插件设计方式使消息框架从协议中抽象出来。
这种设计方式非常有用,你可以把James当作一个通常的消息服务器或者为即时消息传输提供支持。
James一个更重要的设计目标是提出了mailet概念,mailet提供了一个开发邮件应用程序的完整生命周期。
当然你也可以在这里使用其他MTA(邮件传输代理),比如SendMail,要这样作的话你需要提供一个可调用的程序然后将数据传送给它来完成工作,不过,James 提供了一套更简单、通用的API来完成这些工作。
下面让我们来更进一步的了解Matcher和MailetAPI。
四、James的安装与配置1. 准备环境1)到Apache官网(/)上下载最新版本的James,我下载的是apache-james-2.3.2.zip。
2)到oracle官网上下载最新版的jdk,下载地址是:(/javase/downloads/index.jsp)。
3)将下载好的jdk安装,并解压下载好的apache-james-2.3.2.zip。
2. 系统环境变量的配置1)新建系统环境变量JAVA_HOME = C:\Program Files\Java\jdk1.6.0_25。
2)新建系统环境变量PATH = %JAVA_HOME%\bin;3)新建系统环境变量CLASSPATH = %JAVA_HOME%\lib;,;3. 启动james1)启动方式\james-2.3.2\bin\run.bat2)启动成功后的界面如图1.0图1.0 james运行界面3)关闭的时候可以采用ctrl + C4. james 系统环境配置1)James的三种数据存储方式a)File 以文件方式储存b)Db 以数据库c)Dbfile 消息头用数据库方式存放,把消息体用文件方式存放2)找到james配置文件\james-2.3.2\apps\james\SAR-INF\config.xml(如果没有这个文件请先运行james程序)3)修改James Server 主机名称默认的是localhosta)原配置<postmaster>Postmaster@localhost</postmaster><servernames autodetect="true" autodetectIP="true"><servername>localhost</servername></servernames>b)新配置<postmaster>Postmaster@</postmaster><servernames autodetect="true" autodetectIP="true"><servername></servername></servernames>c)参数说明Autodetect :如果该属性为true 则采用自己的主机名和用户明确指定的服务器名称。
否则只采用用户指定的服务器名称。
autodetectIP :如果该属性为true ,服务器允许为每个servername添加ip地址4)添加DNS Server:(配置域名服务器,默认的是127.0.0.1)a)原配置<dnsserver><servers></servers><autodiscover>true</autodiscover><authoritative>false</authoritative><maxcachesize>50000</maxcachesize></dnsserver>b)新配置<dnsserver><servers><server>127.0.0.1</server></servers><autodiscover>true</autodiscover><authoritative>false</authoritative></dnsserver>5)采用SMTP认真方式a)注释掉(或删除掉):<mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor"> <processor> relay-denied </processor><notice>550 - Requested action not taken: relaying denied</notice> </mailet>b)开启SMTP Server 身份验证<smtpserver enabled="true">……<authRequired>true</authRequired>……</smtpserver>6)修改用户名和密码a) 原配置<remotemanager enabled="true">……<account login="root" password="root"/>……</remotemanager>b)新配置<remotemanager enabled="true">……<account login="username" password="123456"/>……</remotemanager>7)修改邮件信息存储位置解释:spool里面是存放的正在处理的信件,而inbox里面是存放的已发送邮件。
数据库描述文件放在:\james-2.1.3\apps\james\conf\sqlresources.xml 下面以MySql为例配置Jamesa)用户信息存储位置修改1.注释掉<users-store><!--<repository name="LocalUsers"class="ersFileRepository"><destination URL="file://var/users/"/></repository>--></users-store>2.取消注释部分<users-store><repository name="LocalUsers"class="errepository.JamesUsersJdbcReposi tory" destinationURL="db://maildb/users"><sqlFile>file://conf/sqlResources.xml</sqlFile></repository></users-store>b)日志信息存到数据库中1.原配置<processor name="error"><mailet match="All" class="ToRepository"><repositoryPath> file://var/mail/error/</repositoryPath><!--<repositoryPath> db://maildb/deadletter/error </repositoryPath>--></mailet></processor>*******************************************************<spoolrepository destinationURL="file://var/mail/spool/" type="SPOOL"/><!--<spoolrepository destinationURL="db://maildb/spool/spool" type="SPOOL"/>-->2.新配置<processor name="error"><mailet match="All" class="ToRepository"><!--<repositoryPath> file://var/mail/error/</repositoryPath>--><repositoryPath> db://maildb/deadletter/error </repositoryPath></mailet></processor>*******************************************************<!--<spoolrepository destinationURL="file://var/mail/spool/" type="SPOOL"/>--><spoolrepository destinationURL="db://maildb/spool/spool" type="SPOOL"/>c)配置正在处理的邮件信息到数据库1.原配置<mailet match="All" class="RemoteDelivery"><outgoing> file://var/mail/outgoing/ </outgoing><!--<outgoing> db://maildb/spool/outgoing </outgoing>-->……</mailet>2.新配置(去掉数据库的注释)<mailet match="All" class="RemoteDelivery"><!--<outgoing> file://var/mail/outgoing/ </outgoing>--><outgoing> db://maildb/spool/outgoing </outgoing>……</mailet>d)配置数据库连接(不要忘了将数据库驱动添加到james-2.3.2\lib包下面)取消下面的注释(要现在数据库中新建一个mail数据库)1.原配置<database-connections><!--<data-source name="maildb"class="org.apache.james.util.dbcp.JdbcDataSource"><driver>com.mysql.jdbc.Driver</driver><dburl>jdbc:mysql://127.0.0.1/mail?autoReconnect=true</dburl><user>username</user><password>password</password><max>20</max></data-source>--></database-connections>2.新配置<database-connections><data-source name="maildb"class="org.apache.james.util.dbcp.JdbcDataSource"><driver>com.mysql.jdbc.Driver</driver><dburl>jdbc:mysql://127.0.0.1/mail?autoReconnect=true</dburl><user>username</user><!—自己数据库的用户名--><password>password</password><!—自己数据库的密码--><max>20</max></data-source></database-connections>e)配置收件箱到数据库取消这段代码的注释<inboxRepository><repository destinationURL="db://maildb/inbox/" type="MAIL"/> </inboxRepository>注释掉<!--<inboxRepository><repository destinationURL="file://var/mail/inboxes/" type="MAIL"/> </inboxRepository>-->5.添加用户信息1. 在命令提示符中输入telnet localhost 4555 回车注意:(在Windows 7下安装Telnet和Windows Server 2008略有不同,大家可以通过下面的操作方法实现。