MailLandDocs
Domaines

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}/verify

Authentifiez-vous avec Authorization: Bearer <token> ou X-API-Key: <api key>.

Verify a domain
curl -X POST https://api.mail.land/v1/domains/k3v9x2m8q1w7z4/verify \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

Réponse

Verification response
{
  "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"
}
ChampTypeDescription
domainIdstringID public du domaine
domainstringNom du domaine
isVerifiedbooleantrue uniquement lorsque SPF, DKIM et DMARC sont tous valid
spfStatus, dkimStatus, dmarcStatusenumStatut de l'enregistrement : pending, valid ou invalid
verifiedAtdatetimeDate de vérification du domaine
messagestringRésumé du résultat
dnsRecordsobjectLes enregistrements SPF, DKIM (avec dkimSelector) et DMARC trouvés dans le DNS, ou la valeur attendue si aucun n'a été trouvé
spfErrorMessage, dkimErrorMessage, dmarcErrorMessagestringPourquoi l'enregistrement a échoué ; omis s'il a réussi
trackingVerified, bounceVerified, mxVerifiedbooleanSi le domaine de suivi personnalisé, le domaine de rebond personnalisé (Return-Path) et l'enregistrement MX entrant sont vérifiés
trackingVerifiedAt, bounceVerifiedAt, mxVerifiedAtdatetimeDate de vérification de chacun
trackingErrorMessage, bounceErrorMessage, mxErrorMessagestringPourquoi l'un d'eux a échoué ; renvoyé uniquement pour ceux que vous avez activés
lastDnsCheckAtdatetimeDate de la dernière vérification DNS

Statuts des enregistrements

Chaque vérification d'enregistrement DNS retourne l'un de ces statuts :

StatutDescription
pendingPas encore vérifié
validEnregistrement trouvé et correct
invalidEnregistrement absent ou incorrect

Exigences de vérification

Pour qu'un domaine soit vérifié (isVerified: true), SPF, DKIM et DMARC doivent tous être valid :

EnregistrementRequisDoit réussir
SPFOuiinclude:spf.mlnd.net doit être présent
DKIMOuiClé publique valide pour la clé DKIM active
DMARCOuiUn enregistrement sur _dmarc qui commence par v=DMARC1 et contient une politique (p=none, p=quarantine ou p=reject)
Chemin de retourNon (activé par défaut pour les nouveaux domaines ; ne bloque pas l'envoi)CNAME pointant vers bounce.mlnd.net, DNS uniquement (sans proxy)
SuiviNon (uniquement avec un domaine de suivi personnalisé)CNAME pointant vers track.mlnd.net, DNS uniquement (sans proxy)
MX entrantNon (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 :

Partial verification
{
  "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-check
Run a health check
curl -X POST https://api.mail.land/v1/domains/k3v9x2m8q1w7z4/health-check \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
Health check response
{
  "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é

StatutDescription
healthyToutes les vérifications réussies : aucun problème détecté
warningLe domaine fonctionne mais il y a des améliorations potentielles
criticalLe domaine présente des problèmes pouvant empêcher la livraison d'e-mails
unknownImpossible de déterminer le statut (échec de la recherche DNS)

Codes d'erreur

CodeSévéritéDescription
DnsNxDomaincriticalLe domaine n'existe pas (confirmé par un second résolveur indépendant)
SpfMissingcriticalAucun enregistrement SPF trouvé
SpfMissingIncludecriticalL'enregistrement SPF n'inclut pas spf.mlnd.net
SpfPermErrorcriticalPlus d'un enregistrement SPF (erreur SPF permanente)
SpfTooManyLookupswarningL'enregistrement SPF nécessite plus de 10 requêtes DNS
DkimMissingcriticalAucun enregistrement DKIM trouvé
DkimMissingSelectorcriticalAucun enregistrement DKIM au sélecteur d'une clé active
DkimKeyMismatchcriticalLa clé DKIM du DNS ne correspond pas à la clé de MailLand
DkimRevokedcriticalLa clé DKIM a été révoquée (balise p= vide)
DmarcMissingwarningAucun enregistrement DMARC trouvé
DmarcNonePolicywarningLa politique DMARC est none (surveillance uniquement)
MxMissingcriticalAucun enregistrement MX (vérifié uniquement si les e-mails entrants sont activés)
MxWrongHostwarningL'enregistrement MX ne pointe pas vers mx.mlnd.net
DnsTimeout, DnsServFail, DnsLookupFailedwarningLa 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-history
Get health history
curl https://api.mail.land/v1/domains/k3v9x2m8q1w7z4/health-history \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
Health history response
[
  {
    "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.net apparaît avant le mécanisme ~all ou -all

Enregistrement DKIM non trouvé

  • Vérifiez que l'enregistrement est à mlnd._domainkey.yourdomain.com (pas mlnd._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

Sur cette page