6

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

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

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

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

4

1 回答 1

3

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

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

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

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

于 2018-02-28T19:02:15.223 回答