文档
个人邮箱部署

个人邮箱部署

使用 Vercel、Cloudflare Email Routing、R2 和 Brevo 部署 wr.do 个人邮箱站。

这个模式会做什么

当你启用 NEXT_PUBLIC_PERSONAL_MODE=true 时:

  • 首页会变成邮箱优先的个人站入口
  • 主工作台只保留收件箱和已发送
  • 默认关闭公开注册和 OAuth 登录
  • 新域名默认开启邮箱能力,关闭短链和子域名能力

这样整站会更像一个私人邮箱工作台,而不是综合域名平台。

1. 部署 Web 应用

把这个仓库部署到 Vercel,并配置以下变量:

NEXT_PUBLIC_APP_URL=https://mail.yourdomain.com
NEXT_PUBLIC_APP_NAME=你的站点名称
NEXT_PUBLIC_PERSONAL_MODE=true
DATABASE_URL=postgres://...
AUTH_SECRET=...
AUTH_URL=https://mail.yourdomain.com
BREVO_API_KEY=...
EMAIL_FROM=support@yourdomain.com
EMAIL_FROM_NAME=你的站点名称
NEXT_PUBLIC_SUPPORT_EMAIL=support@yourdomain.com

如果你希望附件通过自己的域名访问,再补上:

NEXT_PUBLIC_EMAIL_R2_DOMAIN=https://mail-assets.yourdomain.com

2. 初始化后台

  • 完成数据库初始化或迁移
  • 使用管理员账号登录
  • 打开 /admin/system/domains
  • 新建一个域名,只保留邮箱能力开启

建议第一阶段只配置一个域名,先把整条链路跑通。

3. 配置发信

对每个要发信的域名:

  • 先在 Brevo 中完成域名验证
  • 将对应 API Key 填入全局或域名级配置
  • 确认 EMAIL_FROM 是该域名下已验证的发件地址

验证方式很简单:从站内向 Gmail 和 Outlook 各发一封测试邮件。

4. 配置收信

推荐使用下面这条链路:

Cloudflare Email Routing
  -> Email Worker
  -> R2
  -> /api/v1/email-catcher

你需要准备:

  • 一个接入 Cloudflare 的邮箱域名
  • 一个 R2 存储桶用于附件
  • oiov/cf-email-forwarding-worker
  • APP_API_URL=https://mail.yourdomain.com/api/v1/email-catcher

然后把 Email Routing 规则指向这个 Worker。

5. 打开 Catch-all

进入 /admin/system 后:

  • 先确认收信已正常工作
  • 再开启 Catch-all
  • 配置目标收件箱列表
  • 如有需要,再为指定地址开启转发

不建议一开始就同时打开所有高级规则,否则排查问题会比较乱。

6. 建议的验收步骤

  • 站内发信到 Gmail
  • 站内发信到 Outlook
  • Gmail 发信到 test@yourdomain.com
  • Outlook 发信到 test@yourdomain.com
  • 发送带图片或 PDF 附件的邮件
  • 向未显式创建但受 Catch-all 覆盖的地址发信

如果这些都通过,说明你的个人邮箱站已经具备上线条件。