email - 允许客户在 SAAS 应用程序中从他们自己的域发送

标签 email dns saas spf

我目前正在运行一个 SAAS 应用程序,并且正在使用 Mailjet 从我们的应用程序发送邮件。

一些较大的客户一直要求允许从他们的域(例如 info@largehotel.com)而不是我们的系统(notifications@saasapp.com)发送电子邮件。

是否有任何我需要查看的初始指针?我猜他们也需要将我们的 SPF 记录添加到他们的 SPF 记录中,并且他们还需要添加我们为他们生成的 DKIM key 以添加到他们的记录中?然后在 DNS 级别对它们进行一些验证并将它们标记为已验证?

我有一些理解让客户针对我们的 SAAS 域运行他们自己的域,但在从他们的电子邮件域要求发送时有点迷失。

最佳答案

首先,作为记录,我的 SaaS 平台是这样做的(通过选项 2b)。这是一个电子商务市场,我需要从产品卖家的电子邮件地址发送收据,而不是我(市场)

你有两个(ish)选项

  • 通过您客户的邮件服务器(而不是 mailjet)发送电子邮件
  • 在您的 Mailjet(或类似电子邮件)服务上验证客户的域

  • 选项1

    使用选项 1,您需要要求客户的 IT 团队设置用户名和密码,以便您访问他们的 SMTP 服务器。这本质上就像他们创建一个电子邮件帐户供您使用一样。这对您来说似乎是最简单的方法,但也存在潜在的缺陷和缺点:

    这样做,您将失去使用 mailjet 获得的邮件打开/点击/退回跟踪功能;因为您将使用公司的 SMTP 服务器。

    如果您以相当常见的电子邮件地址(例如 info@your-client.com)发送邮件,则客户可能已经在其邮件服务器上激活了该帐户。这将允许他们接收对现有基础设施的回复,但让他们警惕与您共享邮件服务器密码的安全问题。

    您可能会发现他们甚至无法为您提供用户名和密码。现代邮件服务不允许 SMTP 访问(这是您的 Web 应用程序所需要的);和具有安全意识的公司要求对邮件帐户进行 2 因素身份验证(您的 Web 应用程序无法回答)

    选项 2

    为此,您需要要求他们的 IT 团队配置一些 DNS 记录,以向 mailjet 和电子邮件收件人证明您可以代表客户发送。

    当您第一次设置 mailjet 时,您为自己的域执行了此操作。见 https://app.mailjet.com/support/how-to-add-a-sender-address,96.htm这涉及到什么,但这是要求客户端配置 DNS 记录的情况。

    这告诉 mailjet 您可以代表该域发送邮件;但您还需要客户调整他们的 SPF 和 DKIM 记录,以便电子邮件的收件人知道从您客户的域名发送的电子邮件中信任 Mailjet 的服务器。通常,收件人只信任从您客户的邮件服务器(您有选项 1)发送的电子邮件,而不信任从 SAAS 提供商发送的电子邮件。

    您也将(或应该)在 mailjet 上为您自己的域完成此操作。 https://app.mailjet.com/docs/spf-dkim-guide

    因此,为此,您需要您的客户端设置 3 个 DNS 记录。

    如果你这样做,你可以设置一个单独的 Mailjet 帐户,他们和你都可以访问。这样他们就可以直接看到他们的仪表板,并感受到围绕它的主人翁感和安全感。但是你不能标价😜

    结论

    跟踪有多重要?如果您不能失去它,则需要选择选项 2。

    客户的技术水平如何?他们是否能够更改这些 DNS 记录?他们是否会(正确地)在他们的主要邮件服务器上为您提供一个帐户的安全意识。

    选项 2 是我的偏好。您可能需要通过 DNS 设置握住他们的手,以便在 Mailjet 上对其进行配置(并在此处询问 SPF 以确保您做对了),以便您可以向他们提供有关要创建/更新的特定 3 个 DNS 记录的明确说明.

    无论您采取何种方法,请确保您尽快与客户方的合适人员交谈。他们的营销团队可能很想和你一起做这件事,但如果他们的 IT 感觉被排除在谈话之外,当你需要他们做出改变时,他们将很难加入。我们 IT 人员可能脾气暴躁且固执 😀

    你的网络应用

    这将需要一些调整。您可能已经将 Mailjet 凭据存储在文件或环境变量中;这些可能需要将这些移动到 dB 表,以便您可以将凭据与特定帐户相关联。但是我们需要更多关于网络应用程序的信息,以便能够就挑战的这一方面进行更多讨论。

    选项 2b

    只是作为一个注释而不是一个真正的建议。请注意,某些电子邮件服务证明程序允许通过向该域中的某人(例如 admin@yourclient.com)发送电子邮件来完成发送验证部分,然后如果收件人单击该电子邮件上的批准链接,则允许通过 API 发送.但是,即使使用这种设置,您仍然需要客户端在其 DNS 上配置 SPF 和 DKIM,因此额外的一条记录并不是什么大问题。 AWS 的 SES 允许这样做。这对我有用;但是我对交付能力和大量非技术用户(而不是您的一两个大客户)有不同的要求

    关于email - 允许客户在 SAAS 应用程序中从他们自己的域发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62186045/

    相关文章:

    javascript - 从 Google 组织结构图发送电子邮件链接

    ruby-on-rails - SaaS 应用程序是如何组织的?

    architecture - Multi-Tenancy 或多实例?

    php - 从收件箱中检索电子邮件地址

    linux - 使用 curl 发送电子邮件

    c++ - CSmtp 不会发送电子邮件附件。但是没有附件它工作正常。 (c++)

    apache - 在 apache 中找不到虚拟主机的 WAMP 服务器名称

    c# - 无法解析 DNS

    amazon-ec2 - Route 53 是否指向实例而不是 IP 或 CNAME?

    database-design - SaaS 数据库设计 - 多个数据库? split ?