Kami mengalami masalah saat membuat catatan TXT panjang untuk kunci DKIM pada antarmuka web di hoster kami.
Setiap baris hanya dapat menerima 256 karakter.
Kami mencoba beberapa baris, lalu mencoba menambahkan ("
pada yang pertama dan ")
setelah yang terakhir seperti yang disarankan. Tidak ada yang berhasil.
Kemudian kami mencoba membuat cname ke catatan di hoster lain, tempat kami dapat membuat catatan DKIM TXT.
Tapi sekarang webinterface mengeluhkan nama ilegal dalam CNAME
catatan.
mail._domainkey.example.com TXT
OK
mail._domainkey.example.com CNAME
tidak OK tidak apa
mail.domainkey.example.com CNAME
-apa, tapi tidak apa yang kita inginkan.
Apakah antarmuka web hanya bertekad untuk membuat kita gila, atau benar-benar "ilegal" untuk menggarisbawahi CNAME
?
sumber
Jawaban:
Ya, nama DNS (ini juga termasuk A / AAAA) hanya boleh berisi
[0-9], [a-z], -
, jadi garis bawah tidak valid. Perhatikan bahwa catatan TXT bukan nama host, dan batasan ini tidak berlaku untuk itu. Dan satu edit terakhir:-
mungkin juga tidak digunakan sebagai karakter pertama, jadimail.-domainkey.our.dom
tidak akan valid.https://en.wikipedia.org/wiki/Hostname#Restrictions_on_valid_hostnames
Suntingan terakhir: Saya salah sebagian. Ketika CNAME digunakan sebagai nama host, pembatasan di atas berlaku. Tampaknya CNAME tidak dianggap sebagai nama host dalam konteks DKIM dan dalam hal itu,
_
harus menjadi bagian yang valid dari entri CNAME. Lihat /programming/13650233/underscore-in-cname-required-by-ses-not-allowed-by-registrar/26692491#26692491sumber
_foo CNAME _bar
benar-benar sah, Anda dapat mengujinyanamed-checkzone
.Setiap karakter yang valid diizinkan dalam DNS. Lihat https://tools.ietf.org/html/rfc2181#section-11
"DNS sendiri menempatkan hanya satu batasan pada label tertentu yang dapat digunakan untuk mengidentifikasi catatan sumber daya. Satu batasan itu berkaitan dengan panjang label dan nama lengkap. Panjang label mana pun terbatas pada antara 1 dan 63 oktet. "
Klien harus memvalidasi nilai nama, misalnya, data MX mungkin berisi nilai "Alice" tetapi setelah pencarian nilai itu harus ditolak karena "Alice" bukan alamat email yang valid.
Dalam hal ini sepertinya hoster Anda "memvalidasi" input Anda, dan mereka harus bisa memasukkannya secara manual untuk Anda.
sumber
_
atau apa pun yang Anda suka juga. Tetapi, untuk beberapa catatan, Anda hanya dapat menggunakan nama host dan bukan nama domain. Hostname hanya berupa digit huruf dan tanda hubung, tidak ada yang lain. Misalnya, pemilikA
atauAAAA
catatan adalah nama host, bukan nama domain. RDATA (target)NS
catatan juga merupakan nama host, bukan nama domain.RFC 1034: Label harus mengikuti aturan untuk nama host ARPANET. Mereka harus mulai dengan huruf, diakhiri dengan huruf atau angka, dan sebagai karakter interior hanya huruf, digit, dan tanda hubung. Ada juga beberapa batasan panjang. Label harus berukuran 63 karakter atau kurang.
sumber
_
.3com.com
misalnya aturan ini dilonggarkan, lihat tools.ietf.org/html/rfc1123#page-13 "Satu aspek sintaksis nama host dengan ini diubah: pembatasan pada karakter pertama santai untuk memungkinkan huruf atau angka. "esp_245537
digunakan sebagai nama host maka pembaruan DNS harus ditolak karena itu bukan nama host yang valid. Jika ini digunakan sebagai nama domain, maka pembaruan DNS harus berhasil (kalau tidak itu adalah bug), karena itu adalah label DNS yang valid.@ Sven menjawab, dengan sunting, sudah benar tetapi hanya untuk frase hal secara langsung.
TL; DR ya garis bawah valid dalam
CNAME
catatan di kedua sisi, baca di bawah ini untuk alasannya.RFC 1034 dan lainnya mendefinisikan catatan berdasarkan "nama domain" yang merupakan label dengan karakter apa pun, termasuk
_
.Tetapi beberapa catatan memiliki aturan yang lebih ketat untuk nama pemilik dan / atau data sumber daya (RDATA). Hanya ada nama host yang akan diterima dan memang aturannya sekarang (mereka santai di masa lalu di mana nama host tidak dapat dimulai dengan angka) yang dapat Anda gunakan huruf ASCII (tanpa sensitivitas huruf), setiap digit ASCII, dan tanda hubung , ditambah beberapa aturan posisi tambahan: tidak ada tanda hubung pada awal atau akhir dan tidak ada tanda hubung ganda pada posisi 3 dan 4 (karena "reservasi" untuk IDN yang berbentuk seperti
xn--
yang hanya diperbolehkan pada kasus).Misalnya, nama pemilik
A
atauAAAA
catatan adalah nama host, bukan nama domain. Jaditest.example.com A 192.0.2.1
valid mengapa semua ini tidak:Mudah untuk menguji hal-hal dengan
named-checkzone
program (bagian daribind
perangkat lunak nameserver tetapi dapat digunakan dan diinstal secara terpisah dan server nama lain mungkin memiliki alat pengecekan yang sama dan mungkin juga ada antarmuka online untuk itu), cukup letakkan catatan dalam file dan jalankan itu di:(angka sebelum
IN
adalah TTL, ini tidak terkait dengan masalah kita di sini, tetapi hanya diperlukan untuk melewati validasi sintaksis suatu catatan).Untuk catatan lain, sebaliknya: karena
NS
tidak ada batasan pada pemilik, tetapi pembatasan pada "target" yang merupakan data. Data hanya bisa berupa nama host, bukan nama domain, karena Anda perlu mengarahkan server nama otoritatif yang merupakan host fisik yang merespons permintaan DNS.Sekarang
CNAME
, berikut adalah kutipan yang relevan dari RFC 1034, di bagian 3.6:Jadi baik pemilik dari
CNAME
(apa yang ada di sebelah kiri itu), dan data sumber daya yang melekat padanya, tujuan / targetnya (apa yang ada di sebelah kanan itu) adalah nama domain, dan bukan hanya nama host. Pada dasarnya karakter apa pun, jadi termasuk_
diperbolehkan di kedua sisi.Sekali lagi, mudah diuji dengan
named-checkzone
:Tidak ada kesalahan apa pun tentang
CNAME
(kesalahan lainnya diharapkan karena di zona palsu saya, saya tidak menempatkanSOA
atauNS
catatan seperti yang akan dimiliki zona sebenarnya)sumber