email - 如何验证入站邮件?专门使用 SendGrid?

标签 email authentication sendgrid inbound

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

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

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

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

最佳答案

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

免责声明:这可能完全是胡说八道。但它似乎工作正常。

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

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

关于email - 如何验证入站邮件?专门使用 SendGrid?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49014360/

相关文章:

c# - 我应该在哪里存储在批处理运行结束时发出的电子邮件的电子邮件模板?

security - Symfony2 登录和安全

sendgrid - 跟踪电子邮件回复

AzureFunctions 绑定(bind)到 SendGrid

.net - 如何使用 sendgrid 电子邮件发送嵌入的图像?

linux - 为什么不使用 EXIM 和 OpenDKIM 服务?

java - 用java发送电子邮件

java - 单击 "Login Button"不适用于 Selenium Java 代码

ios - 用户先前注销后使用无效数据错误地登录

python - 通过python访问API时出现403禁止的奇怪错误