ApacheJames3.0 配置安装

转自:https://blog.csdn.net/hjnth/article/details/82931569

 

What?

参见官方文档,此处不赘述:https://github.com/apache/James-project

 

How?

接下来将和大家一起逐步搭建一套私人 James 邮件服务 ^_^

Pre:
安装完: JDK,vim,wget、unzip


 

一、基础配置部署:


 
 
  1. #1、下载并解压:
  2. wget https://www.apache.org/dyn/closer.lua/james/server/james-server-app-3.1.0-app.zip
  3. unzip james-server-app-3.1.0-app.zip
  4. #2、添加邮箱后缀[注意:如果是在本地模拟则需在hosts中做域名映射,否则会出现意想不到的问题]
  5. vim ../conf/domainlist.xml
  6. 2.1 autodetect、autodetectIP 值为false,不自动获取domain与IP,而使用下面设置的指定邮箱后缀
  7. 2.2 defaultDomain 值为你的邮箱后缀。如需处理多个邮箱后缀的邮件,则需加一个 <domainnames>节点,并将其他邮箱后缀添加到子节点domainname中即可:
  8. <defaultDomain>develop.com </defaultDomain>
  9. <domainnames>
  10. <domainname>develop1.com </domainname>
  11. <domainname>develop2.com </domainname>
  12. </domainnames>
  13. #3、进入bin目录并启动服务
  14. cd james-server-app-3.1.0/bin/
  15. sh run.sh
  16. #4、项目启动一会后,出现下面内容即为启动成功:
  17. INFO xx:xx:xx,xxx | org.apache.james.app.spring.JamesAppSpringMain | Apache James Server is successfully started in xxxxxx milliseconds.

[可能遇到的报错]:

nested exception is java.net.UnknownHostException: xxx:xxx:将 xxx 添加映射到 /etc/hosts 后重启即可.


 

二、使用 mysql 存储数据:

James 默认使用 JPA 以文件存储相关数据,本节将介绍如何将相关数据存储到数据库中

  • 将 驱动 jar 包添加到 conf/lib 下。(如:mysql-connector-java-5.1.7-bin.jar)
wget http://www.stonelu.com/public/mysql-connector-java-5.1.7-bin.jar -P james-server-app-3.1.0/conf/lib
 
 
  • 修改 conf/james-database.properties 注释掉 默认的 DERBY 存储,使用 mysql:

 
 
  1. # Use derby as default
  2. #database.driverClassName=org.apache.derby.jdbc.EmbeddedDriver
  3. #database.url=jdbc:derby:../var/store/derby;create=true
  4. #database.username=app
  5. #database.password=app
  6. database.driverClassName=com.mysql.jdbc.Driver
  7. database.url= jdbc: mysql:/ /www.test.com:3306/james?rewriteBatchedStatements= true&useUnicode= true&characterEncoding=utf8
  8. database.username=james #账密自行修改即可
  9. database.password=james
  10. # Supported adapters are:
  11. # DB2, DERBY, H2, HSQL, INFORMIX, MYSQL, ORACLE, POSTGRESQL, SQL_SERVER, SYBASE
  12. #vendorAdapter.database=DERBY
  13. vendorAdapter.database=MYSQL
  • 修改 conf/mailetcontainer.xml:
  1.     postmaster 修改为管理员邮箱,可以为 postmaster@yourDomain
  2.     repositoryPath 同时存在文件存储 (file://)、数据库存储 (db://) 的,将默认的文件存储注释掉,并释放数据库存储;对于只存在文件存储的,不进行释放。分别如下图所示:

     3.    RemoteAddrNotInNetwork 所在节点注释掉

  • 最后启动项目即可

[可能遇到的报错]:

建表报错:Index column size too large. The maximum column size is 767 bytes.

        SET GLOBAL innodb_file_format = BARRACUDA;

        SET GLOBAL innodb_large_prefix = ON;

        执行后重启项目即可


 

三、启用 SMTP 认证:

  • 修改 conf/smtpserver.xml:

          第一个 helloname 节点修改为邮箱后缀 [域名] -> 降低发送的邮件被 (收件方邮件服务器) 扔到垃圾箱的几率

          authRequired、verifyIdentity 设置为 true 能够防止此邮件服务被当做邮件中继服务,防止跨账号邮件行为,避免被域名信誉机构拉入黑名单,影响或无法正常发送邮件。

  • 最后重启服务即可

 

四、使用 SSL/TLS 协议:

  • 将 sunjce_provider.jar (在 jre/lib/ext 下有) 到 lib 下(注意:不是 conf/lib 下)
wget http://www.stonelu.com/public/sunjce_provider.jar -P james-server-app-3.1.0/lib
 
 
  • 生成 keystore:
keytool -genkey -alias james -keyalg RSA -keystore keystore
 
 

  • 接下来演示 SMTP 使用 SSL/TLS 协议(POP 和 IMAP 类比即可):

Tips:

1)配置文件:

SMTP - smtpserver.xml

POP - popserver.xml

IMAP - imapserver.xml

 

2)端口:

POP3 - port 110, Secure POP3 - port 995
IMAP - port 143, Secure IMAP4 - port 993
SMTP - port 25, Secure SMTP - port 465

  • 最后 重启服务即可

 

五、验证:


 
 
  1. # 添加用户的指令: AddUser <username> <password>
  2. # windows:
  3. james-cli.bat -h localhost -p 9999 AddUser Danny@develop.com sec123
  4. james-cli.bat -h localhost -p 9999 AddUser Jenny@develop1.com sec456
  5. # linux:
  6. sh james-cli.sh -h localhost -p 9999 AddUser Danny@develop.com sec123
  7. sh james-cli.sh -h localhost -p 9999 AddUser Jenny@develop1.com sec456
  • 安装 Foxmail 客户端,并添加账号

  • 给外网的其他邮件服务器发送邮件

        这块不太好验证,因为主流的公共邮箱 (如腾讯、Gmail) 均具有较强的反垃圾邮件能力,给前者发送的邮件绝大部分会被退回。

        可以在购买域名后,做好域名解析(包括 A、MX 记录),然后在服务器上搭一套 James 邮件服务,在服务器上验证或者在服务器与本地之间进行验证都是可以的。

        这里也暴露了一个非常大的问题:邮件服务可能会受到垃圾邮件的攻击,这也是邮件服务提供商面临的一个大问题,现国内外大部分服务器提供商均对 25 端口进行了限制,防止垃圾邮件泛滥。在邮件服务层面还是需要进行很多反垃圾邮件工作的,此课题已超出本文范围,在此便不进行讨论了。

 

 

Tips:
1)获取所有可用的指令及用法: 
  # windows:
  james-cli.bat
  # linux:
  sh james-cli.sh

2)James 数据操作途径:
  整体来说,有三种: xml 配置文件、james-cli 客户端操作、数据库操作 (立即生效)
  
  例如: 
    > 添加 Domain 有三个途径:
      配置文件:
        domainlist.xml
      james-cli 客户端:
        # windows:
        james-cli.bat -h localhost -p 9999 AddDomain develop3.com
        # linux:
        sh james-cli.sh -h localhost -p 9999 AddDomain develop3.com
      数据库操作:
        insert into james_domain values('develop3.com');
        
    > 添加用户有两个途径:
      james-cli 客户端:
        # windows:
        james-cli.bat -h localhost -p 9999 AddUser Sara@develop.com sec789
        # linux:
        sh james-cli.sh -h localhost -p 9999 AddUser Sara@develop.com sec789
      数据库操作:
        INSERT INTO james_user VALUES('Sara@develop.com', 'MD5', MD5('sec789'));

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值