Skip to content

部署

Custom Mail 以单个 Cloudflare Worker 运行,配合 KVWorkers Assets

前置条件

  • 已开通 Workers 的 Cloudflare 账号
  • Brevo(默认)或其他已支持的发信服务商 — 见配置说明
  • Rust stable(wasm32-unknown-unknown)与 worker-build 0.8.5
  • Node.js 22+ 与 npm

1. 配置产品

编辑 config/mail.json

  • 设置 host 为邮件子域名
  • 设置 mail.fromEmail 为所选服务商已授权地址
  • 自定义 pluginsappbrandsitei18naddressBook

编辑 wrangler.jsonc

  • name — Worker 名称(如 custom-mail
  • routes — 与 mail.json 的 host 一致
  • kv_namespaces — KV 命名空间 ID
bash
npx wrangler kv namespace create MAIL_LOG_KV

将返回的 id 写入 wrangler.jsonc

2. 密钥

本地.dev.vars

bash
cp .dev.vars.example .dev.vars

生产

bash
npx wrangler secret put ADMIN_PASSWORD
npx wrangler secret put BREVO_API_KEY   # 或与 plugins.provider 对应的密钥

3. 发布

bash
npm run typecheck
npm run deploy

访问 https://<host> 并登录。

Docker(本地)

发布的镜像用于本地试用。传入 ADMIN_PASSWORD 与当前服务商的 API 密钥。MAIL_PROVIDERMAIL_THEMEMAIL_LAYOUTMAIL_LOGOMAIL_CONFIG_JSON 可覆盖 mail.json 的插件槽而无需重建。新增主题/版式 JSON 或 Logo 文件仍需重建镜像。

完整命令、Compose、环境变量见 Docker。Agent 安装见 OpenClaw 技能clawhub install custom-mail-skill)。

自定义域名

jsonc
"routes": [
  { "pattern": "mail.example.com", "custom_domain": true }
]

GitHub Actions

Workflow触发用途
CIpush / PR → maintypecheck
CodeQLpush / PR / 每周安全扫描
Docs变更 docs-site/**GitHub Pages
Deploy to Cloudflare Workers仅手动wrangler deploy

Cloudflare 部署所需 GitHub Secrets:CLOUDFLARE_API_TOKENCLOUDFLARE_ACCOUNT_ID。Worker 密钥只放在 Cloudflare。

检查清单

  • mail.jsonhostwrangler.jsonc 路由一致
  • KV ID 为真实绑定,不是占位符
  • Worker 已写入 ADMIN_PASSWORDplugins.provider 对应的 API 密钥
  • 服务商已验证 fromEmail
  • main 上 CI check 为绿

开源 · MIT License