资源描述
POP3服务受config.xml文件中的pop3server配置块控制。pop3server标签定义了配置块的边界, 它包含所有POP3服务器的相关配置。这个标签的属性或其子标签决定了POP服务的行为。
这个标签有一个可选的布尔属性- enabled -定义了这个服务是否处于活动状态。如果该属性不存在,则取默认值“true”。
pop3server标准的子标签是:
port -可选的整型值,配置POP3服务器在哪个端口上监听。如果这个标签或它的值被忽略了, 则取默认的标准POP3端口-110。
bind – 可选值,描述绑定该服务的IP地址,是一个字符串值。 如果这个标签或它的值没有出现,则该服务将绑定到机器的所有网络接口。
useTLS
- 可选的布尔值,如果其值为“true”,使用“ssl”服务器socket接口工厂
为这个服务生成服务器socket连接。否则使用“plain”服务器socket工厂。但无论该值为什么,如果配置文件中存在
下面专家配置选项中所讨论的serverSocketType标签,该行为最终都由serverSocketType标签的值决定。
handler – 这是一个保持向后兼容性的工艺品,它只是将一些相关的参数放到一组中。 在将来的版本中这个标签应该会被去掉。
helloName
-这是一个必需的标签,它的值定义了用于服务启动时的问候语中的服务器名,但它的值是可选的。 这个标签可能会有一个可选的属性 -
autodetect。如果autodetect属性存在并且为“true”,
则该服务会使用Java库返回的本地主机名。否则就使用该标签的值,在这种情况下,如果标签的值不存在,那就会用“localhost”。
connectionTimeout – 带有一个整型值的可选标签。
pop3server标签还有几个适用于高级配置的子标签。这些值仅供专家级的系统管理员使用,在这一组中的所有标签都是可选的。
serverSocketFactory -带有字符串值的可选标签,如果该标签存在,那它的值必须是一个在socket manager块 中说明的服务器socket工厂的名字。其它任何值都将导致一个错误。另外,这个值会使useTLS标签失效。
threadGroup -带有字符串值的可选标签,如果该标签存在,那它的值必须是一个在thread manager块中说明的 线程组的名字。其它任何值都将导致一个错误。这个标签最好用于在服务之间协调优化线程的分配。
connectionLimit
- connectionLimit参数说明了该服务所允许的最大客户端连接。
如果没有说明任何值,则默认为connectionmanager块中所定义的值。0表示该服务不对打开的连接数进行任何限制,
尽管其它组件(比如线程数的最大值)的资源限制可能会限制能够打开的连接数。
将James配置为需要身份认证的SMTP服务器
SMTP身份认证 (SMTP AUTH)
SMTP身份认证是一种保证SMTP服务
器安全的方法,它要求希望通过SMTP服务器转发
邮件(即邮件最终发送给另一个SMTP服务器)的用户在发送消息之前必须先向James表明自己的身份。
这样垃圾邮件发送者就不能用你的SMTP服务器发送未经授权的邮件了,然而仍然可以让没有固定IP地址的用户 发送他们的消息。
允许垃圾邮件发送者发送未经授权的email的邮件服务器被称为开放中继,所以SMTP AUTH是一种确保你的 邮件服务器不是开放中继的机制。
现在James仅支持简单的用户名/密码认证。
将James配置为需要身份认证的SMTP服务器
将James配置为需要身份认证的SMTP服务器需要几个步骤,调整config.xml文件的几个地方。下面是具体方法:
1.
如上所述,SMTP AUTH首先要求James能够区分要发送到本地的邮件和要发送到远程的邮件。James通过将邮件发往的域与配置文件中
的<servernames>元素来进行判断。任何本地域应该显式的放在<servername>元素列表中。
2.James
初始配置就使它不是垃圾邮件发送者的开放中继。它通过使用RemoteAddrNotInNetwork mailet
来限制可以接受邮件的发送者的IP地址。要让用户能从任意的客户端发送邮件必须先解除这个限制。解除的办法是
将包含"RemoteAddrNotInNetwork"类属性的mailet标签注释掉或删掉。
可以在spoolmanager配置块的根处理器配置中找到这个标签。
3.将smtpserver配置块中的authRequired元素设为"true"。
4.如果你希望确保通过认证的用户仅能用自己的账号发送邮件,应该将smtpserver配置块中的verifyIdentity 元素设为 "true"。
5.重启James,使你所做的配置生效。
验证你的配置
最终你需要验证你的配置是正确的。这一步很重要,不应该忽略。
确保你没有不经意的将你的服务器配置为开放中继。通过用ORDB.org提供的 服务很容易完成这个验证。 ORDB.org将检查你的邮件服务器,如果它是一个开放中继,ORDB.org会通知你。
确保你没有将服务器配置为开放中继极其重要。除了垃圾邮件发送者的使用所造成的消耗外,SMTP服务器会例行公事 的拒绝来自开放中继的服务器连接,这会严重影响你的邮件服务器发送邮件的能力。
在你的服务器上证实用户能够登录服务器并发送邮件当然也是必要的。这可以用任何标准的邮件客户端 完成(比如Outlook、Eudora、 Evolution)。
Apache James使用入门
一、简介
Apache James(Java Apache Mail Enterprise Server)是Apache组织的子项目之一,完全采用纯Java技术开发,实现了SMTP、POP3与NNTP等多种邮件相关协议。
James也是一个邮件应用平台,可以通过Mailet扩充其功能,如Mail2SMS、Mail2Fax等。James提供了比较完善的配置方案,尤其是关于邮件内容存储和用户信息存储部分,可以选择在文件、数据库或其他介质中保存。
James性能稳定、可配置性强,还是开源项目,所有源代码不存在版权问题,因此,James在项目中的应用日益广泛,现在常用版本为2.1,但最新版本2.3已经推出,在本文中,我们将仍以James2.1作为介绍蓝本。
二、安装与配置
James的安装配置过程非常简单。
第一步:安装JDK
请使用JDK1.3以上版本(推荐使用JDK1.4),假设安装在c:\jdk1.3。
第二步:下载James,并解压
可以到Apache网站上下载James2.1,下载将得到一个压缩文件james-2.1.zip,大小为4.45M,将此包解压到c:\james。
第三步:直接运行或需要配置JAVA_HOME
这时,可以尝试直接双击c:\james\bin\run.bat,若启动无误,将提示如下:
Using PHOENIX_HOME: C:\james
Using PHOENIX_TMPDIR: C:\james\temp
Using JAVA_HOME:
Phoenix 4.0.1
James 2.1
Remote Manager Service started plain:4555
POP3 Service started plain:110
SMTP Service started plain:25
NNTP Service Disabled
Fetch POP Disabled
也有可能启动不了,并报JAVA_HOME找不到,这时,需要指定JAVA_HOME,比较简单的方法是在c:\james\bin\run.bat中指定JAVA_HOME,修改后的run.bat如下:
……
rem
rem Determine if JAVA_HOME is set and if so then use it
rem
set JAVA_HOME= c:\jdk1.3
if not "%JAVA_HOME%"=="" goto found_java
……
修改完后再运行run.bat,应该就可以正常启动了,若还有什么问题,请参见本文的FAQ部分。
三、项目应用
1、 项目需求
某单位,有16个职能处室,共78台电脑(操作系统为Win98/2000/xp),其中有1台为专用服务器(Win2000),已连成局域网。为使单位内部的信息交流,尤其是文件交互更加便捷,单位决定在局域网内部架设一套E-mail系统。
2、 解决方案
在专用服务器上安装James2.1,客户端使用操作系统自带的Outlook Express。
3、 服务器端配置
首先找出专用服务器的名字,假设叫unitname。
然后打开文件c:\james\apps\james\SAR-INF\config.xml。
在config.xml文件中,找到<postmaster>Postmaster@localhost<
/postmaster>,把此项改为<postmaster>Postmaster@unitname<
/postmaster>,同理,找到<servername>localhost</servername>,把此项改
为<servername>unitname</servername>。其实,改这两项就是把默认的localhost改为机
器名,这样做是为了让其它机器也能访问邮件系统,当然,前提是在局域网上没有与服务器重名的机器。
4、 客户端配置
假设有一个账号,用户名为holen,密码为123456,如何在Outlook中配置呢?
首先,根据用户名,可以得出该用户邮箱地址为holen@unitname ,然后在输入POP3和SMTP服务器时,直接使用服务器机器名unitname即可。
5、 帐号管理
James的账号管理是通过telnet完成的,登录命令为:
telnet unitname 4555
其中unitname也可以换成IP,4555是端口号。登录时需要用户名和密码,初始的用户名和密码均为root。若登录成功,提示如下:
JAMES Remote Administration Tool 2.1
Please enter your login and password
Login id:
Password:
Welcome root. HELP for a list of commands
需要注意的是,所有敲入的命令都不显示在屏幕上。
输入help,将出现命令的帮助,信息如下:
JAMES Remote Administration Tool 2.1
Please enter your login and password
Login id:
Password:
Welcome root. HELP for a list of commands
Currently implemented commands:
help display this help
listusers display existing accounts
countusers display the number of existing accounts
adduser [username] [password] add a new user
verify [username] verify if specified user exist
deluser [username] delete existing user
setpassword [username] [password] sets a user’s password
setalias [alias] [user] locally forwards all email for ‘alias’ t
o ‘user’
unsetalias [alias] unsets an alias
setforwarding [username] [emailaddress] forwards a user’s email to another email
address
unsetforwarding [username] removes a forward
user [repositoryname] change to another user repository
shutdown kills the current JVM (convenient when J
ames is run as a daemon)
quit close connection
常用的命令有listusers、countusers、adduser、deluser、setpassword等。
其中添加用户为adduser,例如:adduser holen 123456。
通过这个后台管理界面,管理员就可以实现账号管理及其他相应的管理功能。
6、 应用情况
这套系统在该单位经过一周的试运行后,已正式运行两个月,用户数约百人,一直很稳定,期间,因操作系统故障,服务器重启两次,其他时间,一直处于运行状态,性能稳定,响应速度快。
四、FAQ
1、 在启动james时,提示POP3或SMTP不能使用?
请检查一下,看“管理工具—>服务”里面,是不是启动了别的邮件服务器,已将110或25端口占用了。
2、 JAVA_HOME找不到?
请在run.bat中指定JAVA_HOME,若还不行,请在“我的电脑—>系统—>高级—>环境变量”中添加一项JAVA_HOME(一般不推荐这么做)。
3、 服务器启动正常,但客户端不能收发邮件?
请检查客户端配置是否正常,参照前面所讲,另外,请检查james下的config.xml,是否把localhost改成了机器名。
五、总结
总体而言,James是一款十分优秀的邮件服务器,具有性能稳定、扩展性好、可配置性强、响应速度快、源码公开等优点。同时,由于James的后台管理不够方便、缺少必要的技术支持等原因,限制了james的高端企业级应用。
就目前情况而言,James主要用于1000用户量以内的邮件系统,而且当James用于商业性项目时,开发商一般需要对James进行相应的包装,主要是后台管理这一块。
六、参考资料
James 2.1 Documentation
归类于: Apache james — 风北狼 @ 3:53 pm 评论(0)
James2.1 SMTP的配置,FetchPOP,NNTP的配置,RemoteManager的配置
FetchPOP 的配置
FetchPOP受config.xml文件中的fetchpop配置块控制。fetchpop标签定义了配置块的边界, 它包含所有FetchPOP任务日程安排的相关配置。这个标签的属性或其子标签决定了FectchPOP的行为。
这个标签有一个可选的布尔属性- enabled -定义了这个服务是否处于活动状态。如果该属性不存在,则取默认值“true”。
fetchpop标签中唯一允许出现的是fetch元素。 这些fetch标签中的每一个都定义了一个单独的FetchPOP任务。
fetch标签有一个必需的属性--name。 每个FetchPOP任务的名称必须是唯一的。
除了name属性,fetch标签还有4个子标签,它们都是必需的。
host – 所要取得的邮件所在的POP3服务器的IP地址或主机名。
user – 所要取得的邮件账号的用户名。
password – 所要取得的邮件账号的密码。
interval – 代表每次获取邮件之间的时间间隔,是一个非负整数。
处理取得的邮件时几点需要考虑的问题
这里有几个在处理取得的邮件时必须考虑的问题,比如避免循环的邮件路由。下面描述了一些假想的情节及这种情况下推荐的配置。
处理域中的所有邮件
这是FetchPOP所要完成的主要功能。 如果这个服务器要取得一个域中所有的邮件并进行最终的处理的话,那么就有足够的理由把这个域名作为一个服务器名添加到 这里所描述的servernames部分了。
这是最简单的解决方案。在James捕获并转发由很多域名注册/保留公司提供的免费的POP账号的所有邮件时,会采用这种配置。
处理域中的一部分邮件
如果在域中仅有一部分邮件(可能只是一个用户的POP账号)被James的这个实例处理, 那么确保James正确的传送发送到这个域中的邮件地址的邮件就很重要。
要
过滤FetchPOP任务的日程,需要给取得的邮件添加一个头-X-fetchedby。
James提供的匹配器FetchedFrom可以检测到这个头信息。
这个匹配器可以将取得的邮件转发给为处理从一个或多个POP3账号获取的邮件而建立起来的处理器。
在每个FetchPOP任务中应该仅仅使用一次这个匹配器,因为这个匹配器会去掉匹配的头信息以防止出现答复或转发不断循环的情况。
FetchedFrom匹配器要用进行匹配操作的FetchPOP任务的名字进行配置。 通常,这个匹配器被用来将邮件转发给定制的处理器进行进一步的处理。mailet的标签应该如下所示:
fetchprocessor
其
中 fetchtaskname 是被匹配的FetchPOP任务的名字,fetchprocessor是用来处理获取的邮件的处理器的名字。
获取邮件的处理器应该包含进行邮件过滤和将邮件转发到真实的本地或远程用户的mailet。可以参照 SpoolManager 配置部分
描述的方式对配置文件进行修改来实现这个目标。
捕获发送失败的邮件
需要注意的是,FetchPOP的这个第一版不能访问邮件原始的
目标接收者信息,只能从消息头中获取To:地址。
因为头信息中可能包含目标接收者的别名,或者可能根本就不包含目标接收者地址(可能已经在Cc:或者Bcc:域中了),
所以James可能不能发送取得的邮件。James的下一版将要解决这个问题。但现在推荐对本地无法发送的获取邮件使用catch-all转发。
要
决定头信息To:中不包含目标接收者的消息的目标接收者,可以使用FetchedFrom匹配器。
将带有这个匹配器的mailet标签放在配置文件里定义的Transpot处理器的"RecipientIsLocal"和HostIsLocal"
之间。 这个mailet标签应该使用James提供的ToProcessor mailet类来将获取的邮件转发到定制的处理器中。
这样FetchPOP所取得的、不能映射到本地邮件账号的所有邮件就会经受进一步的处理,允许执行更复杂的发送操作。
安全起见,你应该在自己的获取邮件处理器的最后使用All匹配器,它能够捕获处理器中前面的mailet没有处理的所有邮件。这样你就 能确保你的配置是正确的了,而且postmaster就可以检查到任何没有正确发送的邮件了。
NNTP服务受config.xml文件中的nntpserver和nntp-repository配置块控制。
nntpserver配置块
nntpserver标签定义了nntpserver配置块的边界,它包含了大部分的NNTP服务器相关配置。
这个标签有一个可选的布尔属性- enabled -定义了这个服务是否处于活动状态。如果该属性不存在,则取默认值“true”。
nntpserver标准的子标签是:
port -可选的整型值,配置NNTP服务器在哪个端口上监听。如果这个标签或它的值被忽略了,则取默认的标准NNTP端口-119。
bind – 可选值,描述绑定该服务的IP地址,是一个字符串值。 如果这个标签或它的值没有出现,则该服务将绑定到机器的所有网络接口。
useTLS
-
可选的布尔值,如果其值为“true”,使用“ssl”服务器socket接口工厂为这个服务生成服务器socket连接。否则使用“plain”服务器
socket工厂。但无论该值为什么,如果配置文件中存在下面专家配置选项中所讨论的serverSocketType标签,该行为最终都由
serverSocketType标签的值决定。
handler – 这是一个保持向后兼容性的工艺品,它只是将一些相关的参数放到一组中。在将来的版本中这个标签应该会被去掉。
helloName
- 这是一个必需的标签,它的值定义了用于服务启动时的问候语中的服务器名,但它的值是可选的。这个标签可能会有一个可选的属性 -
autodetect。如果autodetect属性存在并且为“true”,则该服务会使用Java库返回的本地主机名。否则就使用该标签的值,在这种
情况下,如果标签的值不存在,那就会用“localhost”。
connectionTimeout – 取值为非负整型值的可选标签。
authRequired – 取值为布尔值的可选标签,如果其值为“true”,服务器在允许客户端显示新闻文章之前会要求身份认证。如果这个标签不存在或其值为“false”,就不会提示客户端进行身份认证。现在还只支持简单的用户/口令认证方式。
nntpserver标签还有几个适用于高级配置的子标签。这些值仅供专家级的系统管理员使用,在这一组中的所有标签都是可选的。
serverSocketFactory – 取值为字符串值的可选标签,如果该标签存在,那它的值必须是一个在socket manager块中说明的服务器socket工厂的名字。其它任何值都将导致一个错误。另外,这个值会使useTLS标签失效。
threadGroup – 取值为字符串值的可选标签,如果该标签存在,那它的值必须是一个在thread manager块中说明的线程组的名字。其它任何值都将导致一个错误。这个标签最好用于在服务之间协调优化线程的分配。
connectionLimit
-
connectionLimit参数说明了该服务所允许的最大客户端连接。如果没有说明任何值,则默认为connectionmanager块中所定义的
值。0表示该服务不对打开的连接数进行任何限制,尽管其它组件(比如线程数的最大值)的资源限制可能会限制能够打开的连接数。
nntp-repository配置块
NNTP服务的其余配置信息包含在nntp-repository配置块内。这部分的配置数据与服务器端的NNTP文章存储有关。
readOnly – 必需的布尔类型标签,如果该值为“true”,NNTP服务器将不允许post方法。
rootPath – 必需的字符串类型标签, 它必须是带有前缀“file”的URL格式。这个标签指定了NNTP数据仓库的的根目录。NNTP服务器上的组会映射为这个根目录下的文件夹,并且新闻文章会存储在适当的文件夹中。
tempPath – 必需的字符串类型标签,它必须是带有前缀“file”的URL格式。这个标签指定了NNTP服务器在将已提交的文章添加到缓冲池之前的文件存储目录。
articleIDPath – 必需的字符串类型标签, 它必须是带有前缀“file”的URL格式。这个标签指定了NNTP服务器保存文章ID和包含文章的组之间的映射信息的目录。
articleIDDomainSuffix – 必需的字符串类型标签,添加到所有NNTP服务器产生的文章ID的后缀。
newsgroups – 必需的容器标签,这个服务器上的每个新闻组都有一个单独的newsgroup子标签。每个newsgroup标签的值都是新闻组的名字
SMTP服务受config.xml文件中的smtpserver配置块控制。smtpserver标签定义了配置块的边界, 它包含所有SMTP服务器的相关配置。这个标签的属性或其子标签决定了SMTP服务的行为。
这个标签有一个可选的布尔属性- enabled -定义了这个服务是否处于活动状态。如果该属性不存在,则取默认值“true”。
smtpserver标准的子标签是:
port – 可选的整型值,配置SMTP服务器在哪个端口上监听。如果这个标签或它的值被忽略了, 则取默认的标准SMTP端口-25。
bind – 可选值,描述绑定该服务的IP地址,是一个字符串值。 如果这个标签或它的值没有出现,则该服务将绑定到机器的所有网络接口。
useTLS
- 可选的布尔值,如果其值为“true”,使用“ssl”服务器socket接口工厂
为这个服务生成服务器socket连接。否则使用“plain”服务器socket工厂。但无论该值为什么,如果配置文件中存在
下面专家配置选项中所讨论的serverSocketType标签,该行为最终都由serverSocketType标签的值决定。
handler – 这是一个保持向后兼容性的工艺品,它只是将一些相关的参数放到一组中。 在将来的版本中这个标签应该会被去掉。
helloName
-这是一个必需的标签,它的值定义了用于服务启动时的问候语中的服务器名,但它的值是可选的。 这个标签可能会有一个可选的属性 -
autodetect。如果autodetect属性存在并且为“true”,
则该服务会使用Java库返回的本地主机名。否则就使用该标签的值,在这种情况下,如果标签的值不存在,那就会用“localhost”。
connectionTimeout – 取值为非负整型值的可选标签。
authRequired -取值为布尔值的可选标签,如果其值为“true”,服务器在将邮件发送到非本地email地址之前会要求 身份认证。如果这个标签不存在或其值为“false”,就不会提示客户端进行身份认证。现在还只支持简单的用户/口令认证方式。
verifyIdentity – 取值为布尔值的可选标签,只有需要SMTP身份认证的时候才能用这个选项。 如果该参数为“true”,会根据身份认证项验证所提交的消息的寄件人地址。
maxmessagesize – 取值为非负整型值的可选标签,说明了这个SMTP服务器传送的任何消息的最大字节数。 这是对整个服务的限制,而不是对每个用户进行的配置。如果该标签没有说明或其值为0,则默认为没有对消息的大小的限制。
smtpserver标签还有几个适用于高级配置的子标签。这些值仅供专家级的系统管理员使用,在这一组中的所有标签都是可选的。
serverSocketFactory – 取值为字符串值的可选标签,如果该标签存在,那它的值必须是一个在socket manager块 中说明的服务器socket工厂的名字。其它任何值都将导致一个错误。另外,这个值会使useTLS标签失效。
threadGroup -取值为字符串值的可选标签,如果该标签存在,那它的值必须是一个在thread manager块中说明的 线程组的名字。其它任何值都将导致一个错误。这个标签最好用于在服务之间协调优化线程的分配。
connectionLimit
- connectionLimit参数说明了该服务所允许的最大客户端连接。
如果没有说明任何值,则默认为connectionmanager块中所定义的值。0表示该服务不对打开的连接数进行任何限制,
尽管其它组件(比如线程数的最大值)的资源限制可能会限制能够打开的连接数。
RemoteManager受config.xml文件中的remotemanager配置块
控制。remotemanager标签定义了配置块的边界,它包含所有RemoteManager的相关配置。这个标签的属性或其子标签决定了
RemoteManager的行为。
这个标签有一个可选的布尔属性- enabled -定义了这个服务是否处于活动状态。如果该属性不存在,则取默认值“true”。
remotemanager的标准子标签是:
port – 可选的整型值,配置服务器在哪个端口上监听。如果这个标签或它的值被忽略了,则取默认的端口-4555。
bind – 可选值,描述绑定该服务的IP地址,是一个字符串值。 如果这个标签或它的值没有出现,则该服务将绑定到机器的所有网络接口。
useTLS
-可选的布尔值,如果其值为“true”,使用“ssl”服务器socket接口工厂为这个服务生成服务器socket连接。否则使用“plain”服务
器socket工厂。但无论该值为什么,如果配置文件中存在下面专家配置选项中所讨论的serverSocketType标签,该行为最终都由
serverSocketType标签的值决定。
handler – 这是一个保持向后兼容性的工艺品,它只是将一些相关的参数放到一组中。在将来的版本中这个标签应该会被去掉。
helloName
- 这是一个必需的标签,它的值定义了用于服务启动时的问候语中的服务器名,但它的值是可选的。这个标签可能会有一个可选的属性 -
autodetect。如果autodetect属性存在并且为“true”,则该服务会使用Java库返回的本地主机名。否则就使用该标签的值,在这种
情况下,如果标签的值不存在,那就会用“localhost”。
administrator_accounts
-必需的容器标签,包含一个或更多的administrator_account元素,每个元素都有login属性和password属性。这两个属性分
别对应可以管理员账号的登录id和密码。很明显,出于安全的原因,这些值应该在James安装完成后就进行设置。
connectionTimeout – 取值为非负整型值的可选标签。
remotemanager标签还有几个适用于高级配置的子标签。这些值仅供专家级的系统管理员使用,在这一组中的所有标签都是可选的。
serverSocketFactory – 取值为字符串值的可选标签,如果该标签存在,那它的值必须是一个在socket manager块中说明的服务器socket工厂的名字。其它任何值都将导致一个错误。另外,这个值会使useTLS标签失效。
threadGroup – 取值为字符串值的可选标签,如果该标签存在,那它的值必须是一个在thread manager块中说明的线程组的名字。其它任何值都将导致一个错误。这个标签最好用于在服务之间协调优化线程的分配。
connectionLimit
-
connectionLimit参数说明了该服务所允许的最大客户端连接。如果没有说明任何值,则默认为connectionmanager块中所定义的
值。0表示该服务不对打开的连接数进行任何限制,尽管其它组件(比如线程数的最大值)的资源限制可能会限制能够打开的连接数。
归类于: Apache james — 风北狼 @ 3:51 pm 评论(0)
James 2.1 -使用TLS,创建邮件列表,RemoteManager的配置
这个文档解释了如何让James 2.1使用传输层安全协议(Transport Layer Security -TLS)加密客户端和服务器端的通信。
使James内部可以获得TLS/SSL服务器Sockets
James
使用Sun Java Secure Sockets Extension (JSSE)基础架构提供TLS/SSL sockets。有几个代理商的
Java发布文件都包括JSSE包(比如 Sun Java 1.4.x,、IBM Java
1.3.x)。对于这些发布文件,请遵照代理商提供的指导 配置JVM使用JSSE服务。
如果你使用的Java发布文件不包含JSSE,你需要再单独下载JSSE包。可以在这里 获得JSSE包。请遵照Sun的指示安装并配置JSSE。
在任何情况下,你都需要静态的定义JSSE TLS的提供者。通常就是默认你安装的那个JSSE。
安装完 JSSE后,需要配置James利用JSSE提供的功能。
证书密钥库
要在James内部使用TLS/SSL你还需要一个证书密钥库。
配置 Server Socket Factory
初始的配置文件中有一个SSL配置的模板。在sockets配置块的server-sockets元素下的注释中包含了一个名为 "ssl"的服务器Socket工厂元素。配置的第一步就是把注释标记去掉。
服务器Socket工厂元素包含几个子元素。 你仅仅有必要调整其中的两到三个子元素。
必需的file元素制定了工厂所用的密钥库的位置,它是一个Unix风格的文件路径。如果制定的不是绝对路径,那么它 就被认为是应用程序安装目录下的apps/james/子目录的相对路径。
password元素是证书库的密码。这个密码应该在创建证书库的时候制定,打开证书库时需要这个密码。这个值是必需的。
最后,还必须调整type元素。这个元素的值可以是JSSE提供者支持的任何密钥库类型(查看JSSE文档中的详细介绍)。 初始的配置是JKS (Java Keystore)。
其余的子元素不需要修改或删除。
配置使用TLS的服务
每个服务 – SMTP、 POP3、 NNTP和 RemoteManager – 都可以支持TLS。这些服务都有一个 可选的布尔类型配置元素useTLS。当这个值设为true时,服务就会用"ssl" 服务器socket工厂创建服务器socket连接。
验证使用TLS的James服务
在你为某个服务配置完成TLS/SSL连接后,这个服务端口应该不再接受不加密的TCP/IP连接。可以用 telnet直接连到该服务端口进行测试,telnet连接应该超时挂起。
为了证实这个服务端口能正确的接受SSL连接,需要一个SSL客户端和这个端口建立连接。 OpenSSL就一个这样的客户端,可以在OpenSSL 网站下载。 遵照SSL客户端的指示创建到服务端口的连接,连接成功后应该能够看到常用的服务问候。
RemoteManager受config.xml文件中的remotemanager配置块
控制。remotemanager标签定义了配置块的边界,它包含所有RemoteManager的相关配置。这个标签
展开阅读全文