У нас возникают проблемы при создании длинной записи TXT для ключа DKIM в веб-интерфейсе нашего хостера.
Каждая строка может принимать только 256 символов.
Мы попробовали несколько строк, затем попытались добавить ("
в первую и ")
после последней, как некоторые предполагают. Ни то, ни другое не работает.
Затем мы попытались сделать cname для записи на другом хостере, где мы можем сделать записи DKIM TXT.
Но теперь веб-интерфейс жалуется на незаконное имя в CNAME
записи.
mail._domainkey.example.com TXT
хорошо
mail._domainkey.example.com CNAME
не хорошо
mail.domainkey.example.com CNAME
это хорошо, но не то, что мы хотим.
Является ли вебинтерфейс только для того, чтобы сводить нас с ума, или это действительно "незаконно", чтобы подчеркивание CNAME
?
Ответы:
Да, DNS-имена (включая A / AAAA) могут содержать только
[0-9], [a-z], -
недопустимое подчеркивание. Обратите внимание, что запись TXT не является именем хоста, и это ограничение на нее не распространяется. И последнее изменение:-
не может использоваться в качестве первого символа, поэтомуmail.-domainkey.our.dom
не будет действительным.https://en.wikipedia.org/wiki/Hostname#Restrictions_on_valid_hostnames
Окончательное редактирование: я был частично неправ. Когда в качестве имени хоста используется CNAME, применяются вышеуказанные ограничения. Похоже, что CNAME не считается именем хоста в контексте DKIM и в этом случае
_
должно быть допустимой частью записи CNAME. См. Https://stackoverflow.com/questions/13650233/underscore-in-cname-required-by-ses-not-allowed-by-registrar/26692491#26692491источник
_foo CNAME _bar
вполне законно, вы можете проверить сnamed-checkzone
.В DNS разрешены любые допустимые символы. См. Https://tools.ietf.org/html/rfc2181#section-11.
«DNS сам накладывает только одно ограничение на конкретные метки, которые можно использовать для идентификации записей ресурсов. Это ограничение касается длины метки и полного имени. Длина любой одной метки ограничена от 1 до 63 октетов. "
Клиент должен проверить значения имени. Например, запись MX может содержать значение «Алиса», но после поиска это значение следует отклонить, поскольку «Алиса» не является действительным адресом электронной почты.
В этом случае похоже, что ваш хостер «проверяет» ваш ввод, и они должны иметь возможность ввести его вручную для вас.
источник
_
или что-то еще, что вам нравится. Но для некоторых записей вы можете использовать только имена хостов, а не доменные имена. Имена хостов - это только буквы, цифры и дефисы, больше ничего. Например, владельцем записиA
илиAAAA
является имя хоста, а не имя домена. RDATA (цель)NS
записи также является именем хоста, а не именем домена.RFC 1034: метки должны соответствовать правилам для имен хостов ARPANET. Они должны начинаться с буквы, заканчиваться буквой или цифрой и содержать в качестве внутренних символов только буквы, цифры и дефис. Есть также некоторые ограничения по длине. Метки должны быть не более 63 символов.
источник
_
.3com.com
например, это правило было смягчено, см. Tools.ietf.org/html/rfc1123#page-13 «Настоящим изменен один аспект синтаксиса имени хоста: ограничение на первый символ расслаблен, чтобы позволить или букву или цифру. "esp_245537
используется в качестве имени хоста, тогда в обновлении DNS должно быть отказано, поскольку оно не является допустимым именем хоста. Если это имя используется в качестве имени домена, обновление DNS должно быть успешным (в противном случае это ошибка), поскольку это допустимая метка DNS.@ Ответ Свена, с правкой, уже правильный, но только для того, чтобы прямо сформулировать.
TL; DR да подчеркивание действительно в
CNAME
записи с обеих сторон, читайте ниже, почему.RFC 1034 и другие определяют записи на основе «доменных имен», которые представляют собой метки с любым символом, в том числе
_
.Но некоторые записи имеют более строгие правила для имени владельца и / или данных ресурса (RDATA). Там будет принято только имя хоста, и теперь действительно действуют правила (они были смягчены в прошлом, когда имя хоста не могло начинаться с цифры), что вы можете использовать любую букву ASCII (без учета регистра), любые цифры ASCII и дефисы плюс некоторые дополнительные правила позиции: без дефиса в начале или в конце и без двойных дефисов в позициях 3 и 4 (из-за «резервирования» для ИДИ, имеющих форму,
xn--
которая допускается только в случае).Например, имя владельца записи
A
илиAAAA
- это имя хоста, а не имя домена. Такtest.example.com A 192.0.2.1
действительно, почему все это не так:Это легко проверить с помощью
named-checkzone
программы (частьbind
программного обеспечения сервера имен, но она может использоваться и устанавливаться отдельно, а другие серверы имен могут иметь аналогичные инструменты проверки, и в любом случае, вероятно, для этого тоже есть онлайн-интерфейсы), просто поместите записи в файл и запустите это на:(число перед
IN
TTL, это не имеет отношения к нашей проблеме здесь, но необходимо только для проверки синтаксиса записи).Для других записей все наоборот: для
NS
владельца нет никаких ограничений, но есть ограничения для «цели», которой являются данные. Данные могут быть только именем хоста, но не именем домена, потому что вам нужно указать на авторитетные серверы имен, которые являются физическими хостами, которые отвечают на запросы DNS.Теперь о
CNAME
, вот соответствующие цитаты из RFC 1034, в разделе 3.6:Таким образом, как владелец объекта
CNAME
(который находится слева от него), так и данные о ресурсах, прикрепленные к нему, его назначение / назначение (что находится справа от него) являются доменными именами, а не только именами хостов. В основном любой персонаж, поэтому включение_
разрешено с обеих сторон.Опять же, легко проверить с помощью
named-checkzone
:Никаких ошибок в этом нет
CNAME
(другие ошибки ожидаются, так как в моей фальшивой зоне я не ставил ни одной,SOA
илиNS
записи, как у настоящей зоны)источник