TXT-запись — это не одна длинная строка. RFC 1035 хранит её как последовательность символьных строк, каждая не длиннее 255 байт, а резолвер склеивает их без чего-либо между ними. Именно поэтому ключ DKIM на 2048 бит приходится отдавать в файл зоны несколькими строками в кавычках, и поэтому разрез в неверном месте — или склейка кусков пробелом — ломает подпись почты так, что искать причину мучительно. Инструмент режет по границам байтов и никогда не разрывает символ.
Возможности
Режет по границам 255 байт, считая байты, а не символы
Никогда не разрывает многобайтовый символ или суррогатную пару
Форматы: BIND одной строкой, в скобках, только строки в кавычках или массив JSON
Число байтов в каждом куске, чтобы видеть заполненные строки
Предупреждения о лишних пробелах, уже проставленных кавычках и записях больше 512 байт
Собирает строки из файла зоны или ответа dig обратно
Примеры ключа DKIM на 2048 бит, длинной SPF и токена подтверждения
Как использовать Разбиение TXT-записи DNS
Вставьте значение TXT целиком — кавычки добавятся сами
Укажите имя записи и TTL, если нужна полная строка зоны
Выберите формат вывода, который ждёт ваш DNS-провайдер
Скопируйте запись либо соберите разрезанное значение на вкладке склейки
default._domainkey 3600 IN TXT "v=DKIM1; k=rsa; p=MIIBIja…" "…QIDAQAB"
Две строки в кавычках, которые резолвер склеит без чего-либо между ними.
Частые ошибки и устранение неполадок
DNS-провайдер отклоняет запись как слишком длинную. — Он применяет предел 255 байт к одной строке. Вставьте разрезанный вариант, где каждый кусок взят в кавычки отдельно.
После разбиения перестала проходить проверка DKIM. — Почти всегда виноват пробел между кусками. Резолверы склеивают строки без разделителя, поэтому любой добавленный пробел становится частью ключа.
В значении уже есть кавычки. — Вставьте исходное значение. Кавычки добавляются при форматировании, а уже закавыченное значение окажется закавыченным дважды.
Куски короче 255 символов. — Предел измеряется в байтах, а не в символах. Любой не-ASCII символ занимает от двух до четырёх байтов.
Часто задаваемые вопросы
Почему TXT-запись ограничена 255 символами?
Каждой строке внутри записи предшествует байт длины, который и ограничивает одну строку 255 байтами. Вся запись может содержать много строк, поэтому настоящий предел — размер DNS-сообщения.
Как резолвер собирает разбитые строки TXT?
Он склеивает их по порядку вообще без разделителя. На этом поведении и держатся DKIM, SPF и токены подтверждения.
Где резать ключ DKIM?
Где угодно, лишь бы каждый кусок не превышал 255 байт. Для проверяющей стороны после склейки ключ — это одна строка Base64.
Насколько большой может быть вся TXT-запись?
На практике несколько килобайт, но ответы больше примерно 512 байт требуют EDNS или повтора по TCP, а часть резолверов справляется с этим плохо.
Нужно ли так же разбивать запись SPF?
Только если одна строка выходит за 255 байт, что случается при множестве include. У SPF есть и собственный предел в десять DNS-запросов, и разбиение здесь не помогает.