专栏首页BeJavaGod手动搭建apache james邮件服务器,实现邮件功能

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

如果被占用了,关闭即可

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

解压缩并且重命名后:

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

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

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

然后服务器启动成功!

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

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

修改config.xml这个配置文件

找到并且修改这段配置

改为:

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

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

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

注释掉此段代码

配置DNS Server,查看DNS

再查看主机dns

然后再设置如下:

找到并且注释这段代码:

然后再修改hosts

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

改成此配置即可

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

配置完后reboot一下

computer rebooting... ...

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

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

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

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

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

那么直接安装一下即可

再次登录发现成功

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

按照命令添加用户

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

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

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

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

好了,吃个汉堡上床碎觉!

本文分享自微信公众号 - BeJavaGod(wxleechenxiang),作者:李晨翔

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-02-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MongoDB-3 GUI客户端工具与用户权限

    不论是mysql或者redis或者es,我们都会使用远程的客户端工具来连接数据库server,那么目前的linux上锁安装的MongoDB就是server端,我...

    风间影月
  • 图片上传的两种形式

    很早以前的单应用项目上传图片都是很简单的,上传图片后在controller层设置路径并且保存到服务器的某个路径下就行了,数据库中存储路径地址,最后在tomcat...

    风间影月
  • Shiro系列(2) - 权限模型以及权限分配的两种方式

    顶级账户分配权限 用户需要被分配相应的权限才可访问相应的资源。权限是对于资源的操作一张许可证。给用户分配资源权限需要将权限的相关信息保存到数据库。 这些相关内容...

    风间影月
  • CephFS 介绍及使用经验分享

    消息: Client name failing to respond to cache pressure

    Lucien168
  • 优化空中救护车车队调度的算法(cs AI)

    在灾难情况下,空中救护快速反应往往是决定病人生存的因素。障碍加剧了这种情况,由于地理位置偏远和车辆安置的限制,这是一项艰巨的任务。考虑到这些因素,安排反应是一个...

    RockNPeng
  • 腾讯云服务器AMD CPU重庆机房配置综合体验测试记录

    上周的时候有看到腾讯云重庆机房AMD CPU配置在进行团购活动,确实从价格上看是比较便宜2GB内存配置仅需要年付180元,而且如果是新用户可以得到18个月使用权...

    用户6504960
  • Ceph MDS问题分析

    消息: “Client name failing to respond to cache pressure” 代码: MDS_HEALTH_CLIENT_R...

    Lucien168
  • 入门 | 自然语言处理是如何工作的?一步步教你构建 NLP 流水线

    计算机非常擅长使用结构化数据,例如电子表格和数据库表。但是我们人类通常用文字交流,而不是使用电子表格来交流。这对计算机来说不是一件好事。

    机器之心
  • 腾讯云服务器AMD CPU重庆机房配置综合体验测试记录

    上周的时候有看到腾讯云重庆机房AMD CPU配置在进行团购活动,确实从价格上看是比较便宜2GB内存配置仅需要年付180元,而且如果是新用户可以得到18个月使用权...

  • 在Linux Nginx配置HTTPS

    黄小怪

扫码关注云+社区

领取腾讯云代金券