彻底关掉 Postfix:用 Cloudflare 和 Resend 搞定域名邮箱收发

        之前为了让博客能发通知邮件,我在 VPS 上装了 Postfix 和 Dovecot。折腾过程很麻烦,实际用起来也有一堆问题:发出去的信经常进垃圾箱,而且最关键的一点是,发邮件会直接暴露 VPS 的真实 IP。在 Cloudflare 后面藏了半天,结果一封邮件就把服务器地址漏了,这肯定不行。最近我刷到相关内容,于是把这套逻辑全改了。不再自己跑邮件服务,而是把收发都交给云端处理。

方案架构

        逻辑其实很简单:

  1. 收信:用 Cloudflare Email Routing,把发往域名邮箱的信直接转到 Gmail。
  2. 发信:用 Resend,它提供 SMTP 接口,每天有 100 封的免费额度,个人博客足够了。
  3. 管理:在 Gmail 网页端或 App 里统一收发。

操作步骤

1. 配置收信(Cloudflare)

        在 Cloudflare 后台的电子邮件页面,开启邮件路由。添加一个路由地址(比如 [email protected]),目标指向你的 Gmail。CF 会提示你修改 MX 记录,直接在 DNS 页面一键添加就行。验证后发送到该地址的邮箱就会被转发到你的Gmail邮箱中。

2. 配置发信(Resend)

        注册 Resend 后添加域名。建议直接点 Auto configure 关联 Cloudflare,它会自动帮你把 DKIM 和 SPF 记录填好。
然后去 API Keys 页面生成一个 Key(re_ 开头的那串字符),这就是后续发信的密码。

3. 集成到 Gmail

        这一步是为了能在 Gmail 里切换身份回信:

  1. 进入 Gmail 设置 -> 账号和导入 -> 用这个地址发送邮件 -> 添加其他电子邮件地址。
  2. 名称就是邮箱前现实的名字,邮箱就是你发件的邮箱,与上述收件箱一致就行,取消勾选“视为别名”。
  3. SMTP 服务器填 smtp.resend.com,端口选 587,选择TLS加密。
  4. 用户名固定填 resend,密码填你刚才生成的 API Key。
  5. 去收件箱查收验证码,填回 Gmail 完成验证。

关于 DNS 记录的复盘

        配置完之后,最后 DNS 列表里一共留下了 9 条跟邮件相关的记录,同时需要删除以前文章中自行配置的DNS解析记录:

  • 3 条 Cloudflare 的收件 MX 记录
  • 1 条 Resend 的子域名 MX 记录(处理退信反馈)
  • 2 条 SPF 记录(授权 CF 和 Resend 发信),需要修改CF的记录,为根域名添加Resend的部分,即“include:amazonses.com”
  • 2 条 DKIM 记录(电子签名防止伪造)
  • 1 条 DMARC 记录(安全策略)

        目前的 DMARC 设置是 v=DMARC1; p=none;。先跑一段时间看看,如果收发都没问题,后期建议把 p 改成 quarantine(隔离),这样安全性更高。