Vérification de domaine
Vérifiez la propriété de votre domaine via la validation des enregistrements DNS
Après avoir configuré les enregistrements DNS, déclenchez la vérification pour prouver la propriété du domaine et débloquer l'envoi d'e-mails. MailLand vérifie les enregistrements SPF, DKIM, DMARC et de chemin de retour.
Vérifier un domaine
POST https://api.mail.land/v1/domains/{id}/verifyAuthentifiez-vous avec Authorization: Bearer <token> ou X-API-Key: <api key>.
curl -X POST https://api.mail.land/v1/domains/k3v9x2m8q1w7z4/verify \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."Réponse
{
"domainId": "k3v9x2m8q1w7z4",
"domain": "yourdomain.com",
"isVerified": true,
"spfStatus": "valid",
"dkimStatus": "valid",
"dmarcStatus": "valid",
"verifiedAt": "2026-02-17T10:15:00Z",
"message": "Domain successfully verified with all DNS records valid",
"dnsRecords": {
"spfRecord": "v=spf1 include:spf.mlnd.net ~all",
"dkimSelector": "mlnd",
"dkimRecord": "v=DKIM1; k=rsa; p=MIIBIjANBgkq...",
"dmarcRecord": "v=DMARC1; p=none; rua=mailto:[email protected]"
},
"trackingVerified": false,
"bounceVerified": true,
"bounceVerifiedAt": "2026-02-17T10:15:00Z",
"mxVerified": false,
"lastDnsCheckAt": "2026-02-17T10:15:00Z"
}| Champ | Type | Description |
|---|---|---|
domainId | string | ID public du domaine |
domain | string | Nom du domaine |
isVerified | boolean | true uniquement lorsque SPF, DKIM et DMARC sont tous valid |
spfStatus, dkimStatus, dmarcStatus | enum | Statut de l'enregistrement : pending, valid ou invalid |
verifiedAt | datetime | Date de vérification du domaine |
message | string | Résumé du résultat |
dnsRecords | object | Les enregistrements SPF, DKIM (avec dkimSelector) et DMARC trouvés dans le DNS, ou la valeur attendue si aucun n'a été trouvé |
spfErrorMessage, dkimErrorMessage, dmarcErrorMessage | string | Pourquoi l'enregistrement a échoué ; omis s'il a réussi |
trackingVerified, bounceVerified, mxVerified | boolean | Si le domaine de suivi personnalisé, le domaine de rebond personnalisé (Return-Path) et l'enregistrement MX entrant sont vérifiés |
trackingVerifiedAt, bounceVerifiedAt, mxVerifiedAt | datetime | Date de vérification de chacun |
trackingErrorMessage, bounceErrorMessage, mxErrorMessage | string | Pourquoi l'un d'eux a échoué ; renvoyé uniquement pour ceux que vous avez activés |
lastDnsCheckAt | datetime | Date de la dernière vérification DNS |
Statuts des enregistrements
Chaque vérification d'enregistrement DNS retourne l'un de ces statuts :
| Statut | Description |
|---|---|
pending | Pas encore vérifié |
valid | Enregistrement trouvé et correct |
invalid | Enregistrement absent ou incorrect |
Exigences de vérification
Pour qu'un domaine soit vérifié (isVerified: true), SPF, DKIM et DMARC doivent tous être valid :
| Enregistrement | Requis | Doit réussir |
|---|---|---|
| SPF | Oui | include:spf.mlnd.net doit être présent |
| DKIM | Oui | Clé publique valide pour la clé DKIM active |
| DMARC | Oui | Un enregistrement sur _dmarc qui commence par v=DMARC1 et contient une politique (p=none, p=quarantine ou p=reject) |
| Chemin de retour | Non (activé par défaut pour les nouveaux domaines ; ne bloque pas l'envoi) | CNAME pointant vers bounce.mlnd.net, DNS uniquement (sans proxy) |
| Suivi | Non (uniquement avec un domaine de suivi personnalisé) | CNAME pointant vers track.mlnd.net, DNS uniquement (sans proxy) |
| MX entrant | Non (uniquement avec les e-mails entrants) | MX pointant vers mx.mlnd.net |
Les enregistrements optionnels ne modifient pas isVerified. Un domaine de suivi ou de rebond personnalisé n'est utilisé pour l'envoi qu'après la vérification de son propre enregistrement ; d'ici là, MailLand utilise ses hôtes par défaut.
Vérification partielle
Si certains enregistrements sont trouvés mais d'autres manquent, la réponse indique exactement ce qui nécessite attention :
{
"domainId": "k3v9x2m8q1w7z4",
"domain": "yourdomain.com",
"isVerified": false,
"spfStatus": "valid",
"dkimStatus": "invalid",
"dmarcStatus": "invalid",
"message": "Domain verification incomplete. Please check DNS records below.",
"dnsRecords": {
"spfRecord": "v=spf1 include:spf.mlnd.net ~all",
"dkimSelector": "mlnd",
"dkimRecord": "v=DKIM1; k=rsa; p=MIIBIjANBgkq...",
"dmarcRecord": "v=DMARC1; p=quarantine; pct=100; adkim=r; aspf=r; rua=mailto:[email protected]; sp=none"
},
"dkimErrorMessage": "DKIM record not found. Please add the TXT record to your DNS.",
"dmarcErrorMessage": "DMARC record not found. Please add TXT record at _dmarc subdomain.",
"trackingVerified": false,
"trackingErrorMessage": "CNAME record not found. Please add a CNAME record for track.yourdomain.com pointing to track.mlnd.net",
"bounceVerified": false,
"mxVerified": false,
"lastDnsCheckAt": "2026-02-17T10:20:00Z"
}Re-vérification automatique
MailLand re-vérifie périodiquement les domaines vérifiés en arrière-plan via le PendingDomainVerificationWorker et le DnsHealthCheckWorker :
- Domaines en attente : revérifiés toutes les heures pendant 7 jours après leur ajout ; ensuite, vérifiez manuellement
- Domaines vérifiés : la santé DNS est vérifiée périodiquement pour détecter les enregistrements supprimés ou modifiés
Si les enregistrements DNS d'un domaine vérifié sont ultérieurement supprimés ou modifiés, le statut de l'enregistrement concerné (spfStatus/dkimStatus/dmarcStatus) devient invalid, isFullyVerified devient false et l'envoi s'arrête jusqu'à ce que l'enregistrement soit corrigé. verificationStatus reste Verified : MailLand restaure automatiquement le statut de l'enregistrement dès que le DNS redevient correct.
Vérification de santé du domaine
Exécutez une vérification de santé à la demande qui va au-delà de la vérification de base :
POST https://api.mail.land/v1/domains/{id}/health-checkcurl -X POST https://api.mail.land/v1/domains/k3v9x2m8q1w7z4/health-check \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."{
"domainName": "yourdomain.com",
"status": "warning",
"previousStatus": "healthy",
"issues": [
{
"code": "DmarcNonePolicy",
"message": "DMARC policy is set to 'none' (monitoring only)",
"severity": "warning",
"record": "DMARC",
"details": "Consider upgrading to p=quarantine or p=reject"
}
],
"statusChanged": true,
"checkedAt": "2026-02-17T10:30:00Z",
"observationId": { "value": "3f2c9a1e-7b4d-4c1a-9e0f-5a6b7c8d9e0f" },
"spf": {
"lookupCompleted": true,
"isValid": true,
"value": "v=spf1 include:spf.mlnd.net ~all",
"issues": [],
"recordVerdict": "valid"
},
"dkim": {
"lookupCompleted": true,
"isValid": true,
"issues": [],
"recordVerdict": "valid"
},
"dmarc": {
"lookupCompleted": true,
"isValid": true,
"value": "v=DMARC1; p=none; rua=mailto:[email protected]",
"issues": [
{
"code": "DmarcNonePolicy",
"message": "DMARC policy is set to 'none' (monitoring only)",
"severity": "warning",
"record": "DMARC",
"details": "Consider upgrading to p=quarantine or p=reject"
}
],
"recordVerdict": "valid"
}
}Statuts de santé
| Statut | Description |
|---|---|
healthy | Toutes les vérifications réussies : aucun problème détecté |
warning | Le domaine fonctionne mais il y a des améliorations potentielles |
critical | Le domaine présente des problèmes pouvant empêcher la livraison d'e-mails |
unknown | Impossible de déterminer le statut (échec de la recherche DNS) |
Codes d'erreur
| Code | Sévérité | Description |
|---|---|---|
DnsNxDomain | critical | Le domaine n'existe pas (confirmé par un second résolveur indépendant) |
SpfMissing | critical | Aucun enregistrement SPF trouvé |
SpfMissingInclude | critical | L'enregistrement SPF n'inclut pas spf.mlnd.net |
SpfPermError | critical | Plus d'un enregistrement SPF (erreur SPF permanente) |
SpfTooManyLookups | warning | L'enregistrement SPF nécessite plus de 10 requêtes DNS |
DkimMissing | critical | Aucun enregistrement DKIM trouvé |
DkimMissingSelector | critical | Aucun enregistrement DKIM au sélecteur d'une clé active |
DkimKeyMismatch | critical | La clé DKIM du DNS ne correspond pas à la clé de MailLand |
DkimRevoked | critical | La clé DKIM a été révoquée (balise p= vide) |
DmarcMissing | warning | Aucun enregistrement DMARC trouvé |
DmarcNonePolicy | warning | La politique DMARC est none (surveillance uniquement) |
MxMissing | critical | Aucun enregistrement MX (vérifié uniquement si les e-mails entrants sont activés) |
MxWrongHost | warning | L'enregistrement MX ne pointe pas vers mx.mlnd.net |
DnsTimeout, DnsServFail, DnsLookupFailed | warning | La requête DNS n'a pas abouti ; rien n'a été conclu sur l'enregistrement |
Historique de santé
Consultez les résultats historiques des vérifications de santé. Les paramètres de requête optionnels from/to (dates ISO 8601) restreignent la plage :
GET https://api.mail.land/v1/domains/{id}/health-historycurl https://api.mail.land/v1/domains/k3v9x2m8q1w7z4/health-history \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."[
{
"domainName": "yourdomain.com",
"prevStatus": "healthy",
"newStatus": "warning",
"issues": ["DmarcNonePolicy"],
"reason": "Scheduled health check",
"checkedAt": "2026-02-17T10:30:00Z"
},
{
"domainName": "yourdomain.com",
"prevStatus": "warning",
"newStatus": "healthy",
"issues": [],
"reason": "Scheduled health check",
"checkedAt": "2026-02-16T10:30:00Z"
}
]La réponse est un tableau simple (pas d'enveloppe items, pas de nextCursor/hasMore).
Dépannage
Enregistrement SPF non trouvé
- Assurez-vous d'avoir exactement un enregistrement TXT SPF sur votre domaine racine
- Plusieurs enregistrements SPF provoquent des échecs, fusionnez-les en un seul enregistrement
- Vérifiez que
include:spf.mlnd.netapparaît avant le mécanisme~allou-all
Enregistrement DKIM non trouvé
- Vérifiez que l'enregistrement est à
mlnd._domainkey.yourdomain.com(pasmlnd._domainkey) - Le type d'enregistrement doit être TXT (pas CNAME)
- Certains fournisseurs DNS nécessitent des guillemets autour des longues valeurs TXT
- Vérifiez les espaces ou sauts de ligne dans la clé publique collée
CNAME de chemin de retour non trouvé
- Confirmez que le CNAME est à
bounce.yourdomain.com(ou votre sous-domaine de rebond personnalisé) - La valeur CNAME doit être
bounce.mlnd.net(pas une adresse IP, ni un enregistrement MX) - Utilisateurs Cloudflare : assurez-vous que le proxy est désactivé (nuage gris / DNS uniquement)
Délai de propagation DNS
- La plupart des changements DNS se propagent en 5 à 15 minutes
- Si vous utilisez un faible TTL (300 s), les changements devraient apparaître rapidement
- Les enregistrements existants avec un TTL élevé peuvent prendre jusqu'à 48 heures pour se mettre à jour globalement
- Réessayez la vérification après avoir attendu 15 minutes
Étapes suivantes
- Configuration DNS : examiner les enregistrements DNS requis
- Rotation des clés DKIM : faire pivoter les clés de signature DKIM
- REST API : commencer à envoyer des e-mails après la vérification