参考
1. james+mysql
2. MYSQL用户权限管理(Grant,Revoke)
序
网络上资源丰富,但不知为什么,当我按照网上一些技术文章一步一步操作后,得到的结果总是失败,问题重出。
而且天下文章一大抄,通过搜索找来的结果大多完全相同。
于是决定记录自己一步一步明确的操作,总结成文章,以方便自己日后查阅,也许也能对其他人有所帮助。
本篇序
在上篇《CentOS 6中简单架设Apache James邮件服务器》中已经搭建好James邮件服务,但用户和邮件都是保存在文件中的,不便于管理和查询。为此本篇将配置James服务,把用户和邮件信息保存在数据库中。
目的
在CentOS中配置James邮件服务,使用数据库(MySQL)存储用户和邮件信息。
操作环境
服务器硬件 : EeePC 701(超烂配置)
服务器系统 : CentOS 6
Java : java 1.7.0
James : James Mail Server 2.3.2
步骤
1. 下载并安装MySQL
需要MySQL请到Oracle的网站下载,这怎么听来怪怪的?
呵呵,其实不用啦。
#yum mysql-server mysql
运行这条命令就搞定了。
#service mysqld start
启动MySQL数据库服务,再通过mysql命令进入mysql管理工具。
为了方便管理,在MySQL创建一个数据库“maildb”,再新建MySQL用户“maildbuser”。
#mysql -u root -p mysql>create database maildb; mysql>create user maildbuser; mysql>use maildb; mysql>grant SELECT,INSERT,UPDATE,DELETE,INDEX,ALTER,CREATE,DROP on maildb to maildbuser@localhost identified by '1234';
下载MySQL的JDBC驱动包,并放在James目录中的lib目录下。
2. 配置用户到MySQL数据库
打开James的config.xml配置文件
#vi james_home/apps/james/SAR-INF/config.xml
找到
…… <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> ……
3. 配置邮件到MySQL数据库
在config.xml找到
…… <inboxRepository> <repository destinationURL="file://var/mail/inboxes/" type="MAIL"/> </inboxRepository> ……
注释之,添加如下配置
…… <inboxRepository> <repository destinationURL="db://maildb/inbox/" type="MAIL"/> </inboxRepository> ……
4. 配置SPOOL到MySQL数据库(SPOOL到底是什么?)
在config.xml找到
…… <spoolrepository destinationURL="file://var/mail/spool/" type="SPOOL"/> ……
注释之,添加如下配置
…… <spoolrepository destinationURL="db://maildb/spool/spool" type="SPOOL"/> ……
5. 配置数据库信息
再在文件中搜索“data-source”,找到如下配置
…… <data-source name="maildb" class="org.apache.james.util.dbcp.JdbcDataSource"> <driver>org.gjt.mm.mysql.Driver</driver> <dburl>jdbc:mysql://127.0.0.1/maildb</dburl> <user>maildbuser</user> <password>1234</password> <!--poolPreparedStatements>true</poolPreparedStatements--> <max>20</max> </data-source> ……
释放注释,并将其中的配置修改对应的数据库信息。
再次启动James服务程序。
#./run.sh
OK,James会在maildb数据库中创建表,“users”、“inbox”、“spool”表。
同样可以telnet丑陋的文字控制台adduser,创建用户后再到MySQL数据库中select一下。
mysql>select * from users;
在users表中就有了刚刚创建的用户,同样,也可以通过insert记录到users表中来创建新用户。
mysql>select * from inbox; mysql>select * from spool;