Files
NewSzxcn-Email/deploy/README.md
T
LanQin f8ff2a814b chore(deploy): 将 DKIM 组件切换为 Rspamd
- 用 Rspamd 替换 OpenDKIM 及其相关镜像、编排和启动脚本。
- 调整 Postfix、单容器镜像与 Docker 配置,改为对接 Rspamd milter。
- 增加 DKIM 私钥同步脚本与 Rspamd 本地配置,支持从 SQLite 周期导出签名密钥。
- 更新 API 启动与测试逻辑,兼容新的默认管理员邮箱与邮箱加载方式。
2026-06-15 23:41:21 +08:00

137 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# LanQin Email Docker 部署说明
## 最简单部署:单容器镜像版
服务器上不需要源码构建,只要 `docker-compose.yml``.env` 即可。
```bash
cd deploy
cp .env.example .env
# 修改 LANQIN_PUBLIC_HOSTNAME / LANQIN_PUBLIC_BASE_URL / LANQIN_ADMIN_EMAIL / LANQIN_ADMIN_PASSWORD
docker compose pull
docker compose up -d
```
也可以使用脚本:
```bash
cd deploy
bash install.sh
```
第一次执行会生成 `.env` 并提示你修改配置;修改完成后再次执行 `bash install.sh`
默认只启动一个业务容器:
```text
lanqin-email
```
容器内部包含:
- Go API
- Web 静态站点
- Nginx
- Postfix
- Dovecot
- Rspamd
常用命令:
```bash
# 查看日志
docker compose logs -f lanqin-email
# 更新镜像并重启
docker compose pull
docker compose up -d
# 停止
docker compose down
```
## GHCR 镜像权限
默认镜像:
```text
ghcr.io/lanqin996/lanqin-email:latest
ghcr.io/lanqin996/lanqin-email-api:latest
ghcr.io/lanqin996/lanqin-email-web:latest
ghcr.io/lanqin996/lanqin-email-postfix:latest
ghcr.io/lanqin996/lanqin-email-dovecot:latest
ghcr.io/lanqin996/lanqin-email-rspamd:latest
```
如果拉取时报:
```text
unauthorized
```
说明 GHCR Package 还是私有,二选一:
1. 到 GitHub Packages 把镜像改成 Public。
2. 在服务器登录 GHCR
```bash
echo "<github_token>" | docker login ghcr.io -u <github_user> --password-stdin
```
## 本地源码构建
如果你是在完整源码仓库里本机构建,使用 build override
```bash
cd deploy
cp .env.example .env
docker compose -f docker-compose.yml -f docker-compose.build.yml up -d --build
```
这样会使用 `deploy/all-in-one/Dockerfile` 构建单容器镜像。
## 可选:多容器调试部署
如果需要分别查看 Postfix / Dovecot / Rspamd 日志,可以使用 stack 编排。
拉取镜像版:
```bash
cd deploy
docker compose -f docker-compose.stack.yml up -d
```
源码构建版:
```bash
cd deploy
docker compose -f docker-compose.stack.yml -f docker-compose.stack.build.yml up -d --build
```
## DNS
进入 Web 管理后台后,在域名管理中查看每个域名需要配置的:
- MX
- SPF TXT
- DKIM TXT
- DMARC TXT
配置完成后点击“检测”。
## 邮件服务边界
- Postfix 读取 `/data/lanqin.db` 中的 `domains``mailboxes``aliases`
- Dovecot 读取同一个 SQLite 数据库进行邮箱认证,并使用 `/var/mail/vhosts` 作为 Maildir 根目录。
- Rspamd 通过 milter 接入 Postfix,负责 DKIM 签名和垃圾邮件标记。
- Rspamd 会周期性从 SQLite 导出域名 DKIM 私钥到容器内 `/var/lib/rspamd/dkim`
- Go API 是 Webmail 和管理后台唯一入口;浏览器不直接连接 SMTP/IMAP。
- Go API 会读取 `LANQIN_MAILDIR_ROOT=/var/mail/vhosts`,周期扫描 Maildir,把 Postfix/Dovecot 入站邮件同步成 Webmail 索引。
## 生产注意
- 建议在服务器或边缘网关配置 HTTPS。
- 云厂商通常默认封禁 25 端口,需要单独申请解封。
- SQLite 适合 V1 单机部署;多节点部署前迁移到 PostgreSQL,并把 Postfix/Dovecot maps 改为 PostgreSQL。