使用 Apache James 3.3.0(开源免费) 搭建内网电子邮件服务器(基于 Windows + Amazon Corretto 8)
电子邮件服务器,对于很多公司,都是需要的。
虽然现在很多人,使用 QQ 、微信进行一对一的工作沟通,使用QQ 群、微信群进行多人沟通,但这些即时聊天工具,与电子邮件相比,仍有很多不足:
a. 电子邮件正文内容,可以进行直接排版,修改字体名、字体大小、颜色、插入表格等,而即时聊天工具需要将排版内容放在附件中,聊天正文没有如此多的格式。
b. 大段文字的录入,电子邮件优势明显。
c. 过去的多次交流记录,电子邮件的搜索、归类功能(可以将某些邮件,移到同一个目录),强过聊天工具。
d. 电子邮件的群发,回复时,可随意添加几个人新的收件人、减去几个收件人,而即时聊天工具的“聊天群”,正常情况下,只增不减,因减去了一个人,往往被别人知道、且容易让别人不爽。导致“聊天群”的成员越来越多,最后群里的某些人说话,与群里大都数人都无关。于是大多数人都选择设置其“消息免打扰”,“聊天群”失去了工作的效率。
e. 聊天工具的即时性本质,导致很多都是快问快答,这与工作强调认真、思考的原则不符。
当然,这不是工具的错。
聊天工具里,别人问你一件事,你也可以想个四五个小时再答复,只是那样显得不太礼貌,且与大多数人的期望不符:即时聊天工具,就是要快问快答。
而使用电子邮件,本就允许对方多思考一会儿再回答。
如果决定了要搭建公司/组织的内部电子邮件服务器,可使用 Apache James(全称是 Java Apache Mail Enterprise Server)。这是一款开源免费软件,使用 Java 开发,可运行于 Windows /Linux 等大多数操作系统上。
以下是安装配置步骤:
1. 下载 JRE 8 .
可使用 Amazon Corretto 8, 文件大小 46M. 下载网址为:
https://aws.amazon.com/cn/corretto/
https://corretto.aws/downloads/resources/8.242.08.1/amazon-corretto-8.242.08.1-windows-x64-jre.zip
2. 解压缩 JRE 到 C:\apps\jre8 .也可放在其它目录。
Java 相关程序,建议目录路径中不要包含空格。
以下文字中, ${JRE_HOME} 代指 C:\apps\jre8
3. 下载 Apache James 3.3.
不要下载 Apache James 3.4,这个版本安装配置很困难,可能是发布时打包有些问题。
下载网址为:
https://james.apache.org/download.cgi#Apache_James_Server
https://archive.apache.org/dist/james/server/3.3.0/james-server-app-3.3.0-app.zip
4. 解压缩到 C:\apps\james-server-app-3.3.0。
也可以放在其它目录。同理,建议目录路径中不要包含空格。
以下文字中, 以下 ${JAMES_ROOT} 代指 C:\apps\james-server-app-3.3.0
5.备份目录:
${JAMES_ROOT}\bin
${JAMES_ROOT}\conf
6.修改 ${JAMES_ROOT}\bin\setenv.bat , 新增行:
set JAVA_HOME=C:\apps\jre8
set JAVACMD=C:\apps\jre8\bin\java.exe
7. 准备一个邮件域名,比如 my_org.com 为电子邮件域名,即 jack@my_org.com 的后半部分。
企业内部邮箱,无需购买域名。
8. 修改 C:\Windows\System32\drivers\etc\hosts , 增加行:
127.0.0.1 my_org.com
此处,
此配置是为了避免死循环:
某些情况下,jack@my_org.com 发送一封邮件到 tom@my_org.com,可能会被邮件服务器误以为是外部的邮箱地址,然后保存邮件到本地外发队列中,以 SMTP 邮件协议发出去。然后自己的 SMTP 服务器程序又收到此邮件。形成反复。
具体原因,可能是邮件服务器的具体实现问题,也可能是电子邮件服务器与 DNS 服务器相互配合的配置问题。
9. 修改 ${JAMES_ROOT}\conf\dnsservice.xml ,配置如下:
<servers>
<server>127.0.0.1</server>
</servers> <autodiscover>false</autodiscover>
<authoritative>false</authoritative>
意思是使用本地的 DNS 服务。一般来说,邮件服务器上,不同时安装 DNS 服务。
这种配置,就是说,即使 tom@my_org.com 发邮件到 help@other.com, 邮件服务器也不去询问公司内部的 DNS 服务器,other.com 对应的 IP 是多少,直接当成僵尸邮件,简单、直接、不废话。
10.修改 ${JAMES_ROOT}\conf\domainlist.xml ,配置如下:
<domainlist class="org.apache.james.domainlist.jpa.JPADomainList">
<autodetect>false</autodetect>
<autodetectIP>false</autodetectIP>
<defaultDomain>my_org.com</defaultDomain>
</domainlist>
11.修改 ${JAMES_ROOT}\conf\mailetcontainer.xml ,配置如下:
<context>
<postmaster>my_org.com</postmaster>
</context>
12. 开启带管理员权限的 DOS 窗口,启动 JAMES run.bat.
cd C:\apps\james-server-app-3.3.0\bin
c:
run.bat
得到输出 Apache James Server is successfully started
:
...
INFO 13:21:50,959 | org.apache.james.protocols.lib.netty.AbstractConfigurableAsyncServer | IMAP Service connection backlog is: 200
INFO 13:21:51,000 | org.apache.james.protocols.lib.netty.AbstractConfigurableAsyncServer | Init IMAP Service done
INFO 13:21:51,158 | org.apache.james.protocols.lib.netty.AbstractConfigurableAsyncServer | Manage Sieve Service disabled by configuration
INFO 13:21:55,518 | org.apache.james.app.spring.JamesAppSpringMain | Apache James Server is successfully started in 34397 milliseconds.
13. 开启新的 DOS 窗口,新建邮件服务器的“域”。
此处可能会报错:域已经存在。可忽略此报错。
cd C:\apps\james-server-app-3.3.0\bin
c:
james-cli.bat -h 127.0.0.1 -p 9999 adddomain my_org.com
14. 新建电子邮件用户及电子邮件地址:
james-cli.bat -h 127.0.0.1 -p 9999 AddUser test1@my_org.com Password12345
可以执行多次,以添加不同的用户账号及电子邮件。
Apache James 系统内部,区分用户账号、邮箱地址,是不同的概念。
一般使用用户,可以当成电子邮件就是用户账号。
15. 更改 Windows 防火墙设置的“入站规则”,允许以下端口的访问:
110 pop3
25 smtp
143 imap
16. 使用 james.bat 安装成 Windows 服务。
配置开机自行启动。
配置对应的运行账号。
Windows 系统里的邮件服务器,通常使用带网络权限的系统账号,或用户账号。一般应避免使用 Windows 系统管理员用户账号。
17. 各用户使用电子邮件客户端工具软件,比如 Mozilla Thunderbird , 添加 IMAP 邮件账号,连接到此邮件服务器。
如此,同一个人,可使用多台电脑,查看电子邮件。邮件保存在邮件服务器上。
如果用户在电子邮件客户端工具软件里配置使用 POP3 邮件协议,则邮件会收到用户电脑上、并从邮件服务器上删除。
在电子邮件客户端工具软件上,可选择 IMAP 、POP3 邮件协议。
使用 Apache James 3.3.0(开源免费) 搭建内网电子邮件服务器(基于 Windows + Amazon Corretto 8)的更多相关文章
- 使用 Apache James 3.3.0(开源免费) 搭建外网电子邮件服务器(基于 Windows + Amazon Corretto 8)
对于邮件服务器的安装,请先参阅: 使用 Apache James 3.3.0(开源免费) 搭建内网电子邮件服务器(基于 Windows + Amazon Corretto 8) https://www ...
- Apache James搭建内网邮件服务器
Apache James搭建内网邮件服务器 极客521 | 极客521 2014-08-21 148 阅读 java 大概之前两个礼拜的日子,讨论会介绍了关于了.net内网邮件服务器的搭建.所以自己也 ...
- 配置 Apache James 邮件服务器以使用加密邮件通讯协议
可先参照: 使用 Apache James 3.3.0(开源免费) 搭建内网电子邮件服务器(基于 Windows + Amazon Corretto 8)https://www.cnblogs.com ...
- 用Apache James 3.3.0 搭建个人邮箱服务器
准备域名 比如域名为example.net,则邮箱格式为test@example.net.在自己的域名管理界面,添加一条A记录(mail.example.net xxx.xxx.xxx.xxx),指 ...
- Django + Apache + 树莓派 搭建内网微信公众号服务器
其实早在微信开放公众号开发平台时就想弄一个自己的公众号服务器,奈何对web服务器搭建和开发一窍不通,只是注册了一下开发者帐号,并没有采取行动,万恶的拖延症. 前一年,开始接触python,打开了神奇世 ...
- 腾讯云函数免费搭建onedrive网盘
目录 腾讯云函数 介绍 真免费? 搭建教程 准备条件 创建云函数 创建触发器 配置SecretId和SecretKey 添加onedriver盘 自定义域名 访问路径处理 总结 搭建期间遇到的问题 想 ...
- 聊聊第一个开源项目(内网穿透) - CProxy
文章首发:聊聊第一个开源项目 - CProxy 作者:会玩code 初衷 最近在学C++,想写个项目练练手.对网络比较感兴趣,之前使用过ngrok(GO版本的内网穿透项目),看了部分源码,想把自己的一 ...
- .Net Core 2.0 的 ConsoleApp 搭建 Quartz(xml配置)windows服务
零.创建一个.Net Core 2.0 的ConsoleApp 应用,建完就是这个样子了. 添加Log4Net 的引用,(不想看可以不看,个人习惯)Install-Package log4net添加C ...
- 用 Apache James 搭建邮件服务器来收发邮件实践(一)(转)
Apache James 简称 James, 是 Java Apache Mail Enterprise Server的缩写.James 是100%基于Java的电子邮件服务器.它是一种独立的邮件服务 ...
随机推荐
- ElEmentUI选择器弹出框定位错乱问题解决(弹出框出现在左上角)
这个是原问题,我之前是没问题的,后来的突然出现了这个问题,查了好多没找到,后来看文档才发现的.通过这个问题,说明看文档的重要性,嘻嘻 解决办法是在选择器里插入一个 :popper-append-to- ...
- MySQL数据库之xtrabackup物理备份(一)
前言:说到数据库备份,我们知道可以用来对数据库进行备份的工具有mysqldump.mydumer.mysqlpump等等,实际工作中,机器上的数据库不大的话,都是用mysqldump工具来备份,这些备 ...
- 20200104模拟赛 问题A 图样
题目 分析: 老规矩,遇到期望要准备好随时投降... 大致想到了按位处理,然后分别下去搜索,再用组合数加加减减一下... 但是两个连通块之间连边的期望怎么算呢? 很好,投降... 下来看题解... 果 ...
- 用Python实现根据角4点进行矩阵二维插值并画出伪彩色图
哈哈,题目取得这么绕,其实就是自己写了一个很渣的类似图像放大的算法.已知矩阵四周的4点,扩展成更大的矩阵,中间的元素值均匀插入,例如: 矩阵: 1 2 3 4 扩展成3x3的: 1 1.5 2 ...
- CentOS7安装MySQL、Tomcat和GitBlit记录
一.安装MySQL 1.安装这个发布包 yum localinstall mysql-community-release-el6-5.noarch.rpm 可以通过下面的命令来确认这个仓库被成功添加: ...
- rtmp协议规范
译序: 本文是为截至发稿时止最新 Adobe 官方公布的 RTMP 规范.本文包含 RTMP 规范的全部内容.是第一个比较全面的 RTMP 规范的中译本.由于成文时间仓促,加上作者知识面所限,翻译错误 ...
- larabel Artisan Command 使用总结
larabel Artisan Command 使用总结 定义命令 在routes/console.php下定义命令 Artisan::command('ltf', function () { (ne ...
- Spring博客专栏
1. IOC和DI的理解 2. IOC的实现原理-反射与工厂模式 3. Spring进阶之路 4. SpringBoot配置类的使用 5. @ModelAttribute详解 6. @RequestP ...
- flask中使用SQLAlchemy操作mysql的一些注意事项和坑
一 ImportError: cannot import name 'db' 由于app最后才加载,所以其他文件,比如models.py不能从app.py导入任何变量, 要使用db可以先定义一个,之后 ...
- Nginx之keepalived高可用工具
1.创建两台虚拟机,分别为主机和从机,区别两台虚拟机的IP地址 2. 将keepalived上传到linux系统当中 3. cd /usr/local目录 4. tar -zxvf keepalive ...