我是一个小型SaaS,每个客户端都有一个子域名(stackexchange.my-saas.com)
我已经设置了主域名的邮件帐户,并且我已经在我的DNS中创建了通配符SPF记录,如果我将其他域名添加到我的带有子域名的mailgun帐户,他们都会正确验证。
我的问题是,当我拥有通配符SPF记录集时,是否需要将每个新客户端子域添加为mailgun中的新域,或者我可以合法地"只需为每个新客户创建一个发件人地址,以便电子邮件的标题来自:ActiveRecord::Base.establish_connection(adapter: 'sqlserver', host: "xxx", username: "xxx", password: "xxx", database: "xxx", azure: true, port: 1433, timeout: 5000)
class Report < ActiveRecord::Base
self.primary_key = 'id'
end
my_array = [] #count of 100000 records
Report.bulk_insert(:account_owner_id) do |worker|
my_array.drop(2).each do |arr|
worker.add account_owner_id: arr[0]
end
end
答案 0 :(得分:0)
让我们开始了解电子邮件的工作原理。电子邮件的接收者检查发送域的DNS记录,例如您的主域名是yourdomain.com,并且从yourdomain.com发送的电子邮件将起作用,因为当您从saas.yourdomain.com发送电子邮件时已经创建了此记录。那么saas.yourdomain.com的DNS记录应该存在,否则它将无法传递到收件箱。 Mailgun要求验证以确保将其发送到收件箱,并且接收方通过查看DNS来检查DNS是否来自真实的人。
所以答案是只要您的发送域相同然后您就不会创建它,但如果您的发送域不同,那么您将不得不创建
希望这能回答你的问题。
答案 1 :(得分:0)
无需发送。如您所指出的,您可以设置SPF记录,以便可以From:
发送电子邮件到任何子域。但是请注意,如果Mailgun与您的Sender:
标头不匹配,则会添加与您要发送的注册域相匹配的From:
标头。
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服务器,因此,当他们收到电子邮件时,他们需要查找电子邮件所属的客户,就像任何常规的多主机邮件服务器一样。
(UPDATE)它们允许注册通配符子域,并与通配符MX结合使用,它可能仅适用于每个子域。但是请注意,由于DNS的工作原理,在同一个域中既没有标准方法也不能同时定义通配符MX和通配符CNAME。 CloudFlare目前正在支持此功能,但是对于大多数其他DNS提供商而言,它将失败。
或者,要在SaaS中接收电子邮件,您必须向Mailgun独立注册每个子域(可以通过其API)。请注意,这还意味着要验证在DNS上为每个记录添加TXT记录的域。