E-mails et domaines
Vérifier le DKIM
Couverture: Fonctionne avec les domaines de tous les pays. Sans sélecteur, nous essayons ceux par défaut des grands fournisseurs (Google, Microsoft 365, Zoho, Proton, Fastmail, Mailchimp et d’autres) et les noms génériques habituels, 33 au total. Les clés sont lues comme le font les serveurs de réception (RFC 6376) : RSA et Ed25519.
Ouvrir l’outilSur cette page
Objectif
Vérifiez les clés DKIM d’un domaine : saisissez un sélecteur ou laissez-nous essayer les plus courants, et voyez le type de chaque clé, sa taille en bits et si elle est en test ou retirée.
Prérequis
Tout le monde peut lire ces guides, sans compte. Certains outils nécessitent Pro, comme indiqué dans chaque guide.
Le DKIM permet à un domaine de signer ses e-mails avec une clé publiée dans le DNS, pour que les serveurs de réception puissent vérifier qu’un message vient bien de ce domaine et n’a pas été modifié. Chaque clé se trouve sous un nom appelé sélecteur. Saisissez un domaine et, si vous le connaissez, le sélecteur ; sans sélecteur, nous essayons 33 sélecteurs courants.
Mode d’emploi
Ouvrez un e-mail envoyé par ce domaine et affichez l’original ou les en-têtes (dans Gmail : les trois points, puis « Afficher l’original »).
Cherchez l’en-tête « DKIM-Signature » : « d= » est le domaine et « s= » est le sélecteur, par exemple s=selector1.
Saisissez le domaine et le sélecteur, puis appuyez sur « Vérifier le DKIM ». Sans sélecteur, nous en essayons 33 courants, comme default, google, selector1 ou k1.
Exemple fictif
Exemple inventé, pas une recherche réelle. N’appelez pas et n’ouvrez pas ses liens.
selector1._domainkey.example.comInterpréter le résultat
Le domaine signe ses e-mails avec DKIM: Nous avons trouvé sa clé publique : les serveurs de réception peuvent vérifier que ses messages viennent bien de ce domaine et n’ont pas été modifiés en chemin.
Il y a des clés DKIM, avec des avertissements: Nous avons trouvé au moins une clé, mais certaines sont retirées, en test ou trop faibles. Les détails figurent sous chaque clé.
Aucune clé DKIM dans les sélecteurs courants: Cela ne prouve pas que le domaine n’a pas de DKIM : il peut utiliser un autre sélecteur. Vous le trouverez dans l’en-tête « DKIM-Signature: s= » d’un e-mail qu’il vous a envoyé. Saisissez-le dans « Sélecteur » et vérifiez à nouveau.
Aucune clé DKIM pour ce sélecteur: Vérifiez l’orthographe : le sélecteur est la valeur « s= » de l’en-tête « DKIM-Signature », et le domaine est sa valeur « d= ».
La clé est vide (p=) : ce sélecteur est retiré et ne signe plus d’e-mails.
La clé est en mode test (t=y) : le domaine demande aux serveurs de réception de ne pas agir si la signature échoue.
La clé RSA fait moins de 1024 bits : elle peut être cassée et de nombreux serveurs de réception ne l’acceptent pas.
La clé RSA fait 1024 bits : elle est encore acceptée, mais 2048 est recommandé.
La clé n’autorise que SHA-1, un algorithme ancien qui n’est plus considéré comme sûr.
L’enregistrement de la clé contient une erreur et ne peut pas être lu.
Le type de clé n’est ni RSA ni Ed25519 : les serveurs de réception ne peuvent donc pas l’utiliser.
Limites
Cela ne prouve pas que le domaine n’a pas de DKIM : il peut utiliser un autre sélecteur. Vous le trouverez dans l’en-tête « DKIM-Signature: s= » d’un e-mail qu’il vous a envoyé. Saisissez-le dans « Sélecteur » et vérifiez à nouveau.
Nous lisons les enregistrements DNS publics du domaine. Si vous saisissez une adresse e-mail ou un lien, seul son domaine quitte votre navigateur. Nous ne conservons pas le domaine que vous consultez.
Résoudre un problème
Cela ne ressemble pas à un domaine public. Essayez par exemple avec example.com.
Un sélecteur ne peut contenir que des lettres, des chiffres, des tirets, des tirets bas et des points.
Le DNS n’a pas répondu à temps. Réessayez dans quelques secondes.
Vous avez lancé beaucoup de vérifications d’affilée. Attendez une minute et réessayez.
Utiliser avec l’API
Nécessite une API key et des crédits. Chaque appel abouti coûte 1 crédit, même sans données. Un compte Pro actif inclut 20 crédits par mois calendaire UTC, partagés entre toutes les routes de l’API et consommés en premier ; les crédits mensuels non utilisés ne sont pas reportés. Les crédits achetés sur la page de votre compte fonctionnent sans Pro et n’expirent jamais.
Les erreurs ne sont jamais facturées : 401 invalid_api_key (clé absente ou invalide), 403 pro_required (ni crédits Pro ni crédits achetés), 422 entrée invalide, 429 quota_exceeded (plus de crédits), rate_limit_exceeded ou ai_busy (l’IA de sms-check est à pleine capacité), 503 tool_warming (les données sont encore en préparation) ou tool ou fournisseur indisponible. Après un 429 ou un 503, réessayez une fois écoulées les secondes indiquées dans l’en-tête Retry-After.
Les clés DKIM d’un domaine pour un sélecteur, ou pour environ 33 sélecteurs courants si aucun n’est indiqué : le type de chaque clé (rsa ou ed25519), sa taille en bits et si elle est en test ou révoquée. none_found ne prouve pas que le domaine n’a pas de DKIM : il peut utiliser un autre sélecteur. Rien n’est enregistré.
Envoyez le corps JSON à la route propre au tool, ou à POST /v2/tools en ajoutant le champ tool. Les deux routes renvoient le même résultat.
POST https://api.nocall.io/v2/dkim-check
POST https://api.nocall.io/v2/tools {"tool":"dkim-check","domain":"example.com","selector":"s1"}Paramètres
| Nom | Type | Obligatoire | Description |
|---|---|---|---|
| domain | string (1–320) | Oui | Un domaine, ou une adresse e-mail ou un lien dont le domaine est utilisé, jusqu’à 320 caractères. Noms publics uniquement : les adresses IP, les noms à un seul label et les noms à usage spécial (.local, .internal, .test…) renvoient un 422. |
| selector | string (1–120) | Non | Le sélecteur : la balise s= d’un en-tête DKIM-Signature, jusqu’à 120 caractères. Sans lui, environ 33 sélecteurs courants sont essayés. |
REQUEST_ID="$(uuidgen)" && [ -n "$REQUEST_ID" ] &&
curl --request POST 'https://api.nocall.io/v2/dkim-check' \
--header "Authorization: Bearer $NOCALL_API_KEY" \
--header 'Content-Type: application/json' \
--header "Idempotency-Key: $REQUEST_ID" \
--data '{"domain":"example.com","selector":"s1"}'import json
import os
import urllib.request
import uuid
api_key = os.environ.get('NOCALL_API_KEY')
if not api_key:
raise SystemExit('Set NOCALL_API_KEY')
request = urllib.request.Request(
'https://api.nocall.io/v2/dkim-check',
method='POST',
data=json.dumps({'domain': 'example.com', 'selector': 's1'}).encode(),
headers={
'Authorization': 'Bearer ' + api_key,
'Content-Type': 'application/json',
'Idempotency-Key': str(uuid.uuid4()),
},
)
with urllib.request.urlopen(request, timeout=30) as response:
result = json.load(response)
print(result['data']['result'], result['meta']['unitsCharged'])import { randomUUID } from 'node:crypto';
const requestId = randomUUID();
const apiKey = process.env.NOCALL_API_KEY;
if (!apiKey) throw new Error('Set NOCALL_API_KEY');
const response = await fetch('https://api.nocall.io/v2/dkim-check', {
method: 'POST',
headers: {
Authorization: 'Bearer ' + apiKey,
'Content-Type': 'application/json',
'Idempotency-Key': requestId,
},
body: JSON.stringify({ domain: 'example.com', selector: 's1' }),
});
const result = await response.json();
if (!response.ok) throw new Error(result.error?.code ?? 'request_failed');
console.log(result.data.result, result.meta.unitsCharged);Exemple de réponse (200)
Il s’agit de l’exemple documenté dans la référence de l’API. Les recherches utilisent un numéro fictif ; les agrégats et les réponses de l’IA montrent la structure du résultat, pas des données réelles.
{
"data": {
"tool": "dkim-check",
"result": {
"domain": "example.com",
"domainAscii": "example.com",
"selectorGiven": true,
"selectorsTried": 1,
"keys": [
{
"selector": "s1",
"keyType": "rsa",
"keyBits": 2048,
"testing": false,
"revoked": false,
"valid": true,
"signals": []
}
],
"signals": [],
"attention": false
}
},
"meta": {
"requestId": "req_example",
"unitsCharged": 1,
"usage": {
"periodStart": "2026-10-01",
"unitLimit": 20,
"unitsUsed": 3,
"unitsRemaining": 17
}
}
}Champs du résultat (data.result)
| Champ | Type | Description |
|---|---|---|
| domain | string | Le domaine en Unicode. |
| domainAscii | string | Le même domaine en ASCII (punycode), tel que le voit le DNS. |
| selectorGiven | boolean | Indique si un sélecteur a été fourni ; sinon, les sélecteurs courants ont été essayés. |
| selectorsTried | integer | Le nombre de sélecteurs consultés. |
| keys | array<object> | Chaque sélecteur qui publie une clé : selector, keyType (rsa ou ed25519), keyBits (256 pour ed25519), testing (t=y), revoked (un p= vide), valid et ses signaux (revoked_key, testing_mode, weak_key, short_key, sha1_only, syntax_error ou unknown_key_type). |
| signals | array<"none_found"> | none_found : aucune clé pour le sélecteur fourni ni pour aucun sélecteur courant (un autre sélecteur peut quand même être utilisé). |
| attention | boolean | Indique si le résultat mérite un examen : aucune clé trouvée, ou une clé invalide, révoquée, en test ou faible. |
Questions fréquentes
Qu’est-ce que le DKIM ?
DomainKeys Identified Mail : le serveur d’envoi signe chaque e-mail avec une clé privée et le domaine publie la clé publique dans le DNS. Le serveur de réception vérifie la signature : si elle correspond, l’e-mail vient bien de ce domaine et n’a pas été modifié en chemin.
Qu’est-ce qu’un sélecteur ?
Le nom sous lequel une clé est publiée, à selector._domainkey.example.com. Un domaine peut en avoir plusieurs, un par fournisseur ou par changement de clé. Il apparaît sous la forme « s= » dans l’en-tête « DKIM-Signature » de chaque e-mail.
Pourquoi ne trouve-t-il aucune clé alors que le domaine utilise DKIM ?
Les sélecteurs peuvent porter n’importe quel nom et le DNS ne permet pas de les lister. Nous en essayons 33 courants ; si le domaine en utilise un autre, saisissez-le dans « Sélecteur ». C’est pourquoi « aucune clé trouvée » ne prouve pas qu’il n’y a pas de DKIM.
Que signifient 1024 et 2048 bits ?
La taille de la clé RSA : plus elle est longue, plus elle est difficile à casser. 1024 bits est encore accepté, mais 2048 est la taille recommandée. En dessous de 1024, de nombreux serveurs de réception ignorent la signature.
