SPF, DKIM ve DMARC; e-postanın gerçekten sizin adınıza gönderildiğini kanıtlayan ve alan adınızın sahtekârlıkla taklit edilmesini (spoofing/phishing) önleyen üç kimlik doğrulama katmanıdır. 2024 yılından itibaren Gmail ve Yahoo, günde 5.000'den fazla mail gönderenler için bu üçünü de zorunlu kılıyor — eksik olan gönderim throttle edilir, spam'e atılır veya reddedilir. Üçü de alan adınızın DNS kayıtlarına eklenir ve birbirini tamamlar.
SPF — Sender Policy Framework (RFC 7208)
SPF, hangi sunucuların/IP'lerin sizin alan adınız adına e-posta gönderebileceğini belirten bir TXT kaydıdır. Alıcı sunucu, maili gönderen IP'nin bu listede olup olmadığını kontrol eder.
Tür: TXT Ad: @ (alan adının kökü)
Değer: v=spf1 ip4:198.51.100.10 include:_spf.saglayici.com ~all
Önemli kurallar
~all= softfail (başarısız gönderimi işaretle ama reddetme — önerilen başlangıç),-all= hardfail (katı reddetme).- 10 DNS sorgusu limiti (RFC 7208 §4.6.4):
include,a,mx,ptr,existsmekanizmaları sayılır;ip4,ip6veallsayılmaz. Bu limiti aşmak PermError üretir ve SPF tamamen başarısız olur. Ayrıca en fazla 2 "void" (boş dönen) sorgu izni vardır. - Bir alan adının yalnızca bir SPF kaydı olmalıdır; ikinci bir
v=spf1kaydı geçersizliğe yol açar.
SPF'in tek başına bir zayıflığı, e-posta iletildiğinde (forward) bozulmasıdır — bu yüzden DKIM ile birlikte kullanılır.
DKIM — DomainKeys Identified Mail (RFC 6376)
DKIM, giden her e-postaya bir kriptografik imza (dijital mühür) ekler. İmzayı doğrulayan açık anahtar (public key) DNS'te yayınlanır; özel anahtar (private key) gönderen tarafında gizli kalır. Alıcı sunucu, DNS'teki açık anahtarla imzayı doğrulayarak mailin yolda değiştirilmediğini ve gerçekten sizden geldiğini teyit eder.
Tür: TXT Ad: secim._domainkey
Değer: v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4...(açık anahtar)
Buradaki secim bir selector'dür. Selector, aynı alan adında birden çok DKIM anahtarını ayırt etmenizi ve anahtarı periyodik olarak yenilemenizi (rotation) sağlar. İmza; genellikle From, Subject, Date gibi başlıkları ve gövdeyi kapsar.
DMARC — politikanın patronu (RFC 7489)
DMARC, SPF ve DKIM'in üstünde durur: kimlik doğrulama başarısız olduğunda ne yapılacağını söyler ve size düzenli rapor gönderir. _dmarc alt alanında yayınlanır.
Tür: TXT Ad: _dmarc
Değer: v=DMARC1; p=none; rua=mailto:dmarc@alanadiniz.com; pct=100; adkim=r; aspf=r
Etiketler (tags)
p— politika:none(yalnızca izle/raporla),quarantine(spam'e at),reject(SMTP seviyesinde reddet).sp— alt alan adları için ayrı politika (belirtilmezse üst politika devralınır).rua— toplu (aggregate) raporların gönderileceği adres;ruf— anlık hata (forensic/failure) raporu.pct— politikanın uygulanacağı başarısız mail yüzdesi (kademeli geçiş için).adkim/aspf— hizalama modu:r(gevşek/relaxed) veyas(katı/strict).
Hizalama (alignment) — DMARC'ın kalbi
DMARC'ın geçmesi için SPF veya DKIM'in doğrulanması yeterli değildir; doğrulanan alan adının, alıcının gördüğü "From" adresindeki alan adıyla eşleşmesi (hizalanması) gerekir. Gmail/Yahoo, doğrudan gönderimde bu hizalamayı arar. En az bir doğrulama (SPF ya da DKIM) hem geçerli hem hizalı olmalıdır.
Önerilen kurulum sırası
- SPF: Tüm meşru gönderim kaynaklarınızı (kendi sunucularınız + ESP'niz) içeren tek bir SPF kaydı yayınlayın; 10 lookup limitine dikkat edin.
- DKIM: ESP'nizin verdiği açık anahtarı selector ile yayınlayın ve imzalamayı açın.
- DMARC (p=none): Önce yalnızca izleme modunda başlayın ve
ruaraporlarını toplayın. - Raporları analiz edin: Tüm meşru kaynaklarınızın SPF/DKIM ile geçtiğini ve hizalandığını doğrulayın.
- Sıkılaştırın: Sorun kalmadığında
p=quarantine, ardındanp=reject'e geçin. İstersenizpctile (örn. %25 → %50 → %100) kademeli ilerleyin.
Sık karşılaşılan sorunlar
- SPF PermError (too many DNS lookups): 10 sorgu aşıldı. Fazla
include'ları azaltın veya birleştirin. - Birden çok SPF kaydı: Alan adında yalnızca bir
v=spf1olmalı; hepsini tek kayıtta birleştirin. - DMARC geçiyor ama hizalanmıyor: SPF/DKIM geçse bile "From" alan adıyla eşleşmiyorsa DMARC başarısız sayılır — doğru alan adıyla imzalayın.
- Doğrudan p=reject: Meşru kaynaklar doğrulanmadan reject'e geçmek geçerli maillerinizi de reddeder — önce p=none ile izleyin.
SenderTR panelinde gönderim alan adınız için gerekli SPF/DKIM/DMARC kayıtlarını otomatik üretebilir, tek tıkla canlı olarak doğrulayabilir ve hizalama durumunu görebilirsiniz — böylece Gmail/Yahoo kurallarına eksiksiz uyum sağlarsınız.