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

还差一条需要等待配置mailu docker 完成

生成 docker 配置

访问 https://setup.mailu.io/

按下图配置:

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中