← Blog

从您客户的域名发送电子邮件

August 14, 2026 by 邮件收发器
代表客户域名构建帮助台、CRM或平台进行发送?如何在从自己的域名发送和为其域名配置DKIM之间进行选择,以及如何避免550发件人不可接受的拒绝。

如果你正在构建一个多租户应用(服务台、CRM 或任何代表客户发送电子邮件的平台),你最终会遇到一个问题:邮件应该从你的域还是他们的域发出?处理不当,邮件会以550 sender is unacceptable的错误退回。以下是在 MailerToGo 上行之有效的模型。

两种方法

1. 平台发件人(推荐的起点)

从你自己的域发送(例如support@yourapp.com),并将客户地址放在Reply-To字段中。它立即生效,不需要客户进行任何 DNS 设置,并且让你完全控制可送达性。这是 Zendesk、Intercom 和大多数 SaaS 服务台默认采用的方式。

2. 客户域(更好的品牌和可送达性)

为客户的域配置一个 DKIM 密钥,以便邮件以他们的身份签名。这需要客户添加 DNS 记录,但它提供品牌一致性,一旦 DKIM 和 DMARC 在其自己的域上对齐,可送达性也会更好。

大多数平台提供两者:让每个新租户从平台发件人开始,当他们准备好时,允许客户升级到自己的域。

如果你跳过 DKIM 配置会发生什么

这是陷阱所在。如果你的应用从一个在 MailerToGo 上没有配置 DKIM 密钥的客户域发送,会发生以下两件事之一:邮件被拒绝(550 sender is unacceptable),或者信封发件人被重写到你的默认域作为后备。

这两种情况都不是可以构建的基础。拒绝意味着客户邮件被丢弃。无声的信封重写意味着你的 DMARC 对齐会悄悄破裂。我们在实际情况中看到过这个确切的失败:一个应用以info@customerdomain.com发送,没有配置 DKIM,每条邮件都以550 sender is unacceptable退回。

不要依赖后备方案。在你自己的代码中决定发件人。

推荐的模式:自己选择发件人

跟踪每个客户其发送域是否在 MTG 上验证。相应地选择MAIL FROM,未验证时回退到你的平台域:

# Ruby
PLATFORM_DOMAIN = "yourapp.com"

def sender_for(customer)
  if customer.sending_domain_verified?
    { from: "support@#{customer.domain}" }                 # 以他们的身份签名
  else
    { from: "support@#{PLATFORM_DOMAIN}",                  # 你的域
      reply_to: customer.support_address }                 # 回复仍然到达他们
  end
end
// Node
const PLATFORM_DOMAIN = "yourapp.com";

function senderFor(customer) {
  return customer.sendingDomainVerified
    ? { from: `support@${customer.domain}` }
    : { from: `support@${PLATFORM_DOMAIN}`, replyTo: customer.supportAddress };
}

需要正确处理的几件事:

配置客户的域

当客户想要以自己的域发送邮件时:

  1. 在 MailerToGo 上添加发送子域。 使用专用子域,如mtg.customerdomain.com,而不是根域。它隔离了发送声誉,是 MTG 构建的模式。参见为什么 MailerToGo 从 mtg.yourdomain.com 发送。
  2. 让客户发布 DNS 记录。 最简单的方法是一条委派的NS记录:MTG 随后为该子域管理 SPF、DKIM 和 DMARC。如果客户倾向于拥有记录,也支持手动方法,自己发布 SPF、DKIM 和 DMARC TXT 记录。参见使用子域发送电子邮件。
  3. 验证,然后切换标志。 一旦 MTG 报告域已验证,为该客户设置sending_domain_verified = true并开始以其域发送。

直到第 3 步完成,保持客户使用你的平台发件人。新租户从第一天就可以发送,并且可以无停机时间升级到自己的域。

总结