#> RESTKHZ _

休止千鹤 | 我依旧是一名平凡的学生

Docker搭建邮件系统(mailu)

  休止千鹤  |    01/01/2021

废话

去年,曾经在自己房间里的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背后的哲学是基于几条重要性递减的原则的:

  1. 一个适当/合适的邮件服务器只运行免费软件
  2. 一个适当/合适的邮件服务器应容易设置和维护
  3. 一个适当/合适的邮件服务器提供合适的安全
  4. 一个适当/合适的邮件服务器应该有简单美观的UI

哈,有点意思.

首先,很明显,Mailu是开放且免费的.

Mailu运行在Docker之中,而且使用了多个Docker容器,通过一个虚拟的内网来通信,对于一个VPS来说,很好的解决了一个多用途VPS管理维护的问题,某种意义上也解决了部分安全问题.

Mailu

如图,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发邮件限制解除看这里


 views:14

 Comments


(no comments...maybe you can be the first?)