几乎所有市面上的免费邮箱服务,都是以牺牲你的隐私和数据为代价,利用你的大数据来进行广告行为分析来盈利,而且免费邮箱都有邮箱数量,强制绑定手机号等等限制,所以为了保护我们的数据隐私以及创建无限数量邮箱,我们可以自己自建邮箱服务。
服务器准备
按照官网的说法,推荐的最小配置要求如下:
| Resource | mailcow: dockerized |
|---|---|
| CPU | 1 GHz |
| 内存 | 最低 6 GiB + 1 GiB swap (实际测试 4 GiB 内存也足够) |
| 硬盘 | 20 GiB (不包含邮件的占用) |
| 系统 | x86_64 |
并且从防火墙放行这几个 TCP 端口:
| 服务 | 协议 | 端口 | 容器名 |
|---|---|---|---|
| Postfix SMTP | TCP | 25 | postfix-mailcow |
| Postfix SMTPS | TCP | 465 | postfix-mailcow |
| Postfix Submission | TCP | 587 | postfix-mailcow |
| Dovecot IMAP | TCP | 143 | dovecot-mailcow |
| Dovecot IMAPS | TCP | 993 | dovecot-mailcow |
| Dovecot POP3 | TCP | 110 | dovecot-mailcow |
| Dovecot POP3S | TCP | 995 | dovecot-mailcow |
| Dovecot ManageSieve | TCP | 4190 | dovecot-mailcow |
| HTTP(S) | TCP | 80/443 | nginx-mailcow |
请注意,因为垃圾邮件滥用的原因,很多国外的 VPS 商家并不允许架设邮件发送服务器,并且默认 25 端口的出口方向是屏蔽的,请自行咨询厂商。
设置 DNS 解析记录
假设邮箱服务器需要使用域名 mail.example.com,想搭建 `username@example.com` 的邮箱;
服务器 IPv4 为 192.0.2.25,IPv6 为 2001:db8::25,那么请预先做好如下解析:
| 域名 | 解析类型 | 解析值 |
|---|---|---|
| mail.example.com | A | 192.0.2.25 |
| mail.example.com | AAAA | 2001:db8::25 |
| example.com | MX | 10 mail.example.com. |
| example.com | TXT | “v=spf1 mx ~all” |
| _dmarc.example.com | TXT | “v=DMARC1; p=reject; sp=reject; adkim=s; aspf=s;” |
| autodiscover.example.com | CNAME | mail.example.com. |
| autoconfig.example.com | CNAME | mail.example.com. |
注意:某些 DNS 厂商的控制面板添加 MX 和 CNAME 记录时不需要输入最后的点号,添加 TXT 记录时不需要最前面和最后面的引号。
另外需要联系你的 VPS 厂商,设置 PTR 记录,即 IP 反向解析,请设置 192.0.2.25 和 2001:db8::25 的 PTR 记录为 mail.example.com. 提高邮件到达率。
安装 Mailcow
安装依赖工具
1 | yum install -y git openssl curl gawk coreutils grep jq |
拉取项目代码
1 | git clone https://github.com/mailcow/mailcow-dockerized |
生成配置文件,请注意使用 FQDN (比如 mail.example.com) 作为 hostname:
1 | bash generate_config.sh |
按照提示输入自己的需求后即可生成好配置文件 mailcow.conf,如有需要可以自己修改这个文件。
官方提供的docker-compose.yaml有些镜像由于网络原因拉不下来,我在网上找了国内网络可以拉取的对应镜像,如下:
1 | [root@localhost mailcow]# cat docker-compose.yml |grep -B2 image |
然后拉取 Docker 镜像并启动
1 | docker compose pull |
耐心等待几分钟后即可访问 https://mail.example.com/admin 默认用户名 admin 默认密码 moohoo,建议立马修改并开启 2FA 两步验证确保安全。
添加域名和邮箱
进入 Mailcow 后台后,我们可以在顶部的 E-mail > 配置 里添加域名

按照自己的要求填入各种设置:

如果需要立马生效 Web 客户端,可以选择 Add domain and restart SOGo:

开启 DKIM 并添加 DNS 记录
开启 DKIM 后邮件发信到达率更高,你可以登录 Mailcow 后台后在 系统 > 配置 > 选项 > ARC/DKIM keys 查看你域名的 dkim 记录值:

右边那一串 v=DKIM1;k=rsa;t=s;s=email;p= 的 2048 位字符即你的 DKIM 值,如果未开启,可以在下方输入域名,选择 2048 位,然后点 + Add 按钮添加

默认添加完域名后即开启了 DKIM,且 Selector 设置为 dkim,然后我们需要添加如下 DNS 记录:
| 域名 | 解析类型 | 解析值 |
|---|---|---|
| dkim._domainkey.example.com | TXT | “v=DKIM1;k=rsa;t=s;s=email;p=blablablablablabla” |
某些 DNS 厂商的后台可能无法直接添加 2048 位 DKIM 的 TXT 记录,因为 TXT 类型的 DNS 记录最大长度为 255 个字符,那么请手工截断成两个 TXT 记录,第一个需要 255 个字符,第二个记录为剩下的字符串
添加邮箱用户
我们可以在 Mailboxes 这个 tab 里选择 +Add mailbox 按钮添加用户:

按要求提示填写即可:

测试邮件
我们使用刚开的用户登录 Mailcow 自带的 SOGo,默认情况下地址为 https://mail.example.com
登录之后可以测试是否能正常收发邮件:
发邮件:

收邮件:

想看邮件分数可以在 mail-tester.com 发送一封 Plain Text 格式的测试邮件,稍等片刻后即可查看你的邮件分数,可以按照他的提示来修改以提高分数,避免发送邮件被放到垃圾邮箱:


