MailLandDocs
Alan Adları

Alan Adı Doğrulaması

DNS kaydı doğrulaması ile alan adı sahipliğinizi doğrulayın

DNS kayıtlarını yapılandırdıktan sonra, alan adı sahipliğini kanıtlamak ve e-posta göndermeyi açmak için doğrulamayı tetikleyin. MailLand, SPF, DKIM, DMARC ve dönüş yolu kayıtlarını kontrol eder.

Bir Alan Adını Doğrulayın

POST https://api.mail.land/v1/domains/{id}/verify

Authorization: Bearer <token> veya X-API-Key: <api key> ile kimlik doğrulaması yapın.

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

Yanıt

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"
}
AlanTürAçıklama
domainIdstringAlan adının genel kimliği
domainstringAlan adı
isVerifiedbooleanYalnızca SPF, DKIM ve DMARC'ın hepsi valid olduğunda true
spfStatus, dkimStatus, dmarcStatusenumKayıt durumu: pending, valid veya invalid
verifiedAtdatetimeAlan adının doğrulandığı zaman
messagestringSonucun özeti
dnsRecordsobjectDNS'te bulunan SPF, DKIM (dkimSelector ile) ve DMARC kayıtları ya da bulunamadıysa beklenen değer
spfErrorMessage, dkimErrorMessage, dmarcErrorMessagestringKaydın neden başarısız olduğu; geçtiyse yer almaz
trackingVerified, bounceVerified, mxVerifiedbooleanÖzel izleme alan adının, özel geri dönüş alan adının (Return-Path) ve gelen MX kaydının doğrulanıp doğrulanmadığı
trackingVerifiedAt, bounceVerifiedAt, mxVerifiedAtdatetimeHer birinin doğrulandığı zaman
trackingErrorMessage, bounceErrorMessage, mxErrorMessagestringBunlardan birinin neden başarısız olduğu; yalnızca açtıklarınız için döner
lastDnsCheckAtdatetimeDNS'in son kontrol edildiği zaman

Kayıt Durumları

Her DNS kaydı kontrolü şu durumlardan birini döndürür:

DurumAçıklama
pendingHenüz kontrol edilmedi
validKayıt bulundu ve doğru
invalidKayıt yok veya hatalı

Doğrulama Gereksinimleri

Bir alan adının doğrulanması (isVerified: true) için SPF, DKIM ve DMARC'ın hepsi valid olmalıdır:

KayıtZorunluGeçmesi Gereken
SPFEvetinclude:spf.mlnd.net bulunmalıdır
DKIMEvetEtkin DKIM anahtarı için geçerli genel anahtar
DMARCEvet_dmarc üzerinde v=DMARC1 ile başlayan ve bir politika (p=none, p=quarantine veya p=reject) içeren bir kayıt
Dönüş YoluHayır (yeni alan adları için varsayılan olarak açık; gönderimi engellemez)bounce.mlnd.net adresine işaret eden CNAME, yalnızca DNS (proxy'siz)
İzlemeHayır (yalnızca özel izleme alan adıyla)track.mlnd.net adresine işaret eden CNAME, yalnızca DNS (proxy'siz)
Gelen MXHayır (yalnızca gelen e-postayla)mx.mlnd.net adresine işaret eden MX

İsteğe bağlı kayıtlar isVerified değerini değiştirmez. Özel bir izleme veya geri dönüş alan adı, yalnızca kendi kaydı doğrulandıktan sonra gönderimde kullanılır; o zamana kadar MailLand varsayılan sunucularını kullanır.

Kısmi Doğrulama

Bazı kayıtlar bulunmuş ancak diğerleri eksikse, yanıt tam olarak neye dikkat edilmesi gerektiğini gösterir:

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

Otomatik Yeniden Doğrulama

MailLand, doğrulanmış alan adlarını PendingDomainVerificationWorker ve DnsHealthCheckWorker aracılığıyla arka planda periyodik olarak yeniden kontrol eder:

  • Bekleyen alan adları: eklendikten sonra 7 gün boyunca saatte bir yeniden kontrol edilir; bundan sonra manuel olarak doğrulayın
  • Doğrulanmış alan adları: kaldırılan veya değiştirilen kayıtları tespit etmek için DNS sağlığı periyodik olarak kontrol edilir

Doğrulanmış bir alan adının DNS kayıtları daha sonra kaldırılır veya değiştirilirse, etkilenen kaydın durumu (spfStatus/dkimStatus/dmarcStatus) invalid olur, isFullyVerified false olur ve kayıt düzeltilene kadar gönderim durur. verificationStatus'un kendisi Verified olarak kalır: DNS tekrar doğru olduğunda MailLand kaydın durumunu otomatik olarak geri yükler.

Alan Adı Sağlık Kontrolü

Temel doğrulamanın ötesine geçen talep üzerine sağlık kontrolü çalıştırın:

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

Sağlık Durumları

DurumAçıklama
healthyTüm kontroller geçti: sorun tespit edilmedi
warningAlan adı çalışıyor ancak potansiyel iyileştirmeler var
criticalAlan adının e-posta teslimatını engelleyebilecek sorunları var
unknownDurum belirlenemiyor (DNS arama hatası)

Sorun Kodları

KodÖnemAçıklama
DnsNxDomaincriticalAlan adı mevcut değil (ikinci, bağımsız bir çözümleyici tarafından doğrulandı)
SpfMissingcriticalSPF kaydı bulunamadı
SpfMissingIncludecriticalSPF kaydı spf.mlnd.net içermiyor
SpfPermErrorcriticalBirden fazla SPF kaydı (kalıcı SPF hatası)
SpfTooManyLookupswarningSPF kaydı 10'dan fazla DNS sorgusu gerektiriyor
DkimMissingcriticalDKIM kaydı bulunamadı
DkimMissingSelectorcriticalEtkin bir anahtarın seçicisinde DKIM kaydı yok
DkimKeyMismatchcriticalDNS'teki DKIM anahtarı MailLand'in anahtarıyla eşleşmiyor
DkimRevokedcriticalDKIM anahtarı iptal edilmiş (boş p= etiketi)
DmarcMissingwarningDMARC kaydı bulunamadı
DmarcNonePolicywarningDMARC politikası none (yalnızca izleme)
MxMissingcriticalMX kaydı yok (yalnızca gelen e-posta açıkken kontrol edilir)
MxWrongHostwarningMX kaydı mx.mlnd.net adresine işaret etmiyor
DnsTimeout, DnsServFail, DnsLookupFailedwarningDNS sorgusu tamamlanmadı; kayıt hakkında bir sonuca varılmadı

Sağlık Geçmişi

Geçmiş sağlık kontrolü sonuçlarını görüntüleyin. İsteğe bağlı from/to sorgu parametreleri (ISO 8601 tarihleri) aralığı daraltır:

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"
  }
]

Yanıt düz bir dizidir (items sarmalayıcısı yok, nextCursor/hasMore yok).

Sorun Giderme

SPF kaydı bulunamadı

  • Kök alan adınızda tam olarak bir SPF TXT kaydı olduğundan emin olun
  • Birden fazla SPF kaydı başarısızlıklara neden olur, bunları tek bir kayıtta birleştirin
  • include:spf.mlnd.net'in ~all veya -all mekanizmasından önce göründüğünü kontrol edin

DKIM kaydı bulunamadı

  • Kaydın mlnd._domainkey.yourdomain.com'da olduğunu doğrulayın (mlnd._domainkey değil)
  • Kayıt türü TXT olmalıdır (CNAME değil)
  • Bazı DNS sağlayıcıları uzun TXT değerlerinin etrafında tırnak işareti gerektirir
  • Yapıştırılan genel anahtardaki sondaki boşlukları veya yeni satırları kontrol edin

Dönüş yolu CNAME'i bulunamadı

  • CNAME'in bounce.yourdomain.com'da olduğunu onaylayın (veya özel geri dönüş alt alan adınız)
  • CNAME değeri bounce.mlnd.net olmalıdır (IP adresi veya MX kaydı değil)
  • Cloudflare kullanıcıları: proxy'nin devre dışı olduğundan emin olun (gri bulut / DNS only)

DNS yayılım gecikmesi

  • Çoğu DNS değişikliği 5-15 dakika içinde yayılır
  • Düşük TTL (300 saniye) kullanıyorsanız değişiklikler hızlı görünmelidir
  • Yüksek TTL'li mevcut kayıtların küresel olarak güncellenmesi 48 saate kadar sürebilir
  • 15 dakika bekledikten sonra tekrar doğrulamayı deneyin

Sonraki Adımlar

Bu sayfada