Как аутентифицировать входящую почту? С SendGrid конкретно?

Я создал приложение, которое использует входящий Parse Webhook от SendGrid. Всякий раз, когда кто-то отправляет электронное письмо по адресу "what@mydomain.com", электронное письмо отправляется на SendGrid, а затем SendGrid отправляет на наш сервер сообщение POST, содержащее содержимое письма. Затем мы можем передать эти данные электронной почты обратно в наше основное приложение.

У меня все это работает. Но сейчас я не знаю, как я должен аутентифицировать сообщения SendGrid на нашем сервере. Кто-нибудь знает лучший курс действий для этого? Проверять, что наши входящие электронные письма действительно приходят от авторизованных пользователей нашего основного приложения?

Очевидно, что мы можем проверить адрес "От" в заголовках, но я читал, что они могут быть полностью подделаны. Очевидно, "dkim" и "spf", два атрибута входящей почты от SendGrid, имеют отношение к авторизации. Но я не могу найти что-либо в документации или где-либо еще в этом отношении, что говорит мне, как я должен использовать эти поля "dkim" и "spf" для проверки подлинности сообщения.

Если у кого-то есть какая-либо помощь, общая, конкретная или иная. Это будет с благодарностью. Заранее спасибо.

1 ответ

Что ж. Поскольку это, похоже, не набирает обороты, я подумал, что опубликую свое собственное решение проблемы, на случай, если кто-нибудь еще столкнется с этой проблемой в будущем.

Отказ от ответственности: это может быть полная чушь. Но, похоже, все работает хорошо.

По сути, я получил критическую контекстную информацию об исходном сообщении, которое инициировало входящее письмо. Мы кодируем эту информацию в локальной части адреса "Ответить", который мы настроили с помощью SendGridMessage. Затем я шифрую закодированную локальную часть.

Когда SendGrid отправляет на наш сервер входящую электронную почту, мы расшифровываем локальную часть "TO" и проверяем результат. Если он расшифровывается успешно, мы проверяем "ОТ" и проверяем, что они действительно авторизованные пользователи нашего основного приложения. ПОТОМ, мы проверяем, что данный пользователь имеет правильные права на редактирование информации, связанной с оригинальной закодированной локальной частью "Ответить".

Другие вопросы по тегам