目录
前言
基于 apache James 3.5.0 搭建本地windows邮件服务器,由于我只有阿里云的Linux 服务器关闭了25端,必须使用SSL+ 465端口。为了快速搭建并测试
一、apache James 3.5.0 介绍
https://james.apache.org/server/install.html 这是官方地址具体介绍
是一款由Java 编写的邮件服务器 目前网上教程大部分是 2.3.2 的,现在apache 已经不维护2.3.2了。3.5.0是官方稳定版
二、使用步骤
准备环境 JDK1.8 mysql驱动包8.0 MySQL服务器5.7
链接:https://pan.baidu.com/s/1oON6m1tzH6V5JufgiEs9KQ
提取码:ypte
直接解压文件 进入 bin/ 目录下执行run.bat 看是否可运行成功。一般是可以什么都不改直接运行的。
第一步:修改存储类型,进入到 一下目录修改james-database.properties 文件,内容如下
第二步:放入MySQL驱动jar在该目录下
第三步:配置域名 修改以下几个文件 domainlist.xml mailetcontainer.xml
domainlist.xml配置如下 必须将红框的设置为false
mailetcontainer.xml 配置 找到如下配置
<context>
<postmaster>postmaster@wang168.com</postmaster> 修改你的域名
</context>
只有如下 :file:// 不做修改
smtpserver.xml 配置: <helloName autodetect="true">wang168.com</helloName> ,<authRequired>true</authRequired>,<verifyIdentity>true</verifyIdentity>
最后在 host目录配置 192.168.1.1 wang168.com 域名映射 不然会有意想不到的错
部署过程中遇到的错误:
建表报错:Index column size too large. The maximum column size is 767 bytes.
SET GLOBAL innodb_file_format = BARRACUDA;
SET GLOBAL innodb_large_prefix = ON;
三、创建用户
启动James 并添加用户
- 添加邮箱账号Windows 和 Linux
james-cli.bat -h localhost -p 9999 adddomain wang168.com (此处命令尤为重要,直接添加用户会报密码无效)
james-cli.bat -h localhost -p 9999 adduser chao@wang168.com 123456
Linux下 添加用户 sh james-cli.sh -h localhost -p 9999 AddUser Danny@develop.com sec123
执行后,即添加了一个邮箱账号chao@wang168.com,密码为123456
安装Foxmail
四、Mailet容器配置
编写自定义扩展
import javax.mail.MessagingException;
import org.apache.mailet.Mail;
import org.apache.mailet.base.GenericMailet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MyMailet extends GenericMailet{
private static final Logger logger = LoggerFactory.getLogger(MyMailet.class);
@Override
public void service(Mail mail) throws MessagingException {
log("log via mailet logger with INFO level");
logger.info("Log via slf4j with INFO level !!! Add log4j.logger.com.test=INFO, CONS, FILE in the log4j.properties");
logger.debug("Log via slf4j with DEBUG level !!! Add log4j.logger.com.test=DEBUG, CONS, FILE in the log4j.properties");
}
}
将自己的Java程序打成jar包后 放入 / conf / lib 中
James3.5.0 不再需要mailetpackages实体,mailet和matchers的class属性现在采用完全限定的类名,例如
<mailet match =“ All” class =“ com.your.company.MyMailet” /> 重启James服务
五、使用 SSL/TLS 协议 Linux下操作:
注:此处参考一下博客 : https://blog.csdn.net/qq_33945246/article/details/91417413
- 将 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 类比即可):
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
- 最后 重启服务即可
总结
网上没有关于3.5.0的 安装及配置,公司需要搭建自己的邮件服务器,先前搭建了2.3.2的,升级3.5.0
把James 部署到windows下 James提供了使用 Java server wrapper 方式注册。2.3.2的版本需要自己下载 Java server wrapper 3.2.3 jar包 安装该容器。但是2.3.2版本会有很多问题,当时James团队就没做注册Linux服务自动启动
现在James3.5.0 架构更改使用Java server wrapper 注册成Linux服务的方式变了。可以一键注册成windows服务和Linux服务。windows下注册自行百度。
Linux下注册需要使用到 /bin目录下的wrapper-linux-x86-64文件,不懂可以去Java server wrapper 官网看看部署启动方式就不做详细介绍了。
James 的收件发件信息存储与JAMES_MAIL 表