Назад | Перейти на главную страницу

Публикация длинных ключевых записей домена в bind9

Настраиваю почтовую систему на базе exim4. Эта система реализует подписание и проверку DKIM (среди прочего). Подпись работает без проблем, но проверка не работает, и exim4 жалуется на синтаксис моих записей TXT, которые содержат мой открытый ключ dkim:

2014-02-02 22:37:31 1WA5fP-0004Y4-E2 DKIM: d=middle.earth s=a9d04665528b593d263a6e5256648c99 c=relaxed/relaxed a=rsa-sha256 [invalid - syntax error in public key record]

Я использую ключ RSA длиной 2048 бит для подписи своих писем на уровне ретрансляции почты (это работает нормально, и у меня действительно есть заголовки DKIM в сообщениях, ретранслируемых через этот сервер). Проблема, похоже, в том, что привязка (мой DNS-сервер для этой зоны) не поддерживает записи, длина которых превышает 255 символов в файле зоны. Поэтому я решил разделить запись, как показано ниже и как описано на очень надежном веб-сайте zytrax.com:

...
a9d04665528b593d263a6e5256648c99._domainkey IN  1800 TXT    ("k=rsa,p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz2/ZfhxSI/A"
                                         "bqgh0amM8ylrlosirWeKShUhq7fg12aYmRwOqq9hIzO0Fcz1BzfgHVu6HU++rC5"
                                         "QoUK0JQK/nk4jwkDgvG2di2ZYmAvEbY/VeiK1x/TG0p1Iczr2k6Bj0gEAb/YGD2"
                                         "YbwrwAi4bDXwoPsYuuNn9TB3jjyWKu/dvOsqhff1/4Wc+FkOi0ClvgrXiklN28X"
                                         "TLjyjSyU794ntIoegXxrfwcwkhfPMvuqcnhfIC0Z8L71M4WR4SoHyNHVfBtNlUv"
                                         "VNROiXlMxtxnNQvfViSwz6LC8bYIxeAba3hSXPTChKu3qZtfR0o3jFwEWAfLQdg"
                                         "Ixler0jMEoAyJmfQIDAQAB")

Полный файл зоны можно найти здесь: http://pastebin.com/GDE5XA2M

С такой конфигурацией exim жалуется на ошибку выше. Если я попытаюсь вручную разрешить свои записи dkim, вот что я получу:

;; ANSWER SECTION:
a9d04665528b593d263a6e5256648c99._domainkey.middle.earth. 1800 IN TXT "k=rsa,p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz2/ZfhxSI/A" "bqgh0amM8ylrlosirWeKShUhq7fg12aYmRwOqq9hIzO0Fcz1BzfgHVu6HU++rC5" "QoUK0JQK/nk4jwkDgvG2di2ZYmAvEbY/VeiK1x/TG0p1Iczr2k6Bj0gEAb/YGD2" "YbwrwAi4bDXwoPsYuuNn9TB3jjyWKu/dvOsqhff1/4Wc+FkOi0ClvgrXiklN28X" "TLjyjSyU794ntIoegXxrfwcwkhfPMvuqcnhfIC0Z8L71M4WR4SoHyNHVfBtNlUv" "VNROiXlMxtxnNQvfViSwz6LC8bYIxeAba3hSXPTChKu3qZtfR0o3jFwEWAfLQdg" "Ixler0jMEoAyJmfQIDAQAB"

Мне это кажется не совсем правильным, и я могу представить, что exim заблудился с таким выводом. Однако я не уверен на 100%, является ли это нормальным ответом DNS для такой длинной записи DNS и exim должен его обрабатывать, или это неправильный способ привязки.

Любая помощь по этому поводу будет оценена.

Спасибо.

Вы используете запятые для разделения пар ключ / значение в записи вместо точки с запятой. Измените его на:

a9d04665528b593d263a6e5256648c99._domainkey IN  1800 TXT (
         "k=rsa;p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz2/ZfhxSI/A"
         "bqgh0amM8ylrlosirWeKShUhq7fg12aYmRwOqq9hIzO0Fcz1BzfgHVu6HU++rC5"
         "QoUK0JQK/nk4jwkDgvG2di2ZYmAvEbY/VeiK1x/TG0p1Iczr2k6Bj0gEAb/YGD2"
         "YbwrwAi4bDXwoPsYuuNn9TB3jjyWKu/dvOsqhff1/4Wc+FkOi0ClvgrXiklN28X"
         "TLjyjSyU794ntIoegXxrfwcwkhfPMvuqcnhfIC0Z8L71M4WR4SoHyNHVfBtNlUv"
         "VNROiXlMxtxnNQvfViSwz6LC8bYIxeAba3hSXPTChKu3qZtfR0o3jFwEWAfLQdg"
         "Ixler0jMEoAyJmfQIDAQAB")

Также отмечу, что в моем конкретном файле зоны я специально объявляю версию как v=DKIM1 и я думаю, вам тоже стоит. Кстати, я не оборачиваю запись ( ) потому что я просто делаю все как одну длинную строку:

record._domainkey IN 1800 TXT "v=DKIM1;blah" "blah2" "blah3"

Это личное предпочтение, и теперь я понимаю, что ваше, безусловно, более читабельно.