12 votes

Publication de longs enregistrements de clés de domaine dans bind9

Je suis en train de mettre en place un système de messagerie basé sur exim4. Ce système implémente la signature et la vérification DKIM (entre autres). La signature semble fonctionner sans problème mais la vérification ne fonctionne pas et exim4 se plaint de la syntaxe de mes enregistrements TXT qui portent ma clé publique 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]

J'utilise une clé RSA de 2048 bits pour signer mes courriers au niveau du relais de messagerie (cela fonctionne bien et j'ai effectivement des en-têtes DKIM dans les courriers relayés par ce serveur). Le problème semble résider dans le fait que bind (mon serveur DNS pour cette zone) ne supporte pas les enregistrements de plus de 255 caractères dans le fichier de zone. J'ai donc choisi de diviser l'enregistrement comme indiqué ci-dessous, et comme décrit dans le très fiable site 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")

Le dossier complet de la zone peut être trouvé ici : http://pastebin.com/GDE5XA2M

Avec cette configuration, exim se plaint de l'erreur ci-dessus. Si j'essaie de résoudre manuellement mes enregistrements dkim, voici ce que j'obtiens :

;; 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"

Cela ne me semble pas tout à fait correct et je peux imaginer qu'exim est perdu avec une telle sortie. Cependant, je ne suis pas sûr à 100% qu'il s'agisse d'une réponse DNS normale pour un enregistrement DNS aussi long et qu'exim devrait la gérer, ou si c'est la façon dont j'ai créé le lien qui est mauvaise.

Toute aide à ce sujet serait appréciée.

Merci.

13voto

Ian Vaughan Points 3510

Vous utilisez des virgules pour séparer vos paires clé/valeur dans votre enregistrement au lieu de points-virgules. Changez-le en :

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")

De plus, je note que dans mon fichier de zone particulier, je déclare spécifiquement la version comme étant v=DKIM1 et je pense que vous devriez aussi. En passant, je n'emballe pas le disque avec ( ) parce que je fais tout ça en une seule ligne :

record._domainkey IN 1800 TXT "v=DKIM1;blah" "blah2" "blah3"

C'est une préférence personnelle, et je réalise maintenant que la vôtre est certainement beaucoup plus lisible.

1 votes

Je ne sais pas comment j'ai pu manquer cela, mais cela a fait l'affaire (même sans la version, mais je l'ai ajoutée aussi)l).

4 votes

J'ai bind9 et j'ai remarqué que je ne peux pas mettre plus de 255 caractères dans une seule chaîne. Mais si je la divise en plusieurs chaînes (sur la même ligne), comme dans votre exemple, chacune faisant moins de 256 caractères, cela fonctionne.

3 votes

Comme il est spécifié dans RFC1035 section 3.3 : "<chaîne de caractères> est un octet de longueur unique suivi de ce nombre de caractères. La <chaîne de caractères> est traitée comme une information binaire, et peut comporter jusqu'à 256 caractères (y compris l'octet de longueur)."

0voto

Alp Altunel Points 101

Dans mon cas, la clé DKIM de Google est très longue. Vous devriez la diviser à la ligne suivante après 250-255 caractères comme :

mail._domainkey    IN  TXT ( "v=DKIM1\; h=sha256\; k=rsa\; "     
     "p=MIIBIjANBgkqhki...."
     "cOasyifDEj0AqBEEG7XbGfP0..."
     "dM0FoPv4JsWByAgz/ywIDAQAB" )

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X