web-dev-qa-db-ja.com

なぜ脱出する必要があるのですか? DNS DKIMレコードに\を使用しますか?

私のドメインでメール認証を設定して、メールサービスプロバイダーでの認証を許可しています。

私の理解では、DNSレコードには;をエスケープする必要があります。たとえば、\;

すべてを確認したいだけです。エスケープする必要があります。そのために、なぜエスケープが必要なのかを理解したいと思います。つまり、それがb/cである場合;は何か特別なことを意味し、エスケープする必要があるないかどうかをどのように知ることができますか?それは特別な意味を持つべきですか?または、それはDNS TXTレコードで一般的に特別な(そして異なる)意味を持ち、DKIM設定の特別な使用のためにnot特別な意味を持たせたい(そして、レコードを読み取る人はだれでも値を適用する)

また、ESPは、DNSが「何らかの理由で\を追加している」ことを伝えています(理解できないかどうかを確認するために待機しています)。

5
Clay Nichols

特殊文字でエスケープが必要な文字の選択は、使用されているネームサーバーと、ネームサーバーの構成に使用されているインターフェイスによって異なります(たとえば、Webベースの構成ツールを使用している場合、自動的にエスケープされる可能性があります;文字で表示されます)。

標準の ゾーンファイル (RFC 1034/1035で定義)は、;文字を使用してコメントを開始します。バックスラッシュがない場合、セミコロンから行の終わりまでのテキストはサーバーによって無視されます。

bindはコメントを開始し、エスケープを要求するために、すでに引用された文字列内の;を考慮しませんが、エスケープする場合はそれを処理します。これらの両方 同じ応答を生成する必要があります

IN TXT "asdf;jkl"
IN TXT "asdf\;jkl"

また、DigまたはHostを使用すると、それらの出力は バックスラッシュをセミコロンに追加 になるので、長い間忘れられていました。

7
DerfK

A;ほとんどのLinux構成ファイルの#によく似た、ゾーンファイルのコメント文字です。 Bindにからの読み取りを停止するように指示します。その行の終わりまで続きます。

あなたがキャラクターを持つ必要がある場合; DNSレコードのコンテンツ内では、レコードのコンテンツを「」で囲むことができ、解釈されずに表示されます。 TXTおよびSPFレコードはこの形式を使用します(OpenDKIM標準から取得):

_domainkey.DOMAIN.TLD. IN TXT "t=y; o=-;"

SELECTOR._domainkey.DOMAIN.TLD. IN TXT "k=rsa; t=y; p=YOUR_PUBLIC_KEY_HERE"

私のゾーンファイルでは、\文字がまったくありません。コメント付きの値の前には;を付けます。

; Host Definitions
mail A 1.2.3.4 ; mail server
time A 1.2.3.4 ; ntp server

なぜエスケープを含める必要があるのか​​わかりません。 DNSレコード内の文字。これは、Bindがホスト名または他の値として解釈しようとすることを意味します。

2
red_shift