Email

SPF, DKIM ve DMARC Nedir? Mail Kimlik Doğrulaması Rehberi

Mailleriniz spam'e mi düşüyor? Gmail "550 5.7.26 unauthenticated" mı diyor? Üç DNS kaydının ne yaptığını, nasıl yazıldığını ve nasıl test edileceğini tek tek anlattık.

Yazar: Skyversal Ekibi

Mail gönderiyorsunuz, kodunuz doğru, SMTP bağlantısı kuruluyor — ama mailler kayboluyor. Ya da Gmail'den şu cevabı alıyorsunuz:

550-5.7.26 Your email has been blocked because the sender is unauthenticated.

Bu üç kayıt (SPF, DKIM, DMARC) tam olarak bu sorunu çözmek için var. Ne yaptıklarını anlamadan kopyala-yapıştır yapmak, ilk sorunda tıkanmak demek.

Problem: mail protokolü 1982'de tasarlandı

SMTP'de "gönderen" alanı bir iddiadır, doğrulanmış bir kimlik değil. Herhangi bir sunucu, herhangi bir adresten mail gönderebilir:

MAIL FROM:<baskan@beyazsaray.gov>
RCPT TO:<kurban@example.com>
DATA
...
.

Hiçbir şey sizi durdurmaz. Bu yüzden 1990'lardan beri spam var. SPF, DKIM ve DMARC üç ayrı katmanda bu açığı kapatır.

SPF — "bu IP bu domain adına gönderebilir mi?"

SPF bir TXT kaydıdır ve gönderen IP'yi kontrol eder:

example.com.  300  IN  TXT  "v=spf1 ip4:203.0.113.10 include:_spf.google.com ~all"

Okunuşu: "example.com adına 203.0.113.10 ve Google'ın SPF'ine dahil IP'ler mail gönderebilir; geri kalanı zayıf ihtimalle reddet (~all)."

MekanizmaAnlamı
ip4:203.0.113.10Bu IP gönderebilir
include:_spf.google.comO domainin SPF'ini de dahil et
a / mxA / MX kaydındaki hostlar gönderebilir
-allGeri kalanı reddet (sert)
~allGeri kalanı işaretle ama kabul et (yumuşak)
?allNötr — politika yok

Sık yapılan hata: domain'de iki SPF kaydı bulunması. İki v=spf1 TXT kaydı varsa ikisi de geçersiz sayılır ve SPF hiç uygulanmaz. Tek kayıt olmalı — yeni bir sağlayıcı eklerken mevcut kaydı düzenleyin, yenisini eklemeyin.

DKIM — "mail yolda değişti mi?"

DKIM gönderen sunucunun mesajı kriptografik olarak imzalamasını sağlar. İmza, mail başlığına eklenir:

DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=mail;
    h=from:to:subject:date:message-id;
    bh=...; b=...

Alıcı, mail._domainkey.example.com TXT kaydındaki public key ile imzayı doğrular:

mail._domainkey.example.com.  IN  TXT  "v=DKIM1; k=rsa; p=MIIBIjANBg..."

DKIM'in SPF'ten kritik farkı: IP'ye değil mesaja bağlıdır. Mail yönlendirilse bile (forward) imza geçerli kalır — SPF bu durumda kırılır. Bu yüzden Gmail "SPF veya DKIM" diyor; DKIM daha dayanıklı.

DKIM'in sessiz tuzakları

  • Yanlış anahtar formatı — OpenSSL 3 varsayılanı PKCS#8 üretir (BEGIN PRIVATE KEY); bazı imzalama araçları bunu okuyamaz ve imza sessizce atlanır. PKCS#1 (BEGIN RSA PRIVATE KEY) gerekir.
  • Anahtar yeniden üretimi — container yeniden kurulunca yeni anahtar üretilirse DNS'teki public key eski kalır → tüm mailler DKIM'den düşer.
  • Selector uyuşmazlığı — imzada s=mail, DNS'te default._domainkey varsa doğrulama başarısız olur.

DMARC — "SPF/DKIM başarısız olursa ne olsun?"

DMARC bir politika katmanıdır. SPF ve DKIM'in sonucuna göre ne yapılacağını söyler ve gönderen domain ile From: başlığının uyumlu olmasını zorunlu kılar (alignment):

_dmarc.example.com.  IN  TXT  "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com; pct=100"
PolitikaAnlamı
p=noneSadece izle — hiçbir şey yapma (başlangıç için doğru)
p=quarantineBaşarısız mailleri spam'e at
p=rejectBaşarısız mailleri reddet (en sert)

rua adresi, DMARC raporlarının gideceği yerdir — haftalık XML raporları kimin sizin domaininizi taklit etmeye çalıştığını gösterir.

Doğru sıra: p=none ile başlayın, raporları 2-4 hafta izleyin, meşru göndericilerinizin hepsi geçtiğinden emin olun, sonra quarantine ve reject'e geçin. Doğrudan reject ile başlamak, farkında olmadığınız bir göndericinizin (fatura sistemi, CRM, e-posta imzası) maillerini keser.

PTR — dördüncü ama görünmez katman

SPF/DKIM/DMARC DNS'te tanımlanır; PTR ise IP sağlayıcınızda tanımlanır:

$ dig -x 203.0.113.10 +short
mail.example.com.

Ve "ileri-geri" (FCrDNS) eşleşmesi beklenir: mail.example.com tekrar 203.0.113.10'a çözülmeli. PTR genellikle hosting sağlayıcısının panelinden ayarlanır — kendi başınıza yapamazsınız.

Test: gerçekten geçiyor mu?

Üç komutla doğrulayın:

# SPF
dig +short TXT example.com | grep spf1

# DKIM (selector'ı kendi ayarınızla değiştirin)
dig +short TXT mail._domainkey.example.com

# DMARC
dig +short TXT _dmarc.example.com

# PTR
dig -x 203.0.113.10 +short

Daha kesin sonuç için bir mail gönderip başlıklara bakın. Gmail'de "Orijinali göster" → Authentication-Results satırı:

Authentication-Results: mx.google.com;
       spf=pass smtp.mailfrom=example.com;
       dkim=pass header.d=example.com;
       dmarc=pass (p=QUARANTINE) header.from=example.com

Üçü de pass ise iş tamam. Biri fail ise hangisi olduğuna göre yukarıdaki bölüme dönün.

Hepsini kendiniz yapılandırmak zorunda değilsiniz

Bu üç kaydı doğru yazmak, DKIM anahtarını döndürmek ve PTR'yi sağlayıcıyla konuşmak tek seferlik bir iş değil — sürekli bakım ister.

Skyversal PaaS mail servisinde bunlar hazır: her plana günde 200 mail ücretsiz, SPF/DKIM/PTR tarafımızda yönetilir, kendi domaininizi bağlamak ücretsiz. Eklemeniz gereken 2 TXT kaydını size gösteririz; MX kayıtlarınıza dokunmayız, gelen kutunuz bozulmaz.

Daha fazlası: son güncellemeler ve teknik dokümantasyon.

Son güncelleme: 24 Ekim 2026