如何从Mailgun迁移到Mailer To Go
从 Mailgun 迁移到 Mailer To Go 是 DNS 和凭据的受控交换 — 而不是重写。真正的工作是跨越传递你的抑制数据,并逐步切换,以便你的发送声誉在迁移中保持完整。以下是整个过程的完整顺序,包含确切配置和可逆的推出。
还在比较选项?Mailgun 替代品文章涵盖了原因。这是方法。
开始前:清点 Mailgun 为你做的事
在你触及任何东西之前,记下这些:
- 你的 Mailgun 发送域(通常是
mg.yourdomain.com)和使用中的每个 From: 地址。 - 抑制数据 — 退回、取消订阅和投诉。跨越传递这个是不可协商的;重新邮寄被抑制的联系人是毁坏新域名的最快方式。
- 你如何发送 — SMTP、Mailgun API(
mailgun.js、mailgun-ruby或原始 HTTP),或两者。 - 路由和入站规则,如果你使用 Mailgun 进行入站或转发。
- Webhooks(已投递/已打开/已点击/已失败/已投诉)及其消费者。
- 体积 在平均和峰值,用于规划预热。
第 1 步 — 创建你的 Mailer To Go 发送域
在 mailertogo.com 注册并添加一个发送子域。如果你已经在 Mailgun 的 mg.yourdomain.com 上,迁移到 mtg.yourdomain.com 保持了与根域的相同干净分离 — 并让我们在你委派时管理其 DNS。见为什么 Mailer To Go 从 mtg.yourdomain.com 发送。
第 2 步 — 认证(SPF、DKIM、DMARC)
从你的仪表板发布 SPF、DKIM 和 DMARC 记录。你已经为 Mailgun 做了等价的事,所以这会感到熟悉 — 区别在于记录值。在重叠期间,在域上保持两个提供商都授权。实际记录和 dig 验证:端到端电子邮件认证。
第 3 步 — 交换你的凭据
SMTP。 Mailgun 的配置使用 smtp.mailgun.org 和 postmaster@mg.yourdomain.com 风格的用户名。重新指向相同的邮件程序:
# 之前 — Mailgun
host: smtp.mailgun.org port: 587
username: postmaster@mg.yourdomain.com
password: <你的 Mailgun SMTP 密码>
# 之后 — Mailer To Go
host: smtp.<region>.mailertogo.net port: 587
username: <MAILERTOGO_SMTP_USER>
password: <MAILERTOGO_SMTP_PASSWORD>
在 Rails 中这是环境变化,而不是代码变化:
# config/environments/production.rb
config.action_mailer.smtp_settings = {
address: ENV["MAILERTOGO_SMTP_HOST"], # smtp.<region>.mailertogo.net
port: 587,
user_name: ENV["MAILERTOGO_SMTP_USER"],
password: ENV["MAILERTOGO_SMTP_PASSWORD"],
authentication: :plain,
enable_starttls_auto: true
}
API。 如果你调用 Mailgun 的 API,最低努力的移动是将该传输切换到 SMTP。在 Node 中,用 Nodemailer 替换 mailgun.js:
// 之前 — mailgun.js
// const mg = mailgun.client({ username: "api", key: process.env.MAILGUN_API_KEY });
// await mg.messages.create(DOMAIN, { to, from, subject, html });
// 之后 — Nodemailer over Mailer To Go SMTP
const nodemailer = require("nodemailer");
const transport = nodemailer.createTransport({
host: process.env.MAILERTOGO_SMTP_HOST,
port: 587,
auth: { user: process.env.MAILERTOGO_SMTP_USER, pass: process.env.MAILERTOGO_SMTP_PASSWORD },
});
await transport.sendMail({ to, from, subject, html });
第 4 步 — 导入你的抑制列表(不要跳过)
在切换前从 Mailgun 导出退回、取消订阅和投诉 — 从仪表板或通过 API:
curl -s --user "api:$MAILGUN_API_KEY" \
https://api.mailgun.net/v3/mg.yourdomain.com/bounces > bounces.json
curl -s --user "api:$MAILGUN_API_KEY" \
https://api.mailgun.net/v3/mg.yourdomain.com/unsubscribes > unsubscribes.json
curl -s --user "api:$MAILGUN_API_KEY" \
https://api.mailgun.net/v3/mg.yourdomain.com/complaints > complaints.json
将这些地址加载到你的 Mailer To Go 抑制列表中,以便没有人在 Mailgun 上退回或选择退出的人会再次被邮寄。在这样做之前,不要发送单个生产消息。
第 5 步 — 预热和逐步切换
新的发送域以没有声誉开始。并行运行 Mailgun 和 Mailer To Go 并分阶段移动流量 — 10% → 25% → 50% → 100% 在一两周内 — 从高信任邮件开始(收据、密码重置)。在每个增量处监控退回和投诉率,直到完成时保持 Mailgun 能够处理流量。
第 6 步 — 验证,然后停用
- 发送测试并确认 SPF、DKIM 和 DMARC 全部通过(Gmail → 显示原始内容)。
- 重新指向 webhook 到你的 Mailer To Go 事件处理器;确认退回/投诉事件仍然到达。
- 如果你使用 Mailgun 用于入站的路由,在你在那里放弃域之前设置等价物。
- 在 100% 下清晰的几天后,取消 Mailgun — 但保持其 SPF/DKIM 记录几周作为回滚安全网,然后删除它们。
回滚
切换是凭据 + DNS,所以回滚只是在 Mailgun 处重新指向你的环境变量。在重叠期间保持两个提供商都授权是使回滚成为单行更改的原因。
初次使用子域发送或认证?见为什么 Mailer To Go 从 mtg.yourdomain.com 发送和 SPF/DKIM/DMARC 设置指南。来自不同的提供商?见从 SendGrid 迁移到 Mailer To Go。