文档
个人邮箱部署
个人邮箱部署
使用 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.com2. 初始化后台
- 完成数据库初始化或迁移
- 使用管理员账号登录
- 打开
/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-workerAPP_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 覆盖的地址发信
如果这些都通过,说明你的个人邮箱站已经具备上线条件。