用 Resend + Cloudflare 给自己的域名配置 SMTP 发信

这是一份偏实战的记录:目标是让自己的站点可以用 xxx@your-domain.com 发送注册验证码、余额提醒、系统通知等邮件。这里以 Resend + Cloudflare DNS 为例,截图里的账号、长 DKIM、公网配置等关键信息已经做了打码或缩略,实际配置时请以你自己 Resend 页面展...
用 Resend + Cloudflare 给自己的域名配置 SMTP 发信
用 Resend + Cloudflare 给自己的域名配置 SMTP 发信

这是一份偏实战的记录:目标是让自己的站点可以用 xxx@your-domain.com 发送注册验证码、余额提醒、系统通知等邮件。这里以 Resend + Cloudflare DNS 为例,截图里的账号、长 DKIM、公网配置等关键信息已经做了打码或缩略,实际配置时请以你自己 Resend 页面展示的值为准。

适合场景:

  • 自建站点需要发送注册验证码、找回密码、余额提醒等事务邮件。
  • 不想直接用个人 Outlook / Gmail / QQ 邮箱 SMTP。
  • 域名 DNS 托管在 Cloudflare,或者你熟悉 Cloudflare 的 DNS 面板。

最终效果

完成后,Resend 的域名状态应该变成 Verified,表示这个域名已经可以用于发信。

image

为什么不用个人邮箱 SMTP

个人邮箱 SMTP 能跑起来,但更适合个人脚本,不太适合正式站点:

  • 很多邮箱服务会限制登录方式、发信频率和风控策略。
  • 密码/授权码管理不够清晰。
  • 域名发信信誉、退信、SPF/DKIM/DMARC 这些能力通常不如事务邮件服务完整。

Resend 这类事务邮件服务的好处是:配置清晰、API/SMTP 都支持、域名验证路径明确,后续迁移到其他服务商也比较容易。

准备工作

你需要准备:

  • 一个已经注册好的域名,例如 your-domain.com
  • 域名的 DNS 管理权限,本文以 Cloudflare 为例。
  • 一个 Resend 账号。
  • 一个需要发信的应用后台,例如 NewAPI / CCFork 或其他自建系统。

步骤一:在 Resend 添加域名

进入 Resend 后台:

  1. 打开 Domains
  2. 点击 Add domain
  3. 填写你的域名,例如 your-domain.com
  4. Region 可以先用默认的 North Virginia (us-east-1)
  5. 如果只需要发送邮件,不要打开 Enable Receiving

这里重点是“只配置发信”。如果你打开收信功能,Resend 会额外要求配置收信 MX,这对注册验证码/通知邮件不是必须的。

步骤二:把 DNS 记录复制到 Cloudflare

Resend 会给出一组 DNS 记录。只开启发信时,核心通常是下面 4 条:

02-dns-records

文字版结构如下,长字段只做示例,实际请复制 Resend 页面里的完整值:

类型 主机记录 记录值 用途 TXT resend._domainkey p=MIGfMA...QIDAQAB DKIM 验证 MX send 10 feedback-smtp.us-east-1.amazonses.com 退信/反馈 TXT send v=spf1 include:amazonses.com ~all SPF 授权 TXT _dmarc v=DMARC1; p=none; DMARC 策略

Cloudflare 添加方式:

  1. 进入 Cloudflare 对应域名。
  2. 打开 DNS -> Records
  3. 点击 Add record
  4. 逐条添加 Resend 给出的记录。
  5. TXT/MX 记录保持 DNS only 即可,TTL 用 Auto。

注意:DKIM 的 TXT 值很长,复制时不要少字符,也不要手动换行。

步骤三:回 Resend 验证

DNS 添加完成后,回到 Resend 的域名详情页,点击 Verify DNS Records

一般 Cloudflare 的 DNS 生效很快,但 Resend 检测可能会有几分钟延迟。状态变化大概是:

not started -> pending -> verified

如果一直没有通过,可以先用命令确认公网 DNS 是否已经能查到:

dig TXT resend._domainkey.your-domain.com
dig MX send.your-domain.com
dig TXT send.your-domain.com
dig TXT _dmarc.your-domain.com

如果你的本机 DNS 被代理或污染影响,也可以用 DoH 查:

curl -sS 'https://cloudflare-dns.com/dns-query?name=send.your-domain.com&type=MX' \
  -H 'accept: application/dns-json'

步骤四:在应用里配置 SMTP

域名变成 Verified 后,就可以在应用后台配置 SMTP 了。

03-smtp-settings

通用 SMTP 参数:

字段 值 SMTP Host smtp.resend.com Port 465587 Username resend Password Resend API Key From Address noreply@your-domain.com

如果是 NewAPI / CCFork 这类系统,对应配置通常是:

SMTPServer      = smtp.resend.com
SMTPPort        = 465
SMTPSSLEnabled  = true
SMTPAccount     = resend
SMTPToken       = <你的 Resend API Key>
SMTPFrom        = noreply@your-domain.com

也可以用 587 + STARTTLS,但如果你的应用支持 SMTPSSLEnabled,我更建议先用 465 + SSL,路径更直接。

步骤五:发测试邮件

正式打开注册邮箱验证、余额提醒之前,建议先做一次最小测试:

  1. 用后台的“测试邮件”功能发给自己的常用邮箱。
  2. 检查收件箱和垃圾箱。
  3. 看发件人是否显示为你的域名邮箱。
  4. 再测试注册验证码、找回密码、余额提醒等真实链路。

常见坑

1. DKIM 一直不过

优先检查这几件事:

  • TXT 主机记录是不是 resend._domainkey,不要写成完整域名后又被 Cloudflare 自动拼接一次。
  • DKIM 内容是否复制完整。
  • TXT 值里有没有多余换行、空格或中文引号。

2. SPF / MX 不通过

Resend 的发送链路会用 send.your-domain.com 这个子域。Cloudflare 里要分别添加:

  • MX:send
  • TXT:send

这两个不是根域名 @

3. 只想发信,不想收信

不要打开 Resend 的 Enable Receiving。只做事务邮件发送时,不需要把域名收信也交给 Resend。

4. 邮件进垃圾箱

新域名发信信誉需要慢慢建立。可以先从低频事务邮件开始,不要一上来批量群发。发件地址建议固定,例如:

noreply@your-domain.com
support@your-domain.com

5. API Key 不要截图公开

SMTP Password 本质上就是 Resend API Key。它只应该保存在你自己的后台配置或环境变量中,不要发到论坛、截图、日志或前端页面。

小结

整体链路其实不复杂:

Resend 添加域名
  -> Cloudflare 添加 DNS 记录
  -> Resend 验证域名
  -> 应用后台填写 SMTP
  -> 发测试邮件

我个人更推荐把“域名验证”和“应用 SMTP 配置”分开验证。先保证 Resend 域名是 Verified,再接应用。这样排查问题时很清楚:Resend 没过就是 DNS 问题;Resend 已过但应用发不出去,才去看 SMTP 参数、端口、防火墙或应用日志。

1 个帖子 - 1 位参与者

阅读完整话题

来源: LinuxDo 最新话题查看原文