Mailgun:用于 SaaS 的通配符子域 "from-address"

Mailgun: wildcard subdomain "from-address" for SaaS

我有一个小型 SaaS,其中每个客户端都有一个子域 (stackexchange.my-saas.com)

我有一个 mailgun 帐户,其中设置了我的主域,并且我在我的 DNS 中创建了一个通配符 SPF 记录,如果我将其他域添加到我的 mailgun 帐户和一个子域,它们都会正确验证。

我的问题是,当我设置了通配符 SPF 记录时,是否需要在 mailgun 中将每个新客户端子域添加为新域,或者我 "legally" 可以为每个子域创建一个 from-address新客户,因此电子邮件的 header 将来自:Stack Exchange On My SaaS<noreply@stackexchange.my-saas.com>

让我们从了解电子邮件的工作原理开始。电子邮件的接收者检查发送域的 dns 记录,例如您的主域是 yourdomain.com 并且电子邮件是从 yourdomain.com 发送的,因为当您的电子邮件是从 saas 发送时,您已经在此创建了记录.yourdomain.com 那么 saas.yourdomain.com 的 DNS 记录应该存在,否则它将无法传送到收件箱。 Mailgun 要求验证以确保它已发送到收件箱,接收者通过查看 DNS 检查 DNS 以确保它来自真实的人。

所以答案是只要您的发送域相同,您就不会创建它,但如果您的发送域不同,那么您将不得不创建

希望这能回答您的问题。

发送中:

发送,不需要。正如您所指出的,您可以设置 SPF 记录,这样您的电子邮件就可以发送 From: 任何子域。但是请注意,如果您指定的 From: 地址具有不同的域,Mailgun 将添加一个 Sender: header 和您的 Mailgun 注册地址。

From: Stack Exchange On My SaaS <noreply@stackexchange.my-saas.com>
Sender: noreply=stackexchange.my-saas.com@my-saas.com

接收:

对于接收电子邮件,这是另一回事。这是 Mailgun 的限制,已在 this other question.

中得到解答

基本上,Mailgun 为每个人使用相同的 MX 服务器,因此当他们收到一封电子邮件时,他们需要查找该电子邮件属于哪个客户,就像任何常规 multi-host 邮件服务器一样。

(更新)它们允许注册通配符子域,结合通配符 MX,它可能只适用于每个子域。但是请注意,由于 DNS 的工作方式,没有标准方法可以在同一域中同时定义通配符 MX 和通配符 CNAME。 CloudFlare 目前支持此功能,但对于大多数其他 DNS 提供商来说它会失败。

或者,要在您的 SaaS 中接收电子邮件,您必须使用 Mailgun 独立注册您的每个子域(可能通过他们的 API)。请注意,这也意味着验证域,为您的 DNS 上的每个域添加 TXT 记录。