自从弄了个高配置的 i7-1165G7 工控机后,就喜欢把各种系统或服务安装在工控机的虚拟化环境里。比如远程开发环境、远程电脑、Web服务器、网络云盘等等。
所谓 “Home邮局” 其实就是一个电子邮箱系统。Home 即意味着这个邮箱系统是部署在家庭网络里的,同时它还要具备在因特网上收发邮件这些基本的功能。
总体思路就是:
- 有一个具备公网IP的云服务器
- 有一个已备案的域名(云服务器在国外不需要备案)
- 创建一个用于部署系统邮箱系统的虚拟机
- 内网穿透,使用 frp 工具做把所有邮箱系统需要的端口全部映射到该虚拟机里
- 域名解析,按邮箱系统搭建所要求的进行配置
- 部署邮箱系统,在该虚拟机里直接部署,也可以使用 docker 部署
- 进行收发邮件测试
我最初图方便,使用宝塔面板里的宝塔邮局管理器进行搭建,但最后不幸流产。导致这一不幸的原因是宝塔邮局管理器配置 SSL 证书存在 bug :
- 使用手动解析,没有弹出需要配置的 TXT 记录信息,无法申请 SSL 证书
- 使用 API 验证,没有配置 DNSPod 令牌的选项(我的域名是在腾讯云买的)
- 自行配置证书,我使用其他方式申请的证书进行配置,但宝塔邮局系统保存无效
既然宝塔邮局用不了,那么就在网上找了一些开源邮箱系统:mailu、iRedMail、docker-mailserver。这几个系统中,mailu 和 iRedMail 都是具备 UI 界面的,我最后选择了小巧的 docker-mailserver 来搭建我的“Home邮局”。
搭建的过程并不复杂,就是搬砖的过程,十来分钟系统就跑起来了。当然,系统跑起来不算结束,还必须得测试通过。
这不,第一步登录就出现了问题。
由于 mailserver 没有 UI 界面,我使用 macOS 自带的邮箱应用访问新搭建的”Home邮局”,登录就遇到问题——连接不上。在确认密码输入无误之后,我猜应该是 mailserver 的密码规则的问题,我之前配置的密码过于复杂,有几个不被允许的特殊字符存在,便重新使用命令修改了邮箱密码,然后成功登录。
接下来就是重头戏——收发邮件。
于是,我向 QQ 邮箱发送了一封邮件,结果如下:
这个问题是找不到地址,很显然是 docker-mailserver 容器的网络问题,配置了 DNS 并重启容器后,正确的邮件发送成功:
然后使用 QQ 邮箱回复收到的邮件,“Home邮局”成功收到回复的邮件:
再用多年未用的 163 邮箱进行测试,发送、接收都成功:
测试发送带图片的邮件,效果很赞:
至此,“Home邮局“基本搭建完毕,还剩余的问题是:
- 由于没有反向DNS解析,导致QQ邮箱会标识 “此地址未验证,请注意识别” 这样的警告,但是腾讯云的PTR需要1500元/年,舍弃!
- “Home邮局“ 可以收到 Gmail 发来的邮件,但发往 Gmail 却发不出。刚开始以为是 docker 容器里没法访问外网(后续测试可以),根据日志查了很多资料,也无法解决。姑且猜测——这个应该也是没有反向DNS解析导致的吧~
在家用网络搭建邮箱系统的一个额外好处:
一般的云服务器厂商均封锁了出方向的 25 端口(可以通过提交工单申请解封),而家庭网络里没有封锁。