如何验证入站邮件?具体使用 SendGrid 吗?

kde*_*eez 5 email authentication inbound sendgrid

我创建了一个使用 SendGrid 的 Inbound Parse Webhook 的应用程序。每当有人通过电子邮件发送“whatever@mydomain.com”时,电子邮件就会转到 SendGrid,然后 SendGrid 会使用包含电子邮件内容的 POST 访问我们的服务器。然后我们可以将该电子邮件数据反馈到我们的主应用程序中。

我有这一切。但是现在我不知道我应该如何验证 SendGrid 发布到我们服务器的消息。有谁知道这样做的最佳行动方案?验证我们的入站电子邮件实际上来自我们主应用程序的授权用户?

显然我们可以检查标题中的“发件人”地址,但我已经读到这些可以完全欺骗。显然,来自 SendGrid 的传入邮件的两个属性“dkim”和“spf”与授权有关。但是我在文档中或其他任何地方都找不到任何内容,这告诉我应该如何使用这些“dkim”和“spf”字段来验证消息的真实性。

如果有人有任何帮助,一般的、具体的或其他方面的……将不胜感激。提前致谢。

kde*_*eez 4

出色地。由于这似乎没有引起很大的关注,我想我应该发布自己的解决方案来解决这个问题,以防将来其他人遇到这个问题。

免责声明:这可能完全是垃圾废话。但它似乎工作正常。

基本上,我最终获取了一些有关发起入站电子邮件的原始消息的关键上下文信息。我们在使用 SendGridMessage 设置的“回复”地址的本地部分中对该信息进行编码。然后我对编码的本地部分进行加密。

当 SendGrid 将入站电子邮件发送到我们的服务器时,我们解密“TO”本地部分并验证结果。如果解密成功,我们检查“FROM”,并验证他们是否是我们主应用程序的实际授权用户。然后,我们验证相关用户是否具有编辑与“回复”的原始编码本地部分相关的信息的正确权限。