Вопрос или проблема
Я случайно удалил запись DKIM, и у провайдера возникли проблемы, из-за чего он не может срочно предоставить мне запись DNS.
У меня есть электронное письмо от этого провайдера, которое попало в спам.
Так как я знаю, что это письмо подписано действующим ключом DKIM, могу ли я расшифровать подпись и извлечь открытый ключ DKIM? После извлечения я сохраню ключ на странице DNS домена.
Нет, открытый ключ DKIM не сохраняется в заголовках сообщения.
Тем не менее, если вы знаете имя вашего селектора (или восстановите его из заголовка предыдущего электронного письма), вы можете восстановить его из кеша DNS.
Посмотрите на существующий заголовок сообщения и извлеките значения DKIM-Signature s= и d=.
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=example.com; s=default; [...]
Затем используйте nslookup или онлайн-инструмент, такой как MXToolbox или DNS Propagation, чтобы запросить DNS для записи DKIM TXT default._domainkey.example.com
. Если она закеширована, TXT-запись вернет вашу старую запись.
Если старую запись невозможно сразу восстановить, я предлагаю создать новую запись DKIM с новым селектором. Затем восстановите ваш старый селектор, если сможете. И обращайтесь с ним как с переводом на новый селектор. Таким образом, ваша новая активная электронная почта в транзите получает преимущества DKIM, и, надеюсь, более старая электронная почта в транзите может быть исправлена до того, как получатели переместят ее в спам. Тем не менее, большинство заголовков, которые я недавно видел, обрабатываются в течение секунд, поэтому что сделано, то сделано, и восстановление старого селектора имеет ограниченную ценность.
Ответ или решение
Извлечение DKIM-записи из электронной почты может быть полезным, когда возникает проблема с наличием доступа к оригинальной записи, особенно в случае, если провайдер не может оперативно предоставить необходимую информацию. В данном случае, наличие письма, подпись которого была выполнена с использованием действующего DKIM-ключа, подталкивает к вопросу о возможности "обратного извлечения" публичного DKIM-ключа из подписи. В данном ответе будет подробно разобрано, почему это невозможно, и какие альтернативные действия можно предпринять в этой ситуации.
Теория
Технология DKIM (DomainKeys Identified Mail) позволяет отправителям электронной почты подписывать сообщения цифровой подписью на уровне домена, тем самым удерживая их легитимность для получателей. Эта подпись создается с помощью закрытого ключа, а получатели проверяют её, используя соответствующий открытый ключ, который хранится в DNS-записях отправителя.
Ключевой момент здесь заключается в понимании того, что в заголовках электронного письма содержатся только подпись и информация, необходимая для применения ключа, но не сам открытый ключ. В заголовке сообщения содержатся следующие важные параметры DKIM-подписи:
v=
: версия протоколаa=
: алгоритм подписиc=
: механизм канонизацииd=
: домен, осуществляющий подписьs=
: селектор, указывающий на специфическую запись открытого ключа в DNS
Пример DKIM подписи в заголовке:
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=example.com; s=default; [...]
Пример
Допустим, вы получили электронное письмо от домена example.com
, подписанное селектором default
. Вхождение DKIM-записи в DNS будет представлено следующим образом:
default._domainkey.example.com
Этот формат главной идеи ключа предоставляет возможность запроса текущего состояния записи посредством инструментов, таких как nslookup
или онлайн-сервисы, например, MXToolbox.
Применение
Отдельное обращение к DNS напрямую в поиске сохранённой кэшированной записи может решить проблему, если DNS-серверы все еще хранят ранее зарегистрированную запись. Процедура выглядит следующим образом:
-
Выясните
s=
(селектор) иd=
(домен) из заголовка вашего полученного письма. -
Используйте инструмент командной строки
nslookup
или аналогичный, чтобы выполнить запрос DNS к соответствующему имени:nslookup -type=TXT default._domainkey.example.com
-
Если вы не можете получить доступ к необходимой записи, возможность подмены записи использованием нового селектора остается наиболее разумным решением. Создайте новую пару ключей DKIM и добавьте их в качестве новой записи в таблице DNS. Это гарантирует, что все новые сообщения будут проверяться.
Повторное использование старого селектора, если и когда его удастся восстановить, необходимо только для временной фиксации, так как при работе электронной почты крайне важна текущая легитимизация для достижения введенной новый активный DKIM записи.
Заключение
Восстановление публичного ключа DKIM из подписи в заголовке электронной почты невозможно, так как этот ключ изначально никогда в письме не содержится. Альтернативное решение предполагает использование инструментов DNS для поиска кэша старой записи или создание новых записей в случае, если восстановление не удастся. Важно не только видеть текущие сообщения подписанными и легитимными, но и применять перенесённые меры для управления и безопасного ведения доменной политики корреспонденции.