проверка dkim продолжает терпеть неудачу из-за неправильной подписи

Вопрос или проблема

Моя проверка DKIM постоянно не проходит, и я не могу понять, почему. Она подписана, но неправильно.

Когда я проверяю домен и селектор, они оказываются действительными, поэтому проблема заключается в подписи.

Вот дамп одного тестового электронного письма:

============================================================================
Это отчет SPF/DKIM/DMARC/RBL, созданный тестовым инструментом, предоставленным 
    компанией AdminSystem Software Limited.

Если возникли проблемы, пожалуйста, свяжитесь с [email protected]
============================================================================
Report-Id: a511e572
Отправитель: [email protected]
Source-IP: 11.22.33.44
============================================================================
Оригинальный заголовок электронной почты:

x-sender: [email protected]
x-receiver: [email protected]
Получено: от host1.example.biz ([11.22.33.44]) через appmaildev.com с Microsoft SMTPSVC(8.5.9600.16384);
     Ср, 25 янв 2017 07:25:09 +0000
Получено: от host1.example.biz (localhost [127.0.0.1])
    через host1.example.biz (Postfix) с SMTP id DB0A3164364
    для <[email protected]>; Ср, 25 янв 2017 08:25:08 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=example.com;
    s=2016; t=1485329108;
    bh=GNttbsw+WDQCAJvuUenSuOnhZUFMDY0bOkhR87y32XA=;
    h=From:Subject:To:Date:From;
    b=dhJTUjBelfWvNPO4/gCWExHc87vC3uucapPxhKosJ/Ka/rgv42bSqARNIAmmROPID
     z7o2txBEt6aSRz+C/v+MnaXIzbFzlkOCUavahehOaGo7jkoIle1N11Yxyn6qe4+uh8
     wykUbHN9/sD4IORxP1sguFAdo9ONlbB6naW7tQoVDDfIhOS6UY5rFw7WmmGJIzitgv
     LJ4a/QrEDDDQX/H+kDessPbULFfLVUlhZQyscbHkb+S/B7s2D93S9vY9CSzrzG/uVj
     jvAYY+4LLhnPpaJBwjtQK2Itygj+gNQ3tvEmP1RwyNjSum0XDSQcQjEWtXs/ZC7Ker
     6rQnOaNhmvSaQ==
From: "dule" <[email protected]>
Subject: d
To: [email protected]
Message-Id: <[email protected]>
X-Mailer: Usermin 1.690
Дата: Ср, 25 янв 2017 08:25:08 +0100 (CET)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="bound1485329108"
Return-Path: [email protected]
X-OriginalArrivalTime: 25 Jan 2017 07:25:09.0615 (UTC) FILETIME=[28C68FF0:01D276DC]

============================================================================
SPF: Pass
============================================================================

SPF-Record: v=spf1 mx a ip4:11.22.33.44 a:host1.example.biz ?all
Sender-IP:11.22.33.44
Sender-Domain:example.com

Запрос TEXT записи с DNS-сервера для: example.com
[TXT]: v=spf1 mx a ip4:11.22.33.44 a:host1.example.biz ?all
Анализ запись SPF: v=spf1 mx a ip4:11.22.33.44 a:host1.example.biz ?all

Механизмы: v=spf1

Механизмы: mx
Тестирование механизма mx
Запрос MX записи с DNS-сервера для: example.com
[MX]: mail.example.com
Тестирование механизма A:mail.example.com/128
Запрос A записи с DNS-сервера для: mail.example.com
[A]: 11.22.33.44
Тестирование CIDR: source=11.22.33.44;  11.22.33.44/128
mx удача, Квалайфер: +

============================================================================
DKIM: провал
============================================================================

DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=example.com;
    s=2016; t=1485329108;
    bh=GNttbsw+WDQCAJvuUenSuOnhZUFMDY0bOkhR87y32XA=;
    h=From:Subject:To:Date:From;
    b=dhJTUjBelfWvNPO4/gCWExHc87vC3uucapPxhKosJ/Ka/rgv42bSqARNIAmmROPID
     z7o2txBEt6aSRz+C/v+MnaXIzbFzlkOCUavahehOaGo7jkoIle1N11Yxyn6qe4+uh8
     wykUbHN9/sD4IORxP1sguFAdo9ONlbB6naW7tQoVDDfIhOS6UY5rFw7WmmGJIzitgv
     LJ4a/QrEDDDQX/H+kDessPbULFfLVUlhZQyscbHkb+S/B7s2D93S9vY9CSzrzG/uVj
     jvAYY+4LLhnPpaJBwjtQK2Itygj+gNQ3tvEmP1RwyNjSum0XDSQcQjEWtXs/ZC7Ker
     6rQnOaNhmvSaQ==
Подписано: [email protected]
Ожидаемая хэш-сумма тела: GNttbsw+WDQCAJvuUenSuOnhZUFMDY0bOkhR87y32XA=
Публичный ключ: v=DKIM1; k=rsa; t=s; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm9jrAe+o1L/g0pQefC4AdVPmN2gS2ODghLhfzir0xKTBLl3U+2X33DCStxvHdaLJZYVlKu9PDwr5yXvX4izX5ZnM/gEIm2p3ij0ykQu7Phz6GUvBoozLGPM2876dEVuMZ/aZgqoC4BU8dXGIlif4mqyo6pM76gPwbcj9e98nY+NKJAdKpJV5fMO94wXZ/DjNjI4Sr6bWxrBOZZyh5Am9T/lbOgjjU26ejiroSw//MdXDNGBBp44llHSWEWuUfxamDHaR83UGqhV2gWLpJyrbJtp3Ic8nwuWc0Ko1fR7wbg+HW5OdF9WMf0Id2qTbKQlOSAzbz82Qh5Nj2RCBdBJ1hwIDAQAB;

DKIM-результат: провал (неверная подпись)

Вот дамп opendkim.conf

# Это базовая конфигурация, которая может быть легко адаптирована для стандартной
# установки. Для более продвинутых опций смотрите opendkim.conf(5) и/или
# /usr/share/doc/opendkim/examples/opendkim.conf.sample.

# Лог в syslog
Syslog yes
# Требуется для использования локального сокета с MTA, которые получают доступ к сокету как не-
# привилегированный пользователь (например, Postfix)
UMask                   002

# Подписываем для example.com с ключом /etc/mail/dkim.key, используя
# селектор '2007' (например, 2007._domainkey.example.com)
Domain /etc/dkim-domains.txt
KeyFile /etc/dkim.key
Selector 2016

# Наиболее часто используемые опции; закомментированные версии показывают значения по умолчанию.
#Canonicalization       simple
#Mode                   sv
#SubDomains             no
#ADSPAction            continue

# Всегда подписываем хузыри From (подписываем фактический From и пустой From, чтобы предотвратить
# зловредные подписи заголовочных полей (From и/или других) между подписчиком
# и верификатором. From подписан дублирующимся по умолчанию в пакете Debian
# так как это часто ключ идентичности, используемый системами репутации, а значит
# несколько чувствителен к безопасности.
OversignHeaders         From

# Список доменов для использования для RFC 6541 DKIM Авторизованных Подписей Третьих Сторон
# (ATPS) (экспериментальный)

#ATPSDomains            example.com
#SigningTable refile:/etc/dkim-signingtable
#KeyTable /etc/dkim-keytable

Фактически, кажется, что вышеуказанная конфигурация и ключи в порядке, проблема могла быть связана с различными инструментами для валидации DKIM и Google, что они задерживаются с улавливанием изменений DNS.

Я предлагаю проводить тесты DKIM через 48 часов после настройки сервера.

Ответ или решение

Проблема с проверкой DKIM, которая продолжает выдавать ошибку "неверная подпись", может быть весьма сложной, особенно если, как у вас, домен и селектор настроены правильно. Однако, основной причиной большинства неудачных проверок DKIM является несоответствие между подписанными данными и тем, что фактически используется для проверки. Давайте рассмотрим возможные причины и решения этой проблемы.

Теория

DKIM (DomainKeys Identified Mail) — это метод, позволяющий отправителям ассоциировать домен с сообщением электронной почты при помощи цифровой подписи. Подпись добавляется к заголовку сообщения, и как только это сообщение достигает получателя, сервер получателя может проверить подпись, используя публичный ключ, опубликованный в DNS домена.

Обратите внимание на несколько важных аспектов:

  1. Целостность данных: Подпись зависит от содержимого сообщения. Любые изменения в заголовках или теле сообщения после подписи могут привести к тому, что проверка будет неудачной.

  2. Canonicalization (канонизация): Процесс нормализации текста перед подписанием и проверкой. Часто этот процесс используют для снижения вероятности ошибок из-за незначительных изменений (например, различных типов разрыва строк).

  3. Задержки в обновлении DNS: Как вы справедливо заметили, задержки в реакции DNS-серверов на изменения могут препятствовать правильной проверке DKIM-подписей.

Пример

Вы предоставили выдержку из заголовков электронной почты и конфигурации OpenDKIM. Рассмотрим некоторые ключевые моменты, которые могут объяснить вашу проблему.

  1. Заголовки:

    • В заголовке DKIM-сигнатуры указана канонизация simple/simple. Это более строгий метод, чем relaxed/relaxed, что означает, что даже незначительные изменения в пробелах или разрывах строк могут вызвать сбой.
  2. DNS:

    • Все изменения в DNS, включая обновления DKIM ключа, могут не сразу отражаться на всех DNS-серверах из-за механизмов кэширования.
  3. Тело сообщения:

    • Перепроверьте, что содержимое, которое фактически подписывается, совпадает с тем, что используется для проверки. Даже незамеченные изменения, как добавление символа пробела в конце строки, могут нарушить проверку.

Реализация

Исходя из приведенных данных, вы можете предпринять следующие шаги:

  1. Проверьте канонизацию: Параметры c=simple/simple могут быть слишком строгими. Попробуйте изменить их на c=relaxed/relaxed, чтобы проверить, не становится ли подпись успешной.

  2. Тщательно проверьте заголовки: Убедитесь, что именно те заголовки, которые были подписаны, оставлены неизменными и находятся в том же порядке в проверяемом сообщении.

  3. Проверка конфигурации OpenDKIM: Убедитесь, что файлы Domain, KeyFile и Selector правильно настроены и соответствуют вашей настройке DNS.

  4. Отложите проверку после изменений DNS: После внесения изменений в DNS записи, подождите не менее 24-48 часов перед повторными проверками отправляемых электронных писем, чтобы все DNS-серверы могли обновить кэшированные данные.

  5. Проведите тесты: Используйте внешние сервисы для тестирования DKIM, такие как mail-tester.com или dkimvalidator.com, чтобы проверить успешность применения изменений.

Решение проблем DKIM может быть технически сложным и требует терпения при диагностике и конфигурации. Соблюдение лучшей практики в настройках помогает снизить вероятность возникновения данной проблемы и минимизировать количество сообщений о сбоях в проверке подписи.

Оцените материал
Добавить комментарий

Капча загружается...