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

3.1 KiB
Raw Blame History

LanQin Email Docker 部署说明

最简单部署:单容器镜像版

服务器上不需要源码构建,只要 docker-compose.yml.env 即可。

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

也可以使用脚本:

cd deploy
bash install.sh

第一次执行会生成 .env 并提示你修改配置;修改完成后再次执行 bash install.sh

默认只启动一个业务容器:

lanqin-email

容器内部包含:

  • Go API
  • Web 静态站点
  • Nginx
  • Postfix
  • Dovecot
  • Rspamd

常用命令:

# 查看日志
docker compose logs -f lanqin-email

# 更新镜像并重启
docker compose pull
docker compose up -d

# 停止
docker compose down

GHCR 镜像权限

默认镜像:

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

如果拉取时报:

unauthorized

说明 GHCR Package 还是私有,二选一:

  1. 到 GitHub Packages 把镜像改成 Public。
  2. 在服务器登录 GHCR
echo "<github_token>" | docker login ghcr.io -u <github_user> --password-stdin

本地源码构建

如果你是在完整源码仓库里本机构建,使用 build override

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 编排。

拉取镜像版:

cd deploy
docker compose -f docker-compose.stack.yml up -d

源码构建版:

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 中的 domainsmailboxesaliases
  • 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。