Ubuntu 搭建 Mailu 邮箱服务器
51
|
2025-03-18 06:00:43
*首先先确认你的服务器是否允许 25|143|587|993|465 这些端口的(国内基本上所有的云服务器现在都是不开放的)
下面以 25 端口为例测试
# remote server 远程服务器监听25端口
sudo nc -l -p 25
#local 本地测试服务器25端口是否能访问
telnet XX.XX.XX.XX 25
结束 telnet 命令 先 ctrl + ], 在输入 quit
接下来解析部分DNS
- A / mail / XX.XX.XX
- MX / @ / mail.domain.com / 优先级:10
- TXT / @ / v=spf1 mx a:mail.domain.com ~all
- TXT / _dmarc / v=DMARC1; p=reject; rua=mailto:admin@domain.com; ruf=mailto:admin@domain.com; adkim=s; aspf=s
- TXT / domain.com._report._dmarc / v=DMARC1;
还差一条需要等待配置mailu docker 完成
生成 docker 配置
按下图配置:

Enable the admin UI | Enable Web email client 一定要选,否者你很难在网上找到正确的配置
API/IPv6看个人需求
点击 setup Mailu 生成配置
安装 docker + mailu
# 移除冲突包
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
# 添加 docker GPG key
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# 添加源
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
# 安装docker
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 验证
docker version
docker compose version
# 创建目录
mkdir /mailu && cd /mailu
# 获取上一步生成的配置
wget https://setup.mailu.io/2024.06/file/XXXXXXXXXXXXXXXXXXXXXXXXXXX/docker-compose.yml
wget https://setup.mailu.io/2024.06/file/XXXXXXXXXXXXXXXXXXXXXXXXXXX/mailu.env
# 由于我服务器上还配置了网址,所以要使用到nginx反向代理
# 如果你不需要,跳转到 “运行 mailu”,同时在线配置中的 Choose how you wish to handle security TLS certificates 也可以直接选择“letsencrypt”
# vim mailu.env
REAL_IP_HEADER=X-Real-IP
REAL_IP_FROM=服务器公网ip
# vim docker-compose.yml
ports:
- "服务器公网ip:8008:80"
- "服务器公网ip:8443:443"
# 创建 nginx 反向代理 配置文件; 证书自己申请(免费的 acme.sh)
server {
listen 80;
listen 443 ssl;
server_name mail.yourdomain.com;
# if ($scheme = http) {
# return 301 https://$host$request_uri;
# }
ssl_certificate /certs/yourdomain.com/cert.pem;
ssl_certificate_key /certs/yourdomain.com/key.pem;
location / {
proxy_pass https://公网ip:8443;
proxy_ssl_verify off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
# 重载 nginx
service nginx force-reload
# 运行 mailu
cd /mailu && docker compose -p mailu up -d
# 检查运行状态,如果存在unhealth就是有问题,第一次运行他会安装证书,可能会有点慢
docker compose ps
# 查看日志
docker compose logs
# 查看具体服务日志
docker compose logs front
# 关闭
docker compose down
# 创建管理员
docker compose -p mailu exec admin flask mailu admin admin yourdomain.com PASSWORD
# 创建用户,也可在 admin 管理面板添加
docker compose -p mailu exec admin flask mailu user YourUserName yourdomain.com PASSWORD
访问管理端:mail.yourdomain.com/admin
访问webmail:mail.yourdomain.com/webmail
补充缺失的dns
打开 /admin, 登录, 找到下面的按钮
进去后点右上角的生成密钥
把 DNS DKIM条目 增加到你的域名dns中