关于 apache james 的入门 可以参考这篇文章 http://pcno1.iteye.com/blog/122524 。这里不多介绍怎么做开始的配置。
本文介绍的是,怎么将apache james新增的用户查到mysql里面。
首先你必须安装好mysql和apache james。在确保两个软件都没问题的情况下,先将mysql的驱动,拷贝到 james-2.3.2\lib 目录下。
第二,启动mysql,在mysql里面新增一个叫mail的数据库。
第三,修改 james-2.3.2\apps\james\SAR-INF 目录下的config.xml 的配置文件。
//James默认将所增加的用户放在了file://var/users的目录下
把<users-store>下面的
<repository name="LocalUsers" class="org.apache.james.userrepository.UsersFileRepository">
<destination URL="file://var/users/"/>
</repository>
注释了,并且将
<repository name="LocalUsers" class="org.apache.james.userrepository.JamesUsersJdbcRepository"
destinationURL="db://maildb/users">
<sqlFile>file://conf/sqlResources.xml</sqlFile>
</repository>
的注释去掉。
因为上面的是存到文件,下面的是存到数据库。
继续往下看在<database-connections> 里面 找到关于mysql 的链接代码,把注释去掉就行了!
<data-source name="maildb" class="org.apache.james.util.dbcp.JdbcDataSource">
<driver>com.mysql.jdbc.Driver</driver>
<dburl>jdbc:mysql://localhost/mail?autoReconnect=true</dburl>
<user>root</user>
<password>root</password>
<max>20</max>
</data-source>
保存!重启james就可以插入到数据库。
然后telnet localhost 4555
adduser fengyun 123456
然后就会发现在mail数据库中多了一个user表,多了一条fengyun的记录
当我们adduser test1 test1 之后发现,密码是加密的。怎么办呢?这个加密时不可逆的,所以我们必须用源文件下面找到它的加密方式,在源文件org.apache.james.userrepository.DefaultUser 有两个方法,一个是
public boolean setPassword(String newPass) {
try {
hashedPassword = DigestUtil.digestString(newPass, algorithm);
return true;
} catch (NoSuchAlgorithmException nsae) {
throw new RuntimeException("Security error: " + nsae);
}
}
这个是保存的时候加密的,然后还有一个是 public boolean verifyPassword(String pass) {} 这个是校正密码的方法,有了它,我们就可以灵活增加james里面的用户了。