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}/verifyAuthorization: Bearer <token> veya X-API-Key: <api key> ile kimlik doğrulaması yapın.
curl -X POST https://api.mail.land/v1/domains/k3v9x2m8q1w7z4/verify \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."Yanıt
{
"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"
}| Alan | Tür | Açıklama |
|---|---|---|
domainId | string | Alan adının genel kimliği |
domain | string | Alan adı |
isVerified | boolean | Yalnızca SPF, DKIM ve DMARC'ın hepsi valid olduğunda true |
spfStatus, dkimStatus, dmarcStatus | enum | Kayıt durumu: pending, valid veya invalid |
verifiedAt | datetime | Alan adının doğrulandığı zaman |
message | string | Sonucun özeti |
dnsRecords | object | DNS'te bulunan SPF, DKIM (dkimSelector ile) ve DMARC kayıtları ya da bulunamadıysa beklenen değer |
spfErrorMessage, dkimErrorMessage, dmarcErrorMessage | string | Kaydın neden başarısız olduğu; geçtiyse yer almaz |
trackingVerified, bounceVerified, mxVerified | boolean | Ö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, mxVerifiedAt | datetime | Her birinin doğrulandığı zaman |
trackingErrorMessage, bounceErrorMessage, mxErrorMessage | string | Bunlardan birinin neden başarısız olduğu; yalnızca açtıklarınız için döner |
lastDnsCheckAt | datetime | DNS'in son kontrol edildiği zaman |
Kayıt Durumları
Her DNS kaydı kontrolü şu durumlardan birini döndürür:
| Durum | Açıklama |
|---|---|
pending | Henüz kontrol edilmedi |
valid | Kayıt bulundu ve doğru |
invalid | Kayı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ıt | Zorunlu | Geçmesi Gereken |
|---|---|---|
| SPF | Evet | include:spf.mlnd.net bulunmalıdır |
| DKIM | Evet | Etkin DKIM anahtarı için geçerli genel anahtar |
| DMARC | Evet | _dmarc üzerinde v=DMARC1 ile başlayan ve bir politika (p=none, p=quarantine veya p=reject) içeren bir kayıt |
| Dönüş Yolu | Hayı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) |
| İzleme | Hayır (yalnızca özel izleme alan adıyla) | track.mlnd.net adresine işaret eden CNAME, yalnızca DNS (proxy'siz) |
| Gelen MX | Hayı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:
{
"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-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"
}
}Sağlık Durumları
| Durum | Açıklama |
|---|---|
healthy | Tüm kontroller geçti: sorun tespit edilmedi |
warning | Alan adı çalışıyor ancak potansiyel iyileştirmeler var |
critical | Alan adının e-posta teslimatını engelleyebilecek sorunları var |
unknown | Durum belirlenemiyor (DNS arama hatası) |
Sorun Kodları
| Kod | Önem | Açıklama |
|---|---|---|
DnsNxDomain | critical | Alan adı mevcut değil (ikinci, bağımsız bir çözümleyici tarafından doğrulandı) |
SpfMissing | critical | SPF kaydı bulunamadı |
SpfMissingInclude | critical | SPF kaydı spf.mlnd.net içermiyor |
SpfPermError | critical | Birden fazla SPF kaydı (kalıcı SPF hatası) |
SpfTooManyLookups | warning | SPF kaydı 10'dan fazla DNS sorgusu gerektiriyor |
DkimMissing | critical | DKIM kaydı bulunamadı |
DkimMissingSelector | critical | Etkin bir anahtarın seçicisinde DKIM kaydı yok |
DkimKeyMismatch | critical | DNS'teki DKIM anahtarı MailLand'in anahtarıyla eşleşmiyor |
DkimRevoked | critical | DKIM anahtarı iptal edilmiş (boş p= etiketi) |
DmarcMissing | warning | DMARC kaydı bulunamadı |
DmarcNonePolicy | warning | DMARC politikası none (yalnızca izleme) |
MxMissing | critical | MX kaydı yok (yalnızca gelen e-posta açıkken kontrol edilir) |
MxWrongHost | warning | MX kaydı mx.mlnd.net adresine işaret etmiyor |
DnsTimeout, DnsServFail, DnsLookupFailed | warning | DNS 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-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"
}
]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~allveya-allmekanizmasından önce göründüğünü kontrol edin
DKIM kaydı bulunamadı
- Kaydın
mlnd._domainkey.yourdomain.com'da olduğunu doğrulayın (mlnd._domainkeydeğ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.netolmalı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
- DNS Yapılandırması: gerekli DNS kayıtlarını gözden geçirin
- DKIM Anahtar Rotasyonu: DKIM imzalama anahtarlarını döndürün
- REST API: doğrulamadan sonra e-posta göndermeye başlayın