网络要求 首先安装docker,并确保服务器的25端口开放,可使用telnet检查
若出现以下信息,证明25端口可用
1 2 3 4 Trying 111.124.203.45... Connected to smtp163.mail.ntes53.netease.com. Escape character is '^]'. 220 163.com Anti-spam GT for Coremail System (163com[20141201])
添加DNS记录
添加A/AAAA记录,解析mail.example.com
安装docker 详细教程请参考Docker CE 软件仓库
生成Mailu配置文件 前往Mailu Setup ,根据需求更改
注意:
因为我们要用到Caddy的反代,所以不需要Mailu自动获取Let's Encrypt的证书,需要手动配置,因此Choose how you wish to handle security只能选择mail
Enable Web email client选择一个顺眼的,默认不使用,其他功能按需启用
在Setp 3内,IPv4 listen address请填入本机真实IP,可以是内网IP(一般服务器都有)
修改配置文件 修改Mailu配置 配置完成后点击Setup Mailu,将docker-compose.yml和mailu.env下载到本地进行修改
对于docker-compose.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 services: redis: image: redis:alpine restart: always volumes: - "/mailu/redis:/data" depends_on: - resolver dns: - 192.168 .203 .254 front: image: ghcr.nju.edu.cn/mailu/${DOCKER_PREFIX:-}nginx:${MAILU_VERSION:-2024.06} restart: always env_file: mailu.env logging: driver: journald options: tag: mailu-front ports: - "172..10.0.1:8080:80" - "172..10.0.1:4433:443" - "172..10.0.1:25:25" - "172..10.0.1:465:465" - "172..10.0.1:587:587" - "172..10.0.1:110:110" - "172..10.0.1:995:995" - "172..10.0.1:143:143" - "172..10.0.1:993:993" - "172..10.0.1:4190:4190" networks: - default - webmail - radicale volumes: - "/mailu/certs:/certs" - "/mailu/overrides/nginx:/overrides:ro" depends_on: - resolver dns: - 192.168 .203 .254 ...... networks: default: driver: bridge ipam: driver: default config: - subnet: 192.168 .203 .0 /24 radicale: driver: bridge webmail: driver: bridge oletools: driver: bridge internal: true
只需要在front:里修改80和443的端口即可
对于mailu.env,修改以下内容,防止Caddy反代出现502错误 **!很重要!**折腾了一晚上才搞明白
1 2 3 REAL_IP_HEADER=X-Real-IP REAL_IP_FROM=172.10.0.1#你的IP地址 TLS_FLAVOR=mail
Caddy反代配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 mail.example.com { encode gzip zstd tls { protocols tls1.3 } header { Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" # HSTS Referrer-Policy strict-origin-when-cross-origin X-Permitted-Cross-Domain-Policies "none" X-Frame-Options SAMEORIGIN X-Content-Type-Options nosniff X-XSS-Protection "1; mode=block" -Server } reverse_proxy 172.16.0.3:8080 #请自行修改 }
接下来,重启Caddy,让Caddy自动获取证书
Caddy 的默认证书目录为 /var/lib/caddy/.local/share/caddy/certificates/
mail.exmaple.com.crt对应/mailu/certs/cert.pem
mail.exmaple.com.key对应/mailu/certs/key.pem
运行Mailu 上传配置,启动docker
1 docker-compose -p mailu up -d
创建管理员账户
1 docker-compose -p mailu exec admin flask mailu admin hi MAIL.EXAMPLE.COM 'PASSWORD'
请修改域名和密码后再运行
配置记录… 下面是更为详细、完整的配置:
Mailu 搭建邮局的不完全指南 - Sanae
安装和配置电子邮件服务端软件 Mailu - CTmH