用自己的域名收发邮件,不用买企业邮箱套餐,也不用租服务器:收信交给 Cloudflare 的 Email Routing,邮箱程序跑在 Workers 上,数据存进 D1、KV、R2,免费额度足够个人使用。下面用开源项目 Cloud Mail 一步步搭起来,全是照着能做的操作。
第一步:准备域名和 GitHub 账号
把域名的 DNS 托管到 Cloudflare(在 Cloudflare 添加站点,按提示去域名注册商那里改 NS 服务器,等状态变为"有效");再登录 GitHub,没有账号先注册一个。注意:DNS 不在 Cloudflare,后面的收信功能用不了,这一步必须先完成。
第二步:Fork 项目并启用 Actions
打开 Cloud Mail 的项目主页,点右上角 Fork → Create a new fork,把代码复制到自己仓库。然后进自己仓库的 Actions 页,点"I understand my workflows, go ahead and enable them"——Fork 来的仓库默认禁用 Actions,不启用,最后一步的自动部署跑不起来。
第三步:在 Cloudflare 建四样资源,并记下编号
进 Cloudflare 后台,依次建好:计算 → Workers & Pages 里创建一个 Worker,名字填 cloud-mail;存储和数据库 → D1 里创建一个数据库,名字填 email;存储和数据库 → KV 里创建一个命名空间,名字填 email;存储和数据库 → R2 里创建一个存储桶,名字自定。建完把两串编号记下来备用:D1 的"数据库 ID"和 KV 的"ID",都在各自的详情页上,能直接复制。

第四步:建一把部署专用的 API 令牌
点右上角头像 → My Profile → API Tokens → Create Token,拉到 Custom token 点 Get started,名字随便起(比如 cloud-mail-deploy),权限按下表勾:
- 帐户:Workers 脚本(编辑)、Workers KV 存储(编辑)、D1(编辑)、Workers R2 存储(编辑)、帐户设置(读取)、电子邮件路由地址(编辑)
- 区域:Workers 路由(编辑)、DNS(编辑)、电子邮件路由规则(编辑);区域范围只选你自己的那个域名
创建后令牌值只显示一次,立刻复制保存。不要用全局 API Key,令牌权限小、能单独吊销,出问题不牵连账户里其他服务。
第五步:在 GitHub 填配置
进仓库 Settings → Secrets and variables → Actions。Secrets 页签加三项:JWT_SECRET(自己生成一串 32 位以上的随机字符,保存好)、CLOUDFLARE_API_TOKEN(上一步的令牌)、CLOUDFLARE_ACCOUNT_ID(Cloudflare 仪表盘网址里那串 32 位编号)。Variables 页签加七项:DOMAIN 填 ["example.com"](把 example.com 换成你的域名,注意是带引号和方括号的 JSON 格式)、ADMIN 填管理员邮箱如 admin@example.com、CUSTOM_DOMAIN 填邮箱网址如 mail.example.com、D1_DATABASE_ID 和 KV_NAMESPACE_ID 填第三步记下的编号、R2_BUCKET_NAME 填桶名、EMAIL 填管理员邮箱(用于开启新版发信功能,不想发信可留空)。
注意:如果是给已在用的旧邮箱升级,先去 Cloudflare 后台打开现有 Worker 的设置页,把它当前的域名列表和各项资源编号抄下来,按现网的填——填错会让部署接上一个新空库,旧邮件就"不见"了。
第六步:跑一键部署
进仓库 Actions 页,左侧选 “Deploy cloud-mail to Cloudflare Workers”,点 Run workflow,分支保持 main,确认运行。一两分钟跑完、全绿就是部署成功。红了先看"Set up environment"这一步的日志:多半是 JWT_SECRET 里混进了 ? % # / \ 这类字符,或 DOMAIN 没按 JSON 数组格式填,改完重跑即可。
第七步:开通收信并验活
回 Cloudflare,进你的域名 → 电子邮件 → Email Routing,添加一条 Catch-all(通配)规则,动作选"发送到 Worker",目标选 cloud-mail 并保存。然后打开 mail.example.com 登录管理员账号验活:收件箱能打开、旧邮件都在,再从另一个邮箱发一封测试信,几分钟内应该出现在收件箱。提醒一句:这次换过 JWT 密钥的话,第一次打开会被要求重新登录,正常现象,登一次就好。
总结: 整个流程就是"托管域名 → Fork → 建资源 → 建令牌 → 填配置 → 跑部署 → 开收信"七步,照着点完,一个免维护的域名邮箱就跑起来了;唯一要细心的是第五步,配置按现网对位,升级也不会丢一封邮件。