Настраиваю почтовую систему на базе 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"
Это личное предпочтение, и теперь я понимаю, что ваше, безусловно, более читабельно.