техническое · ответ с источниками
Что такое заголовок DKIM-Signature
Заголовок подписи DKIM — специальное поле, которое сервер отправки добавляет в письмо. Он содержит криптографический хеш тела письма и выбранных заголовков, что позволяет принимающему почтовому серверу убедиться, что письмо авторизовано владельцем домена и не было изменено при передаче.
Как это работает
Сервер отправки с помощью закрытого ключа создаёт цифровую подпись содержимого письма. Эта подпись вставляется в заголовок DKIM-Signature. Принимающий сервер получает соответствующий открытый ключ из TXT-записи DNS. Расшифровав подпись открытым ключом и сравнив полученный хеш со свежевычисленным хешем принятого письма, получатель подтверждает подлинность письма.
Почему это важно для отправителей
DKIM даёт уровень доверия, которого не может дать SPF, поскольку подпись сохраняется при пересылке письма. Она доказывает, что содержимое письма не изменилось и что домен, указанный в подписи, действительно является отправителем. Это снижает вероятность того, что письма будут помечены как спам или подделка, что критически важно для поддержания хорошей репутации отправителя.
Типичные ошибки в эксплуатации
Частая ошибка — не включать в подпись важные заголовки: если релей их изменит, проверка не пройдёт. Другая распространённая проблема — сбой при ротации ключей, когда закрытый ключ на сервере обновлён, а публичная DNS-запись осталась устаревшей. Проверить текущий статус аутентификации можно с помощью бесплатных инструментов SendHQ (https://sendhq.cc/tools).
Пример заголовка
Типичный заголовок выглядит так: DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=example.com; s=selector1; h=from:to:subject:date; bh=hash_of_body; b=digital_signature_value. Тег d задаёт домен, s — селектор для DNS-записи, а bh содержит хеш тела.
Процесс проверки
Когда письмо приходит, получатель разбирает заголовок DKIM-Signature, чтобы найти домен и селектор. Он запрашивает в DNS открытый ключ по адресу selector._domainkey.example.com. Если криптографическая проверка проходит, письмо получает статус DKIM-pass. Если хеш не совпадает или ключ отсутствует, результат будет DKIM-fail или neutral.
Что спрашивают команды
Шифрует ли DKIM тело письма?
Нет, DKIM не шифрует содержимое для конфиденциальности. Он добавляет цифровую подпись, обеспечивающую целостность и подлинность: содержимое остаётся читаемым, но изменить его, не нарушив подпись, нельзя.
Что будет, если подпись DKIM недействительна?
В зависимости от политики DMARC, настроенной владельцем домена, недействительная подпись может привести к повышению спам-рейтинга письма или к его полному отклонению принимающим сервером.
Может ли у письма быть несколько подписей DKIM?
Да, у письма может быть несколько подписей. Так часто бывает, когда письмо проходит через список рассылки или сервис пересылки, который добавляет собственную подпись, сохраняя исходную.