程序员我爱编程

手动搭建apache james邮件服务器,实现邮件功能

2017-11-13  本文已影响325人  风间影月

最近一直在搞邮件这块,本来我们邮件发送是用的腾讯免费的企业邮箱,邮件功能没有问题,但是由于邮件的限制,如下:

image

这些限制导致我们的部分客户是收不到邮件的,哪怕付费,这样的固定频率限制也是无法解决的,可以说我们国内的邮件厂商都是这样,而国外的却要收费。

那么问题来了,如何突破发送邮件的频率限制?

1. 成为该企业用户的白名单,也就是说有关系,让邮件厂商后台开放就行

2. 自己搭建邮件服务器,其实这个就是最实在的

周末花了两天时间搭建了邮件服务器,也走了不少弯路,那么咱们今天就来说说

我自己搭了两款,一款是sendMail,这个搭建过程十分简单,一步一步安装,然后解析一下域名就能发送,sendMail只限于linux部署

而我们做java的接触的最多的就是apache的各大开源组件,而apache恰恰提供了邮件服务,那就是james

image

james目前已经更新到了3.0的beta5版本,这个版本不是稳定版的

image

而且在jdk7+会有bug存在,我也试过的确会报错

image

既然3.0还没有稳定版本并且带有bug,而我们仅仅只需要收发邮件,那么使用2.3的稳定版本是当然没有问题的

好!那我们现在开始使用jame2.3.2的稳定版本来做我们的邮件服务器:

首先需要在linux上安装jdk,我们使用的是JDK7(安装步骤略)

image

邮件服务器的smtp使用25端口,必须保证此端口没有被占用

image

如果被占用了,关闭即可

使用ftp工具把james-2.3.2的压缩包上传至服务器:

image

解压缩并且重命名后:

image image

进入bin目录,并且运行run.sh

image

哎哟,发现报错,没有这个命令

image

没关系,我们给phoenix.sh加上权限即可

image

然后服务器启动成功!

接下来我们就来进行james的相关配置:

ctrl+c 可以退出运行着的后台,然后我们进入以下目录

image

修改config.xml这个配置文件

image

找到并且修改这段配置

image

改为:

image

autodetct:true 表示自动侦测主机名,设成false会使用指定的server name

autodetectIP:true 表示会为你的servername加上ip,所以直接false就行

servername就改成你所需要的域名就行

注释掉此段代码

image

配置DNS Server,查看DNS

image

再查看主机dns

image

然后再设置如下:

image

找到并且注释这段代码

image

然后再修改hosts

image image

然后我们在来优化一下James内存使用,修改此目录下的这个文件

image

改成此配置即可

image

最后在bin下的phoenix.sh中添加如下配置

image

配置完后reboot一下

computer rebooting... ...

重启完后启动james,sh run.sh

这个时候启动完毕,james配置成功。这个时候,我们还是需要用户的,没有用户就不能不收发邮件了

修改用户名密码,这个主要用来登录james进行相关操作的

image

修改完后保存,这个时候我们就要添加用户了

先登录连接上james,但是发现命令不存在

image

那么直接安装一下即可

image

再次登录发现成功

image

james主要提供了如下命令,看名字就知道怎么用,十分简单

image

按照命令添加用户

image

OK,至此所以配置完毕,我们使用javamail来测试一下吧!

测试发送到163,搜狐,以及qq邮箱,163可以接受,而搜狐和qq不能接受,设置白名单就行

image

最终受到邮件就是这样的,红框匹配james中新增加的用户以及域名

image

关于发送的邮件被其他邮件厂商当成垃圾邮件,这个暂时没有解决,如果哪位大侠知道请随时指点一二!

尚自习 | 程序员的进阶平台 itzixi.com

微信公众号:BeJavaGod

Java技术交流群

上一篇下一篇

猜你喜欢

热点阅读