Apache James邮件服务器的简介及使用

来源:互联网 发布:软件研发面试题 编辑:程序博客网 时间:2024/04/29 17:38

一、前言

众所周知,在今天这个互联网高速发展的时代,电子邮件在我们的日常工作生活中使用地越来越普遍。通常我们使用QQ邮箱,网易邮箱这样的免费邮箱来作为我们日常生活的电子邮箱。但是还有很多时候,在企业中就不能将这样的免费邮箱来作为企业邮箱。第一,不能保证企业内部邮件的安全,存在商业信息泄露的可能;第二,使用免费邮箱不便于管理,如果存在人事变动,使用免费邮箱不便对离职员工的邮箱进行回收,这样会存在离职员工仍然使用原公司邮箱的可能,进而出现一些不必要的麻烦;第三,因为企业邮箱使用的是企业的名称作为邮箱地址的后缀,这样也会对企业起到宣传的作用。既然企业需要使用自己的企业邮箱,那么我们就需要搭建属于企业自己的邮件系统。在邮件系统中至关重要的就是邮件服务器,那么今天我就来说说我使用过的邮件服务器Apache James。

二、简介

什么是James?
James(Java Apache Mail Enterprise Server)是Apache组织的子项目,由Java语言编写的,整合了诸如POP3,SMTP等邮件协议的企业邮件服务器。


三、搭建

服务器的搭建也相当的简单,以windows系统为例:
1. 首先搭建Java的运行环境。
2. 在Apache官网下载James的压缩包并解压到本地。
3. 运行解压文件夹中bin目录下的run.bat,如果出现如下的情形,就说明服务器已经成功启动了。
这里写图片描述


四、使用

接下来我们看看如何访问邮件服务器。由于James使用的telnet访问,所以打开命令行窗口,输入命令telnet localhost 4555,回车。将会出现如下的情形,初始Login id和Password都是root。这时说明我们已经通过telnet成功的访问到了邮件服务器。
这里写图片描述
输出help获取服务器命令列表,如下:

命令 含义 help 获取帮助 listusers 显示所有用户 countusers 显示当前用户数量 adduser [username] [password] 添加用户 verify [username] 验证用户是否存在 deluser [username] 删除用户 setpassword [username] [password] 为指定用户设置密码 setalias [user] [alias] 为用户设置别名 showalias [username] 显示用户别名 unsetalias [user] 取消别名 setforwarding [username] [emailaddress] 将指定用户的email转发到指定的email地址 showforwarding [username] 显示指定用户转发的email地址 unsetforwarding [username] 取消转发 user [repositoryname] 改变用户存储的仓库 shutdown 关闭当前虚拟机 quit 关闭连接

我们来创建两个用户tom和jerry。如下:
这里写图片描述
小插曲:在命令行下输入时需要仔细,一旦输入错误,就需要使用到退格键。但是我感觉这里退格键的使用有些许的不便。例如,我想输入tom,不巧我输入了ton,于是我使用退格键重新输入并回车,命令行显示User tom added。但是当我使用verify tom命令时,却显示说User tom does not exsit。我认为命令行将退格键也认为是我们的输入进行了记录。为了验证我的观点,我使用deluser对创建成功的用户删除,但是我输入命令时,仿照添加用户时一样,先输入错误,退格,再输入正确,回车。这次就显示用户删除成功。说明我的观点是正确的,所以在使用命令行时需要仔细小心。


五、使用Foxmail等工具收发邮件

当我们创建了用户,就可以在他们之间进行邮件的收发了。下面说说如何使用Foxmail这些邮箱管理客户端来收发邮件。
主要步骤:

  1. 打开Foxmail客户端,进入账号管理,新建账户,如下:
    这里写图片描述

  2. 填写Email地址和密码,Email地址就是tom@localhost.com,密码是通过命令行添加的tom123,如下:
    这里写图片描述

  3. 等待验证通过后,会出现如下界面,将POP服务器和SMTP服务器都设置为localhost,其他均为默认:
    这里写图片描述

  4. 点击创建,完成对账户的添加。
    这里写图片描述

按照上述操作,我们再添加账户jerry。
当账户都添加完成后,就可以在tom和jerry之间进行邮件的收发了。


六、存储方式:文件与数据库

关于邮箱服务器的存储,James默认是以文件为存储介质对用户,邮件内容等进行存储。默认情况下,James在其james-2.3.2\apps\james\var\users路径下将用户信息以文件形式存储。它还提供了以数据库为存储介质来存储的形式。下面就来说说如何将服务器数据存储到数据库中。
James将各种信息都使用配置文件来进行管理,所以要改变存储介质,我们需要修改james-2.3.2\apps\james\SAR-INF路径下的config.xml这个非常重要的配置文件。找到<users-store>,这个标签内部管理的是存储介质,如下:

<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></users-store>-->

将UsersFileRepository内容注释掉,将原本注释掉的JamesUsersJdbcRepository去掉注释。这时我们就将使用文件作为存储介质修改为使用数据库作为存储介质。
使用数据库就需要配置数据库的连接信息,所以我们还需要修改数据源的配置,这里我们使用的是mysql数据库。还是在config.xml中,找到如下关于mysql的data-source配置,去掉注释,并设置当前数据库连接相关信息。

<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>root</user>    <password>123456</password>    <max>20</max></data-source>

接下来还需要修改收信邮箱的配置信息,默认依旧是存储在james-2.3.2\apps\james\var\mail\inboxes路径下,所以我们现在需要将其修改为存储到数据表中。依旧是config.xml,找到<inboxRepository>的配置,如下:

<inboxRepository>    <repository destinationURL="file://var/mail/inboxes/" type="MAIL"/></inboxRepository><!--<inboxRepository>    <repository destinationURL="db://maildb/inbox/" type="MAIL"/></inboxRepository>-->

将以文件存储的内容注释掉,将数据库存储的内容去掉注释。
到这里,存储介质的切换就完成了。在数据库中新建数据库mail,重启James,然后使用adduser命令添加用户,再看mail数据库,新建了三张表users,inbox,spool。表users存储的是邮件服务器的用户信息。表inbox存储的是收件箱的内容。表spool存储的是还未查看的邮件,一旦邮件被查看,就会从这张表中删除,转而存储到inbox中。


七、结束语

至此,Apache James的基本使用就介绍完了,现在我们就可以在James的基础上对企业邮箱进行进一步的搭建了。Let’s do it!See you later!

1 0