[email protected]Sistem durumu
E-posta Kimlik Doğrulama

SPF Kaydı Nedir? Söz Dizimi, Örnekler ve Sık Hatalar

SPF kaydı nedir? SPF (Sender Policy Framework) kaydı, bir alan adı adına e-posta göndermeye yetkili sunucuları DNS'te ilan eden bir TXT kaydıdır. Alıcı sunucu, iletiyi getiren IP adresini bu listeyle karşılaştırır ve sonuca göre iletiyi kabul eder, şüpheli olarak işaretler ya da reddeder.

Standart RFC 7208 ile tanımlanmıştır. SPF, alan adınızı taklit eden sahte e-postalara karşı ilk savunma katmanıdır ve DKIM ile DMARC için de temel oluşturur. Hatalı yazılmış bir SPF kaydı ise meşru iletilerinizin reddedilmesine ya da spam klasörüne düşmesine yol açabilir.

SPF nasıl çalışır?

SPF, iletide görünen "Kimden" (From) adresini değil, SMTP oturumundaki zarf göndericisini (MAIL FROM, diğer adıyla Return-Path) ve sunucunun kendini tanıttığı HELO adını denetler. Süreç kabaca şöyle işler:

  1. Gönderen sunucu alıcıya bağlanır ve MAIL FROM komutuyla zarf adresini bildirir.
  2. Alıcı sunucu bu adresteki alan adının TXT kayıtlarını sorgular ve v=spf1 ile başlayan kaydı bulur.
  3. Kayıttaki mekanizmalar soldan sağa değerlendirilir; bağlantıyı kuran IP adresiyle eşleşen ilk mekanizma sonucu belirler.
  4. Ortaya çıkan sonuç (pass, fail, softfail, neutral, none, permerror veya temperror) iletinin puanlanmasında ya da reddedilmesinde kullanılır.

Görünen From adresinin denetlenmemesi, SPF'nin en çok gözden kaçan sınırıdır. Bu boşluğu, SPF sonucunu From alan adıyla ilişkilendiren DMARC kapatır.

SPF kaydının söz dizimi

Her SPF kaydı v=spf1 sürüm etiketiyle başlar ve boşlukla ayrılmış mekanizmalardan oluşur. En sık kullanılan öğeler şunlardır:

ÖğeÖrnekAnlamı
ip4ip4:203.0.113.10Belirtilen IPv4 adresine veya bloğuna izin verir
ip6ip6:2001:db8::/48Belirtilen IPv6 adresine veya bloğuna izin verir
aa:mail.example.com.trAlan adının ya da belirtilen adın A veya AAAA kaydındaki IP adreslerine izin verir
mxmxAlan adının MX sunucularının IP adreslerine izin verir
includeinclude:_spf.google.comBaşka bir alan adının SPF kaydını değerlendirmeye katar
redirectredirect=_spf.example.com.trDeğerlendirmeyi tamamen başka bir kayda devreder
all-allÖnceki mekanizmalara uymayan tüm IP adreslerini kapsar

Mekanizmaların önüne bir niteleyici (qualifier) gelebilir: + geçer (pass, varsayılan), - başarısız (fail), ~ yumuşak başarısız (softfail) ve ? nötr (neutral) anlamına gelir. Pratikte niteleyici neredeyse yalnızca all ile kullanılır. ~all ile -all arasındaki farkı SPF softfail ve hardfail farkı yazımızda ayrıntılı ele aldık.

İki kuralı daha bilmekte fayda var: ptr mekanizması yavaş ve güvenilmez olduğu için RFC 7208 tarafından önerilmez. Kayıtta bir all mekanizması varsa da redirect değiştiricisi yok sayılır.

SPF kaydı nasıl oluşturulur?

SPF kaydı, DNS bölgenizde alan adının kendisine (zone dosyasında @ ile gösterilen ada) eklenen tek bir TXT kaydıdır. Aşağıdaki örneklerde example.com.tr yerine kendi alan adınızı düşünün.

Yalnızca kendi posta sunucunuz

example.com.tr.  3600  IN  TXT  "v=spf1 ip4:203.0.113.10 -all"

Microsoft 365

example.com.tr.  3600  IN  TXT  "v=spf1 include:spf.protection.outlook.com -all"

Google Workspace

example.com.tr.  3600  IN  TXT  "v=spf1 include:_spf.google.com ~all"

Microsoft kendi belgelerinde -all, Google ise ~all kullanılmasını önerir; ikisi de geçerli bir başlangıç noktasıdır.

Birden fazla kaynak bir arada

Kendi sunucunuz, Microsoft 365 ve bir bülten hizmeti aynı alan adıyla gönderim yapıyorsa hepsi tek kayıtta birleştirilir:

example.com.tr.  3600  IN  TXT  "v=spf1 ip4:203.0.113.10 include:spf.protection.outlook.com include:spf.bulten-ornek.net -all"

Hiç e-posta göndermeyen alan adları

Yalnızca web sitesi veya yönlendirme için kullanılan alan adlarında en güvenli kayıt, hiçbir sunucuya izin vermeyen kayıttır:

v=spf1 -all

10 DNS sorgusu sınırı neden önemli?

RFC 7208, tek bir SPF değerlendirmesinde DNS sorgusu gerektiren terimlerin toplamını 10 ile sınırlar. Bu sınıra include, a, mx, ptr ve exists mekanizmaları ile redirect değiştiricisi dahildir; ip4, ip6 ve all sayılmaz. Sınır aşıldığında sonuç permerror olur ve alıcı kaydınızı geçersiz kabul eder.

Asıl tuzak iç içe sorgulardır. Eklediğiniz her include, kendi içinde başka include terimleri barındırabilir ve bunların hepsi aynı sınırdan düşer. Ayrıca yanıt dönmeyen (boş ya da var olmayan) sorgular için önerilen üst sınır ikidir. Sınırın altında kalmak için:

  • Artık kullanmadığınız hizmetlerin include terimlerini kaldırın.
  • Sabit IP adresli kendi sunucunuz için a veya mx yerine ip4 ve ip6 kullanın.
  • MX kayıtlarınız gelen postayı süzen bir ağ geçidini gösteriyor ve giden posta oradan çıkmıyorsa mx mekanizmasını kayda eklemeyin.
  • Include terimlerini IP adreslerine çeviren düzleştirme (flattening) yöntemine dikkatli yaklaşın; hizmet sağlayıcı adreslerini değiştirdiğinde kaydınız sessizce eskir.

Bir alan adında neden tek SPF kaydı olmalı?

Aynı ad üzerinde v=spf1 ile başlayan birden fazla TXT kaydı varsa, RFC 7208'e göre sonuç doğrudan permerror olur. Bu durum genellikle yeni bir hizmet eklenirken mevcut kaydı düzenlemek yerine ikinci bir kayıt açıldığında ortaya çıkar. Çözüm, tüm mekanizmaları tek kayıtta birleştirmektir.

TXT kaydındaki tek bir metin parçası 255 karakteri aşamaz. Uzun kayıtlar art arda yazılmış birden çok tırnaklı parçaya bölünür ve alıcılar bu parçaları araya boşluk koymadan birleştirir. Bu nedenle bölme noktasındaki boşluğu parçalardan birinin içinde bırakmayı unutmayın.

Sık yapılan SPF hataları

  • Herkese izin vermek: +all internetteki her sunucuya sizin adınıza gönderim izni verir ve korumayı tamamen ortadan kaldırır.
  • Üçüncü taraf göndericileri unutmak: CRM, fatura, destek ve bülten sistemleri alan adınızla gönderim yapıyorsa kayda eklenmelidir.
  • Yazım hataları: ip4: ifadesinden sonra boşluk bırakmak, include adını yanlış yazmak ya da SPF kaydı olmayan bir alan adını include etmek permerror üretir.
  • Alt alan adlarını atlamak: SPF kaydı alt alan adlarına miras kalmaz. Zarf adresinde bulten.example.com.tr kullanılıyorsa o ad için ayrı kayıt gerekir.
  • Eski kayıt türü: Ayrı SPF kayıt türü RFC 7208 ile kullanımdan kaldırılmıştır; kayıt TXT olarak yayımlanmalıdır.

SPF kaydı nasıl test edilir?

Kaydınızı komut satırından birkaç saniyede sorgulayabilirsiniz:

dig TXT example.com.tr +short
nslookup -type=txt example.com.tr
Resolve-DnsName -Type TXT example.com.tr

Ardından kendinize, örneğin bir Gmail hesabına, test iletisi gönderip başlıklardaki Received-SPF veya Authentication-Results satırında spf=pass sonucunu arayın. Daha hızlı bir yol isterseniz ücretsiz alan adı güvenlik kontrolü sayfası SPF kaydınızı DKIM, DMARC ve MX kayıtlarıyla birlikte denetler. MXZilla panelindeki alan adı DNS kontrolleri de bu kayıtları denetler ve sonucu alan adının güvenlik puanına yansıtır.

İpucu: Kayda bir hizmet eklemeden önce o hizmetin belgelerinde önerilen include değerini kontrol edin. Tahminle yazılmış ve SPF kaydı bulunmayan bir include adı, kaydın tamamını permerror durumuna düşürebilir.

SPF tek başına yeterli mi?

Hayır. SPF yalnızca zarf göndericisini doğrular. İleti bir yönlendirme (forwarding) sunucusundan geçtiğinde gönderen IP değiştiği için SPF çoğu zaman başarısız olur. Üstelik saldırgan, zarf adresinde kendi alan adını kullanıp görünen From alanına sizin adresinizi yazabilir. Bu yüzden SPF'yi, iletiye kriptografik imza ekleyen DKIM ve iki sonucu From alanıyla eşleştiren DMARC ile birlikte kullanmalısınız.

Giden postanızı bir smarthost üzerinden iletiyorsanız, o hizmetin çıkış IP adreslerini veya sağladığı include değerini SPF kaydınıza eklemeyi unutmayın. Aksi halde iletileriniz yetkisiz bir sunucudan gelmiş gibi görünür ve spama düşebilir.

SPF ve diğer kimlik doğrulama kayıtlarınızın durumunu hızlıca görmek için güvenlik kontrolü sayfasını kullanabilir, gelen ve giden posta korumasına yönelik paketlerimizi inceleyebilirsiniz.

Sık sorulan sorular

SPF kaydı hangi DNS kayıt türüyle yayımlanır?

SPF kaydı TXT kaydı olarak yayımlanır. Geçmişte tanımlanan ayrı SPF kayıt türü RFC 7208 ile kullanımdan kaldırıldığı için alıcılar onu dikkate almaz. Kayıt, alan adının kendisine eklenir.

Bir alan adında birden fazla SPF kaydı olabilir mi?

Olamaz. v=spf1 ile başlayan birden fazla kayıt varsa alıcı sunucular permerror sonucu üretir ve SPF fiilen çalışmaz. Yeni bir gönderim hizmeti eklediğinizde mevcut kaydı düzenleyip ilgili terimi aynı kayda eklemelisiniz.

SPF kaydı softfail mi hardfail mi olmalı?

-all (hardfail) yetkisiz sunucular için kesin bir ret sinyali verir, ~all (softfail) ise iletinin muhtemelen yetkisiz olduğunu söyler ve genellikle reddettirmez. Tüm gönderim kaynaklarınızı tespit ettiyseniz -all, geçiş döneminde ise ~all makul bir tercihtir.

SPF kaydı alt alan adlarını kapsar mı?

Kapsamaz. Her alan adı ve alt alan adı kendi SPF kaydına sahip olmalıdır. Zarf göndericisinde bir alt alan adı kullanılıyorsa o ad için ayrı bir TXT kaydı yayımlanmalıdır.

SPF kaydındaki değişiklikler ne zaman etkili olur?

Değişiklik, eski kaydın TTL süresi dolup alıcıların önbelleğinden düştüğünde etkili olur. TTL 3600 saniye ise bu süre genellikle bir saat kadardır. Büyük bir değişiklik öncesinde TTL değerini geçici olarak düşürmek, olası bir hatayı hızla geri almanızı sağlar.

Alan adınızın e-posta güvenliğini ücretsiz kontrol edin

SPF, DKIM, DMARC ve MX kayıtlarınızı saniyeler içinde denetleyin; eksikleri ve düzeltme önerilerini görün.