james 邮件服务安装、配置

1.下载 james

http://james.apache.org/download.cgi#ApacheJamesServer,下载二进制稳定版2.3.2.1即可(3.0版本变动比较大,暂时不考虑,3.0 开始才支持 IMAP 协议)。

2.安装、配置 java 环境

略去

3.安装前检查

centos 默认安装了 postfix,会占用 SMTP 的默认 25 端口,需要杀掉

lsof -i:25  
kill -9 xxxPid  

4.安装 james

unzip james-binary-2.3.2.1.zip  
cd james-2.3.2.1  
## 给启动文件添加执行权限
chmod +x bin/phoenix.sh bin/run.sh  

5.配置 james

cd apps/james/SAR-INF/  

修改 config.xml 这个配置文件

5.1 修改 servernames

servernames 部分修改为:

<servernames autodetect="false" autodetectIP="false">  
         <servername>xxx.com</servername>
</servernames>  
  • autodetct: true 表示自动侦测主机名,设成 false 会使用指定的 server name
  • autodetectIP: true 表示会为你的 servername 加上ip,所以直接 false 就行
  • servername: 改成所需要的域名

5.2 修改 mailet

注释掉以下部分

<!--  
<mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor">  
    <processor> relay-denied </processor>
    <notice>550 - Requested action not taken: relaying denied</notice>
</mailet>  
-->

5.3 注释掉 authorizedAddresses

<!--  
         <authorizedAddresses>127.0.0.0/8</authorizedAddresses>
-->

这里配置局域网广播地址,目的是允许此网段的机子可以访问到这个邮件服务器

5.4 修改 DNS 配置

cat /etc/resolv.conf  

运行上述命令会得到类似如下结果:

# Generated by NetworkManager
search xxx  
nameserver 8.8.8.8  
nameserver xxxx  
nameserver 8.8.4.4  

<dnsserver><servers></servers></dnsserver> 中添加

<server>8.8.8.8</server>  
<server>xxxx</server>  
<server>8.8.4.4</server>  

并修改 autodiscover 为 false

<autodiscover>false</autodiscover>  

5.5 修改 root 密码

<account login="root" password="newPassword"/>  

修改配置后需要重启 james

6.优化james配置

vi conf/wrapper.conf 修改以下部门即可:

# Initial Java Heap Size (in MB)
wrapper.java.initmemory=128

# Maximum Java Heap Size (in MB)
wrapper.java.maxmemory=512  

还可以修改 bin/phoenix.sh 文件添加 java 内存相关参数

PHOENIX_JVM_OPTS="$PHOENIX_JVM_OPTS -Dnetworkaddress.cache.ttl=300"  

7.启动 james

nohup /opt/james-2.3.2.1/bin/run.sh >/dev/null 2>&1 &  

8.管理用户

telnet xxxip 4555  
# root/xxxx
# 先添加一个用户
adduser test test  

9.foxmail测试

随便发个网易邮箱测试一下,可能在垃圾箱里面,在垃圾箱的可以添加到白名单。

10.james 整合 mysql

默认情况下 james 的数据存储在apps/james/var中,使用起来可能相当的不便。不过james-2.3.2提供了多种用户信息存储方案,如数据库存储,LDAP存储等。
默认情况下用户信息保存到 apps/james/var/users,通过修改配置文件apps/james/SAR-INF/config.xml,可以把用户信息保存到数据库中,配置方法如下:

10.1 下载 mysql-connector-java-5.xxx.jar,拷贝到lib目录中

10.2 在 mysql 中创建数据库 mail

10.3 用编辑器打开 apps/james/SAR-INF/config.xml,找到<users-store>

10.3.1 存储位置配置

注释默认的文本存储配置:

<!--  
<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>  

10.3.2 配置数据库连接信息

<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/mail?autoReconnect=true</dburl>
    <user>root</user>
    <password>root</password>
    <max>20</max>
</data-source>  

10.3.3 邮件内容存储配置

注释以下代码:

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

放开以下代码:

<inboxRepository>  
    <repository destinationURL="db://maildb/inbox/" type="MAIL"/>
</inboxRepository>  

10.3.4 配置spool

注释以下代码:

<!--  
<spoolrepository destinationURL="file://var/mail/spool/" type="SPOOL"/>\  
-->

放开以下代码:

<spoolrepository destinationURL="db://maildb/spool/spool" type="SPOOL"/>  

10.4 配置完成后启动james

如果启动正常,说明配置成功,如果不能正常启动,回头细细检查以上步骤。
启动成功后,数据库里多了三个表:inbox–邮件信息,users–用户信息,spool–暂不清楚

10.5 发送邮件

添加用户并发送邮件,你的用户信息和邮件信息将会存储在数据库中