如何设置 Mailgun 的发信域名

Danny · 2026年9月11日 · 6 分钟阅读 · 更新于 2026年9月14日

在 Mailgun 后台添加发信域名,把 Sending、Tracking、Authentication 三类记录逐条配到子域名的 DNS 里,等验证状态变绿后创建 sending key。文中说明每个字段怎么填、TXT 值为什么不能带引号、Receiving records 为什么不加,以及验证卡住时的排查方向和发送接口的测试命令。

Mailgun 注册并订阅完成之后,第一件该做的事情不是写发送代码,而是把发信域名配好。发信域名没有验证通过,后面写的所有发送逻辑都会卡在同一个地方,邮件发不出去,或者发出去了直接进垃圾箱。

发信域名为什么要在后台单独添加

想要使用 Mailgun 的发信服务,你需要在后台单独添加一个发信域名,再用几条 DNS 记录向邮件服务商证明这个域名是你的。收件方收到邮件时,会通过 SPF 和 DKIM 验证邮件确实来自这个域名,而不是别人伪造的。

建议用子域名作为发信域名,未来即使发信域名被某个邮件服务商标记,公司官网的主域名邮箱也不会被牵连。子域名怎么建,可以看这篇 如何在 Cloudflare 创建子域名

在 Mailgun 后台添加发信域名

登录 Mailgun 之后,从左侧边栏进入 Send 分组下的 SENDING,点击 Domains,然后在页面右上角点 Add new domain。表单里需要你决定的只有 Domain name,填子域名,例如 mg.example.com,不要填主域名。

Domain Region 决定发送接口的域名,默认的 US 区域对应 api.mailgun.net,选 EU 区域对应 api.eu.mailgun.net,后面写发送代码时会用到。IP Assignment Option 保持默认的共享 IP,等每天稳定发出几百封再考虑专用 IP;Advanced settings 第一次配置不需要调整。

点击右下角的 Add domain 提交,页面会直接跳到这个域名的 DNS Records 界面,接下来要做的就是把里面列出的记录逐条配到子域名的 DNS 里。

把三类 DNS 记录配到子域名上

DNS Records 界面把需要配置的记录分成三组,每一组左边是记录类型和名称,右边是对应的值。三组都要配完,一条都不能少

  • Sending records:SPF 和 DKIM,决定邮件能不能通过域名认证,直接关系到进不进收件箱
  • Tracking records:邮件打开率和点击率的追踪域名,通常是 CNAME 记录指向 Mailgun
  • Authentication records:DMARC 这类认证策略,告诉收件方发现邮件被篡改时该怎么处理

Receiving records 那一组不要添加。它是给收信用的,加上之后会在子域名下写一条 MX 记录,和现有的企业邮箱解析撞车,得不偿失。

至于值填到哪个位置,取决于你的域名解析托管在哪家服务商。阿里云云解析 DNS 和 Cloudflare 两个后台的入口、字段名称,以及 A、CNAME、MX、TXT 这些常见记录类型的填法,都写在 如何配置域名 DNS 解析 这篇里,对照着填就行。

填写时有两个地方要注意。记录值整段复制,不要手工补全,TXT 记录的值很长,中间不能有空格也不能换行;有些 DNS 后台会自动给值加上引号,而 Mailgun 的验证不认这对引号,贴进去之前先把引号去掉。主机记录同样是相对名称,Mailgun 给的是 em1234、email 这类前缀,不要再把主域名拼一遍。

等验证状态变成绿色

记录加完之后不需要点任何按钮,Mailgun 会按固定频率自己去查 DNS,最慢 24 小时内这些记录的 Status 会全部变成绿色,表示验证成功。

实际经验是大多十几分钟就绿了。长时间停在灰色或者红色,通常是两种原因:一是记录填错了,主机记录多拼了一段域名,或者值复制的时候丢了一截;二是记录还没生效,尤其是刚换过 NS 的域名,本地递归解析器还缓存着旧结果。判断方法在 DNS 那篇里写了,用 dig 查一下就能确认。

创建 Sending Key

验证通过之后,在当前页面的 Domain settings 里找到 Sending Keys,点 Add sending key 创建一条密钥。这条 sending key 是自动化系统调用 Mailgun 发送服务的凭证,无论用 API 还是 SMTP 发信,都靠它认证。

密钥创建之后立刻复制保存,页面不会再次显示完整值。复制完可以用下面这段命令先发一封测试信,确认整条链路通畅:

curl -s --user 'api:YOUR-SENDING-KEY' \
  https://api.mailgun.net/v3/mg.example.com/messages \
  -F from='postmaster@mg.example.com' \
  -F to='you@example.com' \
  -F subject='Mailgun sending domain test' \
  -F text='Sending domain verified and working.'

把命令里的 YOUR-SENDING-KEY 换成刚创建的 sending key,mg.example.com 换成你的发信域名,you@example.com 换成收信的测试邮箱。返回一个 id 字段就说明邮件已经交给 Mailgun 了,剩下的看收件箱和垃圾箱。如果更习惯用 SMTP,主机是 smtp.mailgun.org,端口 587,用户名填 postmaster@你的发信域名,密码就是这条 sending key。

风险提示 Warning

sending key 等同于这个域名的发送权限,谁拿到都能以你的名义发信。不要写进前端代码,不要提交到 Git 仓库,正式项目里放到服务器的环境变量或者密钥管理服务里读取,换人或者怀疑泄露时直接在后台重新生成一条。

完整流程回顾

从注册 Mailgun 到发送通道可用,一共四步。四步里最花时间的是 DNS 记录,也最容易出错,配完之后整个域名才真正归你控制。

完整流程:四步 / The workflow in four steps

01

添加发信域名

Domains 里新增子域名,其余选项保持默认。

02

配置 DNS 记录

Sending、Tracking、Authentication 三类逐条配齐。

03

等待验证通过

Status 变绿,最慢 24 小时。

04

创建 sending key

给自动化系统一条可轮换的发送凭证。

下一步

发信域名验证通过、sending key 拿到手,发送通道这一层就算通了。把它接进自动化系统的做法,写在 企业 AI 应用落地案例:如何开发一套 AI Agent 驱动的自动化获客系统 里,包括发文节奏、随机间隔和回复检测这些调度层的设计。

发信通道解决的是怎么把信送出去,名单那一侧则决定送给谁。客户信息、公司规模和邮箱的获取方式可以交给 Apollo 这类工具,从注册到自动发信的完整步骤我们写在把 Apollo 邮件营销从注册配到自动发信这篇里。

更多类似指南,
每周四送达。

主机评测、建站对比、性能优化技巧和插件推荐 — 每周为 WordPress 站长和建站者精选。