自建邮箱服务器调研实践
前置概念
涉及协议
-
SMTP(Simple Mail Transfer Protocol)TCP 25 核心投递协议
- Submission 提交协议(SMTP 加密变体)TCP 587
- SMTPS 加密直连 TCP 465
-
IMAP(Internet Message Access Protocol)TCP 143 / 993 (加密) 收信拉取协议(用户下载邮件)
需要添加域名记录
-
A记录
-
MX 记录(Mail Exchange 邮件交换)
-
SPF 记录(Sender Policy Framework 发件人策略) TXT 记录
-
DKIM(DomainKeys Identified Mail 域名密钥识别邮件) TXT (_domainkey 前缀)
-
DMARC(Domain-based Message Authentication Reporting and Conformance) TXT (_dmarc 前缀)
步骤暂存修改
-
服务已经启动. 目录从根 移到了 /root/mail
-
解析 还差一个 配置 DKIM
-
docker compose -p mailu exec admin flask mailu admin admin zqsrh.com PASSWORD
Mailu 确实是你当前 **2C2G 阿里云 ECS** 最合适的方案。
不过在开始部署之前,我建议先确认 **3 个关键条件**,否则即使安装成功也可能无法正常收发邮件:
## 第一步:确认服务器条件
### 1. 操作系统
推荐:
```bash
Ubuntu 22.04 LTS
```
查看:
```bash
cat /etc/os-release
```
---
### 2. ECS 公网 IP
查看:
```bash
curl ifconfig.me
```
记录下来,例如:
```text
47.xx.xx.xx
```
---
### 3. 出站 25 端口是否可用(最重要)
测试:
```bash
nc -zv gmail-smtp-in.l.google.com 25
```
或者:
```bash
telnet gmail-smtp-in.l.google.com 25
```
正常应看到类似:
```text
Connection succeeded
```
如果超时或拒绝连接:
```text
自建邮件服务器无法向外发送邮件
```
这一步必须先确认。
---
## 第二步:规划域名
假设你的域名:
```text
example.com
```
邮件服务器主机名:
```text
mail.example.com
```
邮箱:
```text
admin@example.com
```
请不要直接把根域名当邮件服务器。
推荐:
```text
mail.example.com
```
作为 SMTP / IMAP 服务器。
---
## 第三步:配置 DNS
在阿里云 DNS 中配置。
### A 记录
```dns
mail.example.com
A
47.xx.xx.xx
```
---
### MX 记录
```dns
@
MX 10
mail.example.com
```
---
### SPF
```dns
@
TXT
v=spf1 mx ip4:47.xx.xx.xx -all
```
---
### DMARC
```dns
_dmarc
TXT
v=DMARC1; p=quarantine; rua=mailto:admin@example.com
```
---
先不要配置 DKIM。
Mailu 启动后会生成 DKIM 公钥。
---
## 第四步:开放端口
阿里云安全组放行:
```text
25
465
587
80
443
110
995
143
993
4190
```
同时检查 Ubuntu 防火墙:
```bash
ufw status
```
如果开启:
```bash
ufw allow 25/tcp
ufw allow 465/tcp
ufw allow 587/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 143/tcp
ufw allow 993/tcp
ufw allow 110/tcp
ufw allow 995/tcp
```
---
# 第五步:安装 Docker
更新系统:
```bash
apt update
apt upgrade -y
```
安装 Docker:
```bash
apt install -y docker.io docker-compose-plugin
```
启动:
```bash
systemctl enable docker
systemctl start docker
```
检查:
```bash
docker version
```
---
# 第六步:生成 Mailu 配置
Mailu 官方提供配置生成器:
[Mailu Setup Generator](https://setup.mailu.io?utm_source=chatgpt.com)
推荐填写:
### Mailu version
```text
2.0
```
---
### Main mail domain
```text
example.com
```
---
### Hostnames
```text
mail.example.com
```
---
### TLS
```text
Let's Encrypt
```
---
### Webmail
勾选:
```text
Roundcube
```
资源占用较低。
---
### Antivirus
不勾选:
```text
ClamAV
```
2G 内存机器先不要启用。
---
### WebDAV
不勾选。
---
### Fetchmail
不勾选。
---
### Admin
勾选。
---
生成后下载:
```text
mailu.zip
```
上传到服务器:
```bash
scp mailu.zip root@服务器IP:/root
```
---
# 第七步:解压
```bash
apt install unzip -y
unzip mailu.zip
cd mailu
```
目录大概:
```text
mailu/
├── docker-compose.yml
├── mailu.env
```
---
# 第八步:启动
```bash
docker compose up -d
```
查看:
```bash
docker ps
```
应看到:
```text
mailu-front
mailu-admin
mailu-imap
mailu-smtp
mailu-webmail
mailu-redis
```
---
# 第九步:初始化管理员
进入:
```text
https://mail.example.com/admin
```
首次登录账号密码在 `mailu.env` 中配置或按生成器说明创建。
如果没有管理员用户,可以进入 admin 容器创建:
```bash
docker compose exec admin flask mailu admin admin example.com 'StrongPassword'
```
创建后登录:
```text
admin@example.com
```
---
# 第十步:创建邮箱
后台:
```text
Domains
```
创建:
```text
example.com
```
然后:
```text
Users
```
创建:
```text
admin@example.com
```
---
# 第十一步:配置 DKIM
启动后查看:
```bash
docker compose exec admin flask mailu config-export
```
或者在后台:
```text
Domain -> DKIM Keys
```
会看到类似:
```dns
mail._domainkey
TXT
v=DKIM1; k=rsa; p=......
```
复制到阿里云 DNS。
等待解析生效。
---
# 第十二步:验证
检查 MX:
```bash
dig MX example.com
```
检查 SPF:
```bash
dig TXT example.com
```
检查 DKIM:
```bash
dig TXT mail._domainkey.example.com
```
---
# 第十三步:送达率测试
注册一个 Gmail。
给自己发送:
```text
admin@example.com
→
你的 Gmail
```
然后查看邮件头:
```text
SPF PASS
DKIM PASS
DMARC PASS
```
---
## 我建议你先执行
```bash
cat /etc/os-release
free -h
curl ifconfig.me
nc -zv gmail-smtp-in.l.google.com 25
```
把结果发给我。
我可以根据你的 ECS 实际情况(Ubuntu 版本、内存、25 端口状态)帮你调整 Mailu 配置,避免部署到一半发现发信受限。