本文主要解决两个问题:一个是如何将 James 的用户信息存储到数据库中,二是在进行 James 二次开发时,如何处理密码问题。
一、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 为邮件服务器,开发一套基于 Web 的邮件系统,就像 263.net,163.net 一样,要求实现在线注册、在线收发邮件等功能。
默认情况下,James 的用户信息存储在文本中,虽然加了密,但由于文本存档不足,不便于查询及相应处理,幸好 James 提供了多种用户信息存储方案,如数据库存储,LDAP 存储等。
这里我们将以数据库存储为例,讲解用户信息的管理,数据库采用 MySQL。当然你也可以采用 LDAP,比如免费的 OpenLDAP,功能非常强大。
三、用户信息的数据库存储
James 邮件用户的用户信息默认保存在 apps/james/var/users 目录下,通过修改配置文件 apps/james/SAR-INF/config.xml,可以把用户信息保存到数据库中,配置方法如下:
第一步:在 MySQL 中新建一个数据库 mail,用户名 root,密码为空;
第二步:打开 config.xml,找到 这一项,此面默认的内容为:
<repository name="LocalUsers" class="org.apache.james.userrepository.UsersFileRepository">
<destination URL="file://var/users/"/>
</repository>
需要修改为:
<repo