废话
去年,曾经在自己房间里的Gen10服务器上搭建过一个 邮件系统 . 在Proxmox中的一个容器上使用了EwoMail. 然而身处异乡又频频搬家,最后因为生活中各种毛刺琐事,那个CT便再也没有闲心启动过了.
当时我选择使用EwoMail是因为它在国内还比较活跃,相关资料也很齐全.简要说明一下当时搭建过程:
- 使用了CentOS的CT模板
- 利用FRP转发端口到AWS的VPS上
- 设置SPF和DKIM等等
当时用了一阵子,也还可以(就是能用),但是这样子缺点也很明显:
- 在2020年centOS的变质,已经不再可靠.
- 由于网络环境,和内网转发这两个情况,使得这个本对服务可靠性要求极高的服务变得不稳定.
- 从民用地址转发,有些民用宽带为了防止Spam天然封锁了SMTP出站.
- 动态IP和民用宽带导致对于PTR和SPF设置成为了一大问题.尽管当时已经在mail-tester的spam测试中高分通过并且并没有邮箱会Block我的邮件.
- EwoMail在日后的维护上还是有点繁琐.尽管已经用CT单独创建了.
以上这些原因还是让我最终放弃了这个方案.
选择:寻找新方案
我决定在AWS上直接搭建邮件服务了,那么又有问题了:
- 服务器已经在跑别的服务了,很多国内开源邮箱的安装对于原来的服务是一场灾难.日后维护的环境混乱是致命的.
- 至于EwoMail必须需要一个CentOS,显然我不会选择CentOS.
- AWS默认不开放SMTP出站(最后写了解决)
看了看各种邮件系统, Mailu成为了我的选择.
介绍: Mailu的哲学
看到首页,文档式的页面赫然写着一行General Concepts: Philosophy.
Mailu背后的哲学是基于几条重要性递减的原则的:
- 一个适当/合适的邮件服务器只运行免费软件
- 一个适当/合适的邮件服务器应容易设置和维护
- 一个适当/合适的邮件服务器提供合适的安全
- 一个适当/合适的邮件服务器应该有简单美观的UI
哈,有点意思.
首先,很明显,Mailu是开放且免费的.
Mailu运行在Docker之中,而且使用了多个Docker容器,通过一个虚拟的内网来通信,对于一个VPS来说,很好的解决了一个多用途VPS管理维护的问题,某种意义上也解决了部分安全问题.

如图,portainer容器管理能看出来mailu是怎样的架构.
另外,和别的很多邮件系统一样,使用Roundcube或者Rainloop作为web email client. 有着美观的UI. 管理台基于Flask,维护配置也很简单.
安装
环境和准备
吹了一波了,开始动手吧.首先就是啃文档,准备环境和选择Mailu版本.在写本文时,Mailu的1.7是最新的稳定版,那么就选择Mailu1.7了.
至于环境,不像EwoMail,Mailu理论上可以在任何支持docker的机器上运行.
- Mailu官方更推荐使用Debian,因为他们的测试几乎都是在Deb上完成的.
- DockerAPI版本大于等于1.11.
- 而如果用docker-compose安装,那么(目前)需要compose版本为2.2
- 2GRAM,1G空闲,虽然我512M机器跑起来了.
硬件环境官方认为至少需要2GRAM机器并且确保1G是空闲的,出于稳定性考量,是应该这么做.但是很有趣的是,我vps机器只有512M的RAM.现在占用内存大概300M出头.SWAP几乎满载.因为在安装的时候数据库使用了sqlite.(个人邮件和机器邮件通知应该不会需要那么好的数据库性能)
施工中
Mailu的安装很有意思,在线生成docker-compose.[安装生成工具]
由于点点鼠标要啥有啥,具体需求因人而异并且未来应该会有变化,所以不会上截图, 而且至于你要敲什么命令, mailu会自动生成你要敲的命令太贴心了,我不啰嗦了.
存储卷就默认的/mailu就行,TLS除非有别的方案,letsencrypt,挺好的.
至于邮件客户端,可以选一下,提供rainloop和roundcube.都挺好看.
反病毒因为机器性能不行,没开.webdav,fetchmail随意.
至于IPv4 listen address按需要改一改,虽然不推荐0.0.0.0但是我设置的是0.0.0.0
至于数据库,为了压缩内存消耗,我选择了sqlite.嗯,和这个博客系统一样.
一些都设置好了,点击生成后会跳转链接,根据你刚才的选择配置,你跟着它一行一行把命令复制粘贴进终端,不会出错.
到此为止,你的邮件系统应该就搭建好了.
哦对了,希望你DNS的MX也设置好了.如果设置好了,此时进入后台配置一下,去/webmail里接收邮件应该没有任何问题.
我真没觉得这块还有啥好说的
剩下就是SPF,PTR这些设置.
最后
至于AWS中lightsail服务器smtp发邮件限制解除看这里
Comments
(no comments...maybe you can be the first?)