使用Mailu.io搭建基于Docker的域名邮箱

 

Mailu.io是一款免费开源且性能强大、功能丰富的域名邮箱系统。它基于Docker, 具有部署简单,可移植性高,备份方便等多种优势。之前,我们介绍过Poste邮箱系统的搭建;Poste已经很久不再更新了,而Mailu则是Poste的升级版,一直稳定更新。

今天,我们就来介绍如何搭建并使用Mailu.io域名邮箱。类似的域名邮箱系统,我们还推荐iRedMailZimbra, 您可以自行比较并选择喜欢的程序。本文作者为香菇肥牛,原文链接为https://qing.su/article/mail-hosting-with-mailu-io.html, 转载需注明原文链接。

 

1, 系统环境要求

由于Mailu基于Docker, 因此几乎可以在任何版本的Linux发行版上安装使用。安装前,请确保您的服务器有2 GB的内存,并拥有一个独立IP地址。

在安装之前,您需要确保您的VPS的25端口是开放的。您可以在您的VPS上执行下面的命令来测试25端口是否开放。

1
telnet smtp.aol.com 25

如果看到类似下面的回显,则说明端口是开放的:

1
2
3
4
Trying 74.6.141.50...
Connected to smtp.aol.g03.yahoodns.net.
Escape character is '^]'.
220 smtp.mail.yahoo.com ESMTP ready

如果显示超时,说明25端口不开放;您需要向主机商申请开放25端口,或者更换一台VPS.

本文中,我们将在一台Ubuntu 20.04 LTS 64 bit操作系统的VPS中安装。在其他操作系统中的安装步骤类似。

 

2, 主机名与DNS设置

设置好主机名(服务器名, Hostname)是所有邮件服务器必不可少的一步,否则在发信时将会遇到各种错误。

如果您的域名为example.com, 那么我建议您的邮件服务器主机名可以设置为mail.example.com或者mx.example.com.  如果您不知道如何设置服务器名,请参考我们的图文视频教程

下文中,我们将以mx.qing.su作为主机名介绍整个系统的部署。当您设置好主机名之后(以mx.qing.su为例),在SSH中执行命令:

1
hostname

此时您应当看到系统显示mx.  如果系统显示mx.qing.su, 说明主机名设置错误,请重新设置。

在SSH中执行命令:

1
hostname -f

此时您应当看到系统显示mx.qing.su.

设置好主机名之后,您还需要设置DNS解析记录。DNS记录的设置分为两部分,一部分需要在搭建邮箱之前设置,另一部分(DKIM)在搭建邮箱之后设置。我们先介绍第一部分。假设您的服务器IP地址为88.88.88.88, 那么您需要到您域名的DNS服务提供商处,添加下面的五条记录:

  • 将域名qing.su设置任意一条A记录或者ALIAS记录,值为任意。如果您不使用该域名做网站,您可以设置一条A记录,解析到127.0.0.1.  请注意,根域名不能设置CNAME记录。
  • 将域名mx.qing.su设置A记录,解析到88.88.88.88
  • 将域名qing.su设置MX记录,优先级为10,解析值为mx.qing.su
  • SPF: 将域名qing.su设置TXT记录,解析值为”v=spf1 mx ~all”
  • DMARC: 将域名_dmarc.qing.su设置TXT记录,解析值为”v=DMARC1; p=none; pct=100; rua=mailto:admin@qing.su”

然后,您需要到您的VPS服务商处,为您的IP地址设置逆向DNS记录(Reverse DNS, PTR), 将88.88.88.88解析到mx.qing.su.

设置好这些之后,我们就可以开始部署Mailu域名邮箱了。

 

3, 安装Docker与Docker Compose

前面说过,Mailu基于Docker.  这里我将以Ubuntu 20.04 LTS操作系统为例,简要记录Docker与Docker Compose的安装。如果您对Docker非常了解,可以跳过这一部分。如果您使用的是其他操作系统,可以在这里(https://docs.docker.com/engine/install/, https://docs.docker.com/compose/install/)找到对应的安装步骤。

安装Docker Engine:

1
2
3
4
5
6
apt-get update && apt-get upgrade
apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io

安装Docker Compose:

1
2
curl -L "https://github.com/docker/compose/releases/download/1.27.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

 

4, 配置Mailu服务器

Mailu服务器提供了一个自动生成配置文件的网页,非常方便。因此,我们将使用这个网页来生成配置文件。它的地址是https://setup.mailu.io/

打开网页后,第一步是选择版本与Docker管理方式。这里我们选择最新版1.7, Docker管理方式选择Docker.

设置Mailu版本与Docker

第二步,需要设置路径与域名信息。请按照下图填写,并替换为您的域名。请注意,Main mail domain and server display name应该填写您的根域名,比如我这里是qing.su; 而Linked Website URL, 则填写您的邮件服务器主机名,这里我们填写https://mx.qing.su.  在TLS certificates这里,我们选择letsencrypt, 系统将会自动帮我们生成Let’s Encrypt证书。您也可以选择自己提供证书。下方的Enable the admin UI请务必勾选,否则系统将不会安装Web管理面板。

设置Mailu路径与管理员信息

第三步,选择网页邮箱的面板。这里可以选择Roundcube和Rainloop, 您可以根据个人偏好来选择。我这里推荐Rainloop,它更美观,且对移动端的适配更好。Rainloop支持中文显示。下面的三个选项分别是杀毒、WebDAV、邮件代收,您可以根据自己的需要来勾选。

第四步,配置IP与主机名。请在IP listen address中填写您服务器的IP地址,比如88.88.88.88.  第二行是设置Docker的子网,一般保持默认即可。IPv6建议不启用。Unbound resolver建议启用。最后一栏,填写您的服务器的长主机名,我这里是mx.qing.su.

配置IP地址与主机名

第五步,也是最后一步,选择数据库。这里我们选择最简单的Sqlite即可。您也可以选择其他的数据库,比如MySQL或者PostgreSQL.

选择数据库

选择完毕后,点击Setup Mailu, 系统就会自动帮你生成好配置文件了,如下图。

系统生成的Mailu配置文件

 

5, 运行Mailu服务器

按照上述步骤生成好Mailu配置文件,就可以运行Mailu服务器了。回到SSH, 执行:

1
2
mkdir /mailu
cd /mailu

然后找到之前那个页面生成的配置文件链接,下载到/mailu文件夹中:

1
2
wget http://setup.mailu.io/1.7/file/edda7279-qing-su-qing-su-04773fdf23f9/docker-compose.yml
wget http://setup.mailu.io/1.7/file/edda7279-qing-su-qing-su-04773fdf23f9/mailu.env

最后,使用Docker compose运行。

1
docker-compose -p mailu up -d

初次使用,系统将会下载几个Docker镜像,需要数分钟的时间。等系统提示完成后,Mailu就处于运行状态了。

部分朋友在初次运行Mailu的时候会遇到类似于下图的报错:

Mailu运行报错

如果遇到这种情况,您可以编辑docker-compose.yml文件,删除掉所有绑定了[::1]地址与端口的行,然后重新运行上面的命令即可。

 

6, 使用Mailu域名邮箱

在第一次登录Mailu服务器后台面板之前,需要新建一个管理员账户。在SSH中执行:

1
docker-compose -p mailu exec admin flask mailu admin hello example.com qing.su

这样,我们就创建了一个用户名为hello@example.com, 密码为qing.su的管理员账户。请替换为您需要的值。

创建完毕,您就可以在浏览器中访问https://mx.qing.su/admin登录您的管理员面板了,如下图。

Mailu后台面板

点击左侧Mail Domains, 就能管理我们的邮箱域名。在域名管理界面,点击右上角New domain, 即可添加域名。点击下图中的红框部分,即可添加用户;点击绿框部分,则进入域名详情页。

管理邮箱域名

点击上图中的红框,进入用户管理界面,如下图:

添加邮箱用户

这里我们可以输入邮箱前缀,密码,姓名。下方的Features and quotas可以设置邮箱容量,并且可以设置是否允许IMAP和POP3客户端登录收信。设置完毕后,点击Save, 就添加好了用户。

在域名管理界面,点击之前那张图的绿框部分,则进入了域名详情页。我们点击右上角的Generate keys, 即可生成DKIM记录。如下图。

根据上图的信息,您需要去您的DNS服务器运营商设置域名的DKIM记录。比如,以我的qing.su域名为例,我需要设置下面的DKIM记录:

  • 将域名dkim._domainkey.qing.su设置TXT记录,解析值为”v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDK8nX8NbQ/16bb7zUqZif39emugOQpBDTXeLTqKhmrhPHFt5RgrDj9ibL18ovXKsQONjXZ+qNE407+KQZWcVLFvCQ6jtl1ojSfnJGeltGRqgfjw0nIAFQ9P6UVO5fiyrnxR4NZ+MDKvsv33NMgJxpEH6O8hQ/K2mDM+mDcIIbOwQIDAQAB”

这样,我们就完成了全部的DNS设置。此时,您的域名邮箱已经全部搭建并配置完毕,可以收发信了。

访问https://mx.qing.su就会自动跳转到网页邮箱的登录界面。如果您在配置时选择了Rainloop, 则第一次登录时可以在界面上选择语言,比如简体中文。

我们使用mail-tester.com测试发信,可以看到评分为满分10分。

Mail-tester邮件测试

 

 

综上,我们使用了Mailu.io这款基于Docker的多功能的邮件服务器程序,在VPS上搭建了属于自己的域名邮箱。如果您有任何疑问,欢迎在这里留言,我将尽力解答。如果您喜欢这篇文章,欢迎转发给朋友们。

本文作者为香菇肥牛,原文链接为https://qing.su/article/mail-hosting-with-mailu-io.html, 转载需注明原文链接,谢谢。

43 thoughts on “使用Mailu.io搭建基于Docker的域名邮箱”

  1. 您需要到您的VPS服务商处,为您的IP地址设置逆向DNS记录(Reverse DNS, PTR), 将88.88.88.88解析到mx.qing.su.
    请问这个自己可以解析吗?必须得vps服务商吗?

    Reply
  2. 如果webmail要在内网使用,IP也是内网的,这种的设置了能用吗?我在CentOS下都安装好了,没有错误,但开网页要进入管理员配置界面的时候跟我说页面载入出错,连接失败。

    Reply
  3. Valuable content plus a easy to read layout. Your website earns the numerous supportive comments it has been accumulating. Maritsa Wolfie Aholla

    Reply
  4. 请问博主全程安装你的步骤操作的,到最后打开网页提示403这是什么问题呢?

    Reply
  5. This is great perspective from veteran biologist and old colleague Roger Harris sharing his thoughts on the utility of biology as a metaphor for business. I love it. Rhonda Townie Tynan

    Reply
  6. Ornare lectus sit amet est placerat in egestas. Sit amet nisl suscipit adipiscing bibendum est. Consequat ac felis donec et odio pellentesque diam. Petronia Giustino Monti

    Reply
  7. You can definitely see your enthusiasm in the paintings you write. The world hopes for even more passionate writers such as you who are not afraid to mention how they believe. Always go after your heart. Jacquie Baryram Severin

    Reply
  8. Having read this I thought it was extremely informative. I appreciate you finding the time and effort to put this short article together. I once again find myself personally spending way too much time both reading and posting comments. But so what, it was still worthwhile! Lani Garald Shina

    Reply

Leave a Comment