基于Ubuntu配置Apache James邮件服务器
环境
服务器端:
-系统Ubuntu 22.04 64bit
-服务器性能:官网要求最低512MB RAM,对服务器其他性能没做具体要求。
客户端:Windows11 64bit
服务器端配置
安装java开发工具包
截止至本文撰写时,Apache James最新版本为3.9.0,从3.8.2版本,Apache James需要openjdk11环境支持,之前的版本需要的环境可能是openjdk8,本文中我们使用最新的3.9.0版本搭建邮件服务器,因此下载openjdk11开发工具包。
1.更新系统包列表:
sudo apt update
更新成功后会显示如下图所示

2.安装openjdk11工具包:
sudo apt install -y openjdk-11-jdk
安装完成如下图所示

安装并运行Apache James
1.下载安装包
sudo mkdir -p ~/mail
cd ~/mail
首先在~目录下创建一个新目录用于安装,并进入该目录。
wget https://dlcdn.apache.org/james/server/3.9.0/james-server-spring-app-3.9.0-app.zip
执行上面的命令用于从远程服务器下载Apache James压缩包。
在国内部分云服务器上,安装包下载速度比较慢,比如在作者使用的云服务器上,下载速度高达36KB/s(hhh)。大家可以在自己电脑上挂上梯子,直接从浏览器访问上面的网址下载,速度会快很多,下载完之后用FTP工具直接上传到服务器中。

这里我还是等了一会儿给下载完了,如果没有错误基本上如下图所示。这里作者中断过一次下载,没有删除上一次下载残留的文件,所以下载下来的文件拓展名多了一个 .1 ,如果大家下载被中断,别忘了删除残余文件。

2.解压安装包
sudo unzip james-server-spring-app-3.9.0-app.zip
sudo rm james-server-spring-app-3.9.0-app.zip
解压完成后,目录下会出现一个与压缩包同名的目录。

如果解压失败,可能会出现如下图所示的情况,这可能是因为下载中断或网络中断导致的,删除压缩包后重新下载就行。

3.配置Apache James
进入解压后的目录,其中conf目录包含了几乎所有的配置文件,我们需要修改部分文件内容以使服务器正常运行。作者这里直接使用ubuntu自带的vi文本编辑器。
- mailetcontainer.xml

此处为管理员的邮箱地址,作者这里直接用postmaster@sample.com代替,其中sample.com是我们自己的域名。
<!--
<mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor">
<processor>relay-denied</processor>
<notice>550 - Requested action not taken: relaying denied</notice>
</mailet>
-->
注释掉中继IP地址限制错误。
- smtpserver.xml
<helloName autodetect="true">sample.com</helloName>
<plainAuthEnabled>false</plainAuthEnabled>
<verifyIdentity>true</verifyIdentity>
将欢迎消息修改为我们的域名,并将plain认证机制和身份验证两项修改。
- domainlist.xml
<autodetect>false</autodetect>
<autodetectIP>false</autodetectIP>
<defaultDomain>sample.com</defaultDomain>
关闭自动检测,使用我们自己的域名。
4.启动Apache James
cd ~/mail/james-server-spring-app-3.9.0/bin
./run.sh
进入Apache James解压后的目录bin中,运行run.sh启动。
这里可能会启动失败,显示端口已被占用。

我们需要手动排查Apache James常用的那些端口是否被占用,
netstat -tulpn | grep :25
netstat -tulpn | grep :465
netstat -tulpn | grep :587
netstat -tulpn | grep :993
netstat -tulpn | grep :143
作者之前曾经安装过dovecot并设置了开机启动,因而993端口被dovecot占用了,导致启动时报这个错。

出现这种情况可以将之前的进程关掉就行,作者这里原软件也卸载掉了。
sudo systemctl stop dovecot
sudo apt-get purge --auto-remove dovecot-core dovecot-imapd dovecot-pop3d
sudo rm -r /etc/dovecot/
关闭占用端口的进程后重新检查端口状态,可以看到返回值为空,此时重新启动Apache James就行。

成功启动后会显示如上图信息。建议使用screen将服务挂载到后台运行。
5.添加邮箱账户
进入bin目录,使用James CLI创建新用户
cd ~/mail/james-server-spring-app-3.9.0/bin
./james-cli.sh AddUser user1@sample.com user1password
添加完成后,可以检查一下账户是否添加完成。
./james-cli.sh ListUsers
当然,大家可以先将给james-cli.sh脚本创建一个链接,这样不用每次都去bin目录下面执行指令了。
sudo ln -s /root/mail/james-server-spring-app-3.9.0/bin/james-cli.sh /usr/local/bin/james-cli
在james-cli.sh脚本**BASEDIR=cd “$PRGDIR/…” >/dev/null; pwd``**这一行后面添加一行命令,强制切换工作目录,以免jmx服务器鉴权问题。
cd "$BASEDIR" || { echo "无法切换到 $BASEDIR"; exit 1; }
这样可以在任何地方使用james-cli工具。
james-cli AddUser user2@sample.com user2password
james-cli ListUsers
开放服务器端口
需要在云服务器控制台处开放的端口:
25,110,143,587
(加密端口,不上SSL加密可以先不开启)465,993,995

客户端配置
客户端这里作者选择foxmail作为客户端,foxmail大家可以直接去官网下载,foxmail官网。下载下来安装包运行后一路点下一步点到安装完成即可。
安装完成后,在主界面打开右上角菜单下拉框,在下拉框中找到账号管理,我们要添加一个新账号。

之后点击新建按钮添加一个新的电子邮箱账号

在新建账号界面选择其他邮箱

之后选择手动设置服务器配置

此处服务器类型选择POP3类型,输入邮件账号和密码后,从云服务器供应商那里找到我们云服务器的IPV4地址,因为本文中没有将POP和SMTP服务分开搭建到不同服务器上,因此这两个服务器地址都填同一个地址,我们也没有添加SSL加密,所以SSL复选框先不选择,SSL加密的添加我会在以后的文章中详细说明。完成上述步骤后点击右下角的创建按钮完成新账号的添加。

添加完新账号后,我们就可以试着自己去发两个邮件试试了,作者自己试了试给qq邮箱发送邮件,能成功发送到对面邮箱的垃圾桶里,并且也能收到qq邮箱发进来的邮件,至此大功告成。

结语:
作者最近是想搞个电子邮箱服务器用一用的,但是用dovecot和postfix那些感觉太难用了(整了半天缺胳膊少腿的),所以整了下Apache James这个比较成熟完整的,没想到还挺好用,所以记录了下来,限于作者水平,本文还缺少很多细节,有些地方甚至可能有点错误,希望大家帮忙指正,感谢感谢。
[1]: https://james.apache.org/server/install.html
[2]: https://blog.youkuaiyun.com/weixin_43317111/article/details/131362855
[3]: https://www.cnblogs.com/eagle6688/p/17093139.html
3400

被折叠的 条评论
为什么被折叠?



