Рейтинг:3

Как настроить DNS с доменом посередине для DKIM и SPF?

флаг us

Я работаю над инструментом, который помогает пользователям отправлять электронные письма. Я планирую использовать MTA (агент передачи почты) в серверной части, такой как AWS-SES или Sendgrid и т. д. Чтобы электронные письма успешно доставлялись в почтовые ящики рецептов, пользователям необходимо настроить DKIM/SPF, настроив DNS. настройки соответствующих доменов.

Теперь, если я возьму, например, SES, я знаю, что они иметь API, который позволяет мне чтобы добавить «Идентификацию» и получить все необходимые записи DNS для нее с помощью API. Я уверен, что Sendgrid и другие MTA имеют аналогичные API, которые позволяют добавлять удостоверения и возвращать записи DNS для применения пользователем.

Я показываю возвращенные настройки DNS DKIM пользователю, и они добавляют их к своему DNS-провайдеру, и после этого, когда они отправляют электронные письма, рецепты получают их правильно (без каких-либо «через amazonses.com» в заголовках)

Теперь для примера — давайте предположим, что инструмент, который я создаю, размещен на chillybilly.xyz, и у одного из пользователей, использующих мой инструмент, есть домен с именем frankthetank.xyz, который они хотят использовать для отправки электронных писем через мою платформу. .

Когда пользователь попытается подтвердить свой домен через мою платформу, я нажму на упомянутый выше API в AWS SES и покажу пользователю что-то вроде этого:

введите описание изображения здесь

После чего они могут добавить эти записи CNAMES и TXT для успешных DKIM/SPF и могут начать отправлять электронные письма. Но если присмотреться, они увидят, что я использую SES из-за значений этих записей CNAMES и TXT. И это то, чего я хочу избежать, вместо этого я хочу, чтобы те назывались как-то вроде 7nuk24xywyawocu6ctqjxmjasiaiq3vq.dkim.chillybilly.xyz который будет показывать мой брендинг, но в фоновом режиме он все равно будет указывать на правильный SES.

Теперь я знаю, что такое возможно, потому что, когда я подписался на ConvertKit, мне показали что-то вроде этого:

введите описание изображения здесь

Эти два значения, как вы можете видеть, указывают на converkit.com, НО когда я запускаю их через поиск DNS:

https://dnschecker.org/all-dns-records-of-domain.php?query=spf.dm-5mk8zo6m.sg7.convertkit.com.&rtype=ALL&dns=google

https://dnschecker.org/all-dns-records-of-domain.php?query=dkim.dm-5mk8zo6m.sg7.convertkit.com.&rtype=ALL&dns=google

введите описание изображения здесь введите описание изображения здесь введите описание изображения здесь

Я вижу, что в фоновом режиме он указывает на записи MX и TXT, принадлежащие Sendgrid. Как я могу этого добиться? (Я считаю, что те же принципы применимы и к SES или любому другому MTA)


РЕДАКТИРОВАТЬ: Я попробовал несколько вещей: и я установил CNAME, MX и TXT в chillybilly.xyz (домен моего проекта), и я указал на него два CNAMES из frankthetank.xyz под названием spf.frankthetank.xyz и dkim.frankthetankxyz

https://dnschecker.org/all-dns-records-of-domain.php?query=spf.frankthetank.xyz&rtype=ALL&dns=google

введите описание изображения здесь введите описание изображения здесь

https://dnschecker.org/all-dns-records-of-domain.php?query=dkim.frankthetank.xyz&rtype=ALL&dns=google

введите описание изображения здесь

Как видите, мне удалось добиться результатов, очень похожих на то, что ConvertKit делает с Sendgrid. Но это не проверяется таким образом. :(

Единственная разница, которую я вижу, когда я проверяю эти поисковые запросы DNS (ссылки выше), заключается в том, что CNAME также отображаются в поиске для меня, но не в случае convertkit. Итак, я думаю, что близок к решению, но не уверен, что мне не хватает, есть идеи? :)

anx avatar
флаг fr
anx
Они узнают, к какому провайдеру вы обращаетесь... когда увидят почту, доставленную этим провайдером?
Rohan avatar
флаг us
Нет, в этом вся суть. Убрать брендинг провайдера, и поставить наш. С DKIM/SPF это происходит, он говорит, что подписан доменом клиента, поэтому он больше не говорит «через amazonses.com» или что-то в этом роде.
Рейтинг:3
флаг ru

Первый SPF: если вы замените, например. исходящей SPF-записи sendgrid, которая включена в вашу SPF-запись, с вашим собственным брендом, вы в то же время взяли на себя работу по отслеживанию всех динамических вещей, которые sendgrid может делать с именами и адресами их исходящих почтовых серверов. Вы не хотите этого делать, поэтому, если вы отправляете через sendgrid, вам нужно включить SPF sendgrid. Так что, поскольку вы используете sendgrid, вы никак не можете избавиться от этого «include: sendgrid.net» в своей SPF-записи, не причинив себе боли.

DKIM похож, пример amazonses создает CNAME для записей, которые существуют в DNS Amazon. Если вы хотите заменить его своим собственным (что вы можете, без проблем), вы должны поместить эти записи в свой собственный DNS. Это не проблема, однако вам нужно каким-то образом передать ключ подписи тому, кто подписывает эти электронные письма, и это может быть проблемой. С помощью решения Amazon они создают ключ и дают вам ссылку на открытый ключ, который они помещают в свой DNS, который соответствует закрытому ключу, которым они подписывают вашу электронную почту.

Однако, если вы хотите удалить «бренд» с почтовых серверов Amazon или sendgrid, единственный способ — выкупить их, потому что это делается с помощью обратного DNS, и они НИКОГДА не будут указывать свои исходящие серверы на имена в вашем пространстве имен DNS.

Rohan avatar
флаг us
Хорошо, не могли бы вы подробнее рассказать о части "выкупить их"? Это означает, что у SES и SG есть еще один уровень, на который я могу подписаться, и они предоставят мне мои собственные выделенные серверы для отправки почты? И потом, вы говорите, что мне придется использовать «обратный DNS» (мне нужно проверить и узнать об этом сейчас), чтобы сделать то, что я намереваюсь выполнить? Опция «выкупить их» — это то же самое, что иметь опцию «Выделенные IP-адреса» в SES — например, вы прогреваете эти IP-адреса, а затем используете их — так я могу добиться этого? Может быть, это дает мне больше контроля над всем этим? Все еще новый и учусь, спасибо :)
флаг ru
«Выкупить их» было скорее шуткой. Дело в том, что, по крайней мере, IPv4-адреса довольно редки, поэтому я бы не стал ждать, пока они предоставят вам выделенный сервер (или даже IP) для отправки. А обратный DNS обязательно проверяется принимающими почтовыми серверами, а также SPF и DKIM и в некоторых случаях даже DMARC (комбинация этих двух). Конечно, никто не мешает вам запустить собственную почтовую службу, но это связано с определенными условиями. Я не знаком с предложениями Amazon, но даже gmail и M365 (Microsoft) будут использовать свои собственные выходы и DNS, чтобы разрешить это.
флаг ru
Это также для защиты их собственного контроля над этими серверами. Подумайте об этом в контексте спамеров, они хотели бы иметь сервис с большим количеством возможностей для рассылки спама со своих доменов, но и Microsoft, и Google имеют фильтрацию исходящей почты, чтобы предотвратить именно это.
Rohan avatar
флаг us
«Выкупить их» было скорее шуткой. Я понял это через несколько минут :'D `так что я бы не стал ждать, пока они предоставят вам выделенный сервер (или даже IP) для отправки` - Но они это делают, у них есть варианты выделенного IP, за которые я могу заплатить больше денег, я дам ссылку на документ в следующем комментарии :) Я даже могу создавать свои собственные пулы из этих IP-адресов в зависимости от того, хочу ли я, чтобы исходящие электронные письма разделялись по категориям. Я все еще пытаюсь понять, позволят ли они мне сделать обратный DNS, о котором вы говорили, с выделенными IP-адресами :)
Rohan avatar
флаг us
https://docs.aws.amazon.com/ses/latest/dg/dedicated-ip.html
Rohan avatar
флаг us
Единственная большая проблема с использованием выделенных IP-адресов вместо больших общих пулов IP-адресов, которые у них есть, заключается в том, что мне придется разогревать свои выделенные IP-адреса и поддерживать их в горячем состоянии, чтобы поддерживать любые шаблоны отправки, которых я хочу достичь, так что это означает больше работы. и алгоритмы для maintian :)
Rohan avatar
флаг us
Добавил редактирование, дайте мне знать, если у вас есть какие-либо идеи :)
Рейтинг:1
флаг us

У SG есть опция под названием автоматическая_безопасность в Аутентификация домена API. Я думаю, что эта опция позволяет SG управлять ключами DKIM и другими записями и другими записями, используя их записи DNS.Следовательно, когда вы делаете этот параметр истинным, они возвращают записи CNAME вместо записей MX и TXT. Записями MX/TXT за кулисами управляет SG.

введите описание изображения здесь

Удобная часть записей CNAME заключается в том, что другие записи CNAME могут легко указывать на них. Так что я указал chillybilly.xyz -> записи CNAME SG что я вернулся из SG, и я указал Записи frankthetank.xyz -> CNAME записи chillybilly.xyz и, таким образом, создавая своего рода промежуточное программное обеспечение между ними.

Пожалуйста, не то чиллибилли.xyz это домен моего приложения и frankthetank.xyz является доменом клиента. Это предположение, которым мы руководствуемся при решении этой проблемы.

Теперь конечно как один из ответов указал, что это увеличит количество запросов DNS из-за другого промежуточного уровня, нам все еще нужно оценить, действительно ли это имеет смысл для нас или это увеличит время доставки электронной почты при масштабировании в конечном итоге. Но решение работает. Я думаю, что это только реализация SG. Мне не удалось заставить его работать с AWS SES. У меня скоро с ними звонок - если я буду знать лучше, отредактирую этот ответ :)

Рейтинг:1
флаг tl

Таким образом, вы можете просто сделать записи CNAME, которые указывают на исходную запись, или просто поместить правильный SPF, как в примере с convertkit, но под своим доменом.

или у вас есть промежуточное программное обеспечение, которое проходит процесс проверки домена в sendgrid/AWS, создавая записи DNS в вашем домене, которые вы затем сообщаете своему клиенту CNAME для новых записей DNS, которые вы создали, а затем завершает проверку, как только клиент щелкает кнопку, чтобы сказать, что они сделали это

это не остановит заголовки электронной почты или отслеживание записей DNS, чтобы найти исходного провайдера, но для обычного человека это вероятно отлично.

Однако я хочу предостеречь: уровни обфускации на самом деле вредят уровню DNS.

Например, SPF имеет явное жестко запрограммированное ограничение в 10 запросов в RFC — сами Sendgrid пишут об этом — https://docs.sendgrid.com/ui/account-and-settings/spf-limitations

  • Оригинальный RFC. Вы подвергаетесь высокому риску столкнуться с этой проблемой, если будете выполнять какие-либо обфускации для SPF.

дополнительные поисковые запросы DNS увеличат время отклика для любого поиска на основе DNS в потоке доставки почты и/или в вашем приложении — это может привести к много боли на многих уровнях, особенно когда MTA обрабатывают в режиме реального времени, любая задержка может иметь огромные потенциальные последствия.

Чтобы добавить немного математики, представьте, что одно электронное письмо обрабатывается и отправляется через MTA с DNS за 20 мс — это пример наилучшего случая, предполагающий эта логика Справедливо. Вы можете отправить около 180 тысяч писем в час. Если нам нужно удвоить это, добавив хотя бы 1 дополнительный DNS-запрос, это уменьшится вдвое до 90 000 писем в час. Если вы зависите от объема, вам нужно будет использовать вдвое больше оборудования для поддержания той же пропускной способности.

Rohan avatar
флаг us
Спасибо за подробный ответ :) Но тот момент, когда вы говорите "иметь промежуточное ПО...". Это та часть, где мне действительно нужна помощь. «Практический» способ создания CNAME для моего клиента, который указывает на записи DNS в моем домене, которые в конечном итоге ведут к AWS. Как мне этого добиться? Есть ли какие-нибудь руководства, на которые вы можете мне указать? Особенно та часть, где я могу создать промежуточное программное обеспечение для записей MX и TXT, вот где я запутался.
Rohan avatar
флаг us
Добавил редактирование, дайте мне знать, если у вас есть какие-либо идеи :)
Rohan avatar
флаг us
Эй, Энтони, не могли бы вы проверить EDIT, который я добавил, и посмотреть, не дает ли это больше идей? Я до сих пор не нашел практического решения проблемы. Спасибо :)

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.