E-posta altyapınızda SPF kaydı tanımlamak artık bir tercih değil, bir zorunluluk. Ancak SPF kaydının sonunda yer alan ~all ile -all direktifleri arasındaki fark, teslim edilebilirlik, kimlik avı koruması ve DMARC uyumu açısından kritik sonuçlar doğurur. Bu yazıda iki direktifin teknik farklarını, RFC 7208 çerçevesinde nasıl işlendiğini ve hangi koşulda hangisinin tercih edilmesi gerektiğini ele alıyoruz.
~all (softfail) yetkisiz göndericileri işaretler ama teslim eder; -all (hardfail) yetkisiz göndericileri reddeder. DMARC ile birlikte kullanıldığında her ikisi de politika kapsamına girer, ancak üretim ortamında -all çok daha güçlü bir kimlik avı koruması sağlar.Sender Policy Framework (SPF), RFC 7208 ile standartlaştırılmış, alan adı sahiplerinin hangi IP adreslerinin kendi adlarına e-posta gönderebileceğini DNS TXT kaydı aracılığıyla bildirdiği bir e-posta kimlik doğrulama protokolüdür. Alıcı posta sunucusu, gelen bir iletinin zarfındaki MAIL FROM adresi (RFC 5321 terminolojisiyle "return-path") ile DNS'teki SPF kaydını karşılaştırarak doğrulama yapar.
SPF kaydı, meşru göndericileri listeleyen çeşitli mekanizmalar (ip4, ip6, include, a, mx vb.) içerir ve bir "all" direktifiyle sonlandırılır. Bu son direktif, kayıtta listelenmeyen tüm göndericiler için ne yapılacağını tanımlar.
RFC 7208, Bölüm 8'de SPF değerlendirmesinin üretebileceği sonuçları tanımlar. Bu sonuçlar arasında en sık karıştırılan ikisi Softfail ve Fail (Hardfail) durumlarıdır:
| Direktif | SPF Sonucu | Received-SPF Başlığı | Tipik Alıcı Davranışı | DMARC Uyumu |
|---|---|---|---|---|
~all |
Softfail | softfail |
Teslim et, spam olarak işaretle veya şüpheli başlık ekle | Evet — DMARC politikası devreye girer |
-all |
Fail (Hardfail) | fail |
Reddet veya spam klasörüne gönder | Evet — DMARC politikası devreye girer |
?all |
Neutral | neutral |
SPF olmamış gibi davran | Kısmi — zayıf koruma |
+all |
Pass | pass |
Herkese izin ver (güvensiz, önerilmez) | Anlamsız — tüm göndericiler geçer |
~all) Ayrıntılı İncelemeSoftfail, RFC 7208 Bölüm 8.5'te şöyle tanımlanır: "Etki alanı sahibi, IP adresinin yetkili olmadığını düşünür, ancak bu sonucu ilke ihlali olarak ele almak için yetersiz güven duyuyor." Bu tanım, softfail'in ne zaman kullanılması gerektiğine dair en önemli ipucunu içerir: geçiş dönemi ve test aşaması.
Softfail durumunda alıcı sunucu teknik olarak iletiyi reddermek zorunda değildir. Gmail, Microsoft 365 ve diğer büyük sağlayıcılar genellikle softfail alan iletileri spam klasörüne yönlendirir ya da X-Spam-Status başlığına puan ekler. Ancak bu davranış garantili değildir; bazı sunucular softfail iletilerini doğrudan gelen kutusuna iletebilir.
Öte yandan Google Postmaster Tools verileri, ~all kullanan alan adlarından gelen kimlik avı e-postalarının önemli bir bölümünün teslimata ulaştığını göstermektedir. Bu durum, softfail'in uzun vadeli bir güvenlik politikası olarak kullanılmaması gerektiğinin somut kanıtıdır.
-all) Ayrıntılı İncelemeHardfail, RFC 7208 Bölüm 8.4'te "etki alanı sahibi, IP adresinin ilgili kimliği göndermek için yetkili olmadığını kesinlikle ifade ediyor" biçiminde tanımlanır. -all direktifi, kayıtta yer almayan her gönderici IP adresinin sahte (spoofed) olduğunu açıkça beyan eder.
Alıcı sunucu, hardfail alan bir iletiyi SMTP düzeyinde reddedebilir (550 5.7.1 hatası) veya spam klasörüne yönlendirebilir. Microsoft 365 belgelerine göre Exchange Online Protection (EOP), SPF hardfail durumunu yüksek güven skorlu spam sinyali olarak değerlendirir ve iletiyi BCL:9 puanıyla işaretleyebilir.
SPF'nin tek başına çok sınırlı bir yaptırım gücü vardır çünkü her alıcı sunucu softfail veya hardfail sonucunu farklı yorumlayabilir. Gerçek yaptırım gücü, RFC 7489 ile standartlaştırılan DMARC (Domain-based Message Authentication, Reporting, and Conformance) ile birleştiğinde ortaya çıkar.
DMARC, SPF ve DKIM sonuçlarını "identifier alignment" kuralıyla değerlendirir: MAIL FROM alanındaki alan adı ile From: başlığındaki alan adı örtüşüyorsa ve SPF pass döndürüyorsa, DMARC uyumu sağlanmış sayılır. Softfail (~all) bir SPF sonucu, DMARC açısından fail anlamına gelir; hardfail (-all) da aynı şekilde DMARC fail'e yol açar.
Bu noktada kritik soru şudur: DMARC politikanız p=reject ise, gelen ileti zaten reddedilir. Dolayısıyla DMARC kullanan alan adları için ~all ile -all arasındaki pratik fark azalır. Ancak DMARC'ı henüz devreye almamış alan adları için -all çok daha güçlü bir ilk savunma hattı oluşturur.
RFC 7208, Bölüm 4.6.4 gereğince bir SPF kaydının değerlendirilmesi sırasında yapılabilecek maksimum DNS araması sayısı 10 ile sınırlıdır. include, a, mx ve redirect mekanizmalarının her biri bu sayacı tüketir. 10 sınırı aşıldığında SPF sonucu otomatik olarak PermError döner; bu durumda hem softfail hem de hardfail direktifinin önemi kalmaz çünkü kayıt hiç değerlendirilemez.
MXToolbox, dmarcian veya EasyDMARC gibi araçlarla periyodik SPF analizi yapmak, lookup sayısını kontrol altında tutmanın en pratik yoludur.
Direktif seçimi, alan adının e-posta altyapısının olgunluk düzeyine ve risk toleransına bağlıdır:
~all ile başlayın; tüm meşru gönderici kaynaklarını (CRM, ESP, transactional mail servisi vb.) kayda ekledikten sonra -all'a geçin.-all kullanın. Tüm meşru göndericiler kayıtta tanımlıysa, yetkisiz göndericilerin teslim edilmesi için hiçbir neden yoktur.p=reject politikası aktif alan adları: Teknik olarak ~all yeterli olsa da -all ek güvenlik katmanı sağlar ve SPF'nin DMARC bağımsız çalıştığı edge-case senaryolarda koruyucudur.v=spf1 -all ile hiçbir göndericiyi yetkilendirmeyin. Bu yaklaşım, alan adınızın kimlik avı kampanyalarında kullanılmasını önemli ölçüde zorlaştırır.Bir müşterinin posta sunucusu gelen bir iletide aşağıdaki Authentication-Results başlığını üretiyorsa:
Authentication-Results: mx.example.com;
spf=softfail (domain of sender@ornek.com does not designate 203.0.113.45 as permitted sender)
smtp.mailfrom=sender@ornek.com
Bu başlık, gönderen IP adresinin (203.0.113.45) ornek.com'un SPF kaydında yer almadığını ve kaydın ~all ile bittiğini gösterir. İleti teslim edilmiş, ancak SPF kontrolünden geçememiştir. Eğer kayıt -all ile bitmiş olsaydı başlık spf=fail şeklinde görünecek ve iletinin reddedilme olasılığı çok daha yüksek olacaktı.
Sorunun kaynağını bulmak için şu adımlar uygulanabilir: önce dig TXT ornek.com komutuyla mevcut SPF kaydı kontrol edilir; ardından 203.0.113.45 adresinin hangi servis tarafından kullanıldığı araştırılır (üçüncü taraf ESP, SMTP röle vb.); son olarak ilgili IP veya include: mekanizması kayda eklenerek -all'a geçilir.
~all (softfail), yetkisiz göndericiyi işaretler ancak teslimi engellemez; alıcı sunucu kendi politikasına göre karar verir. -all (hardfail) ise yetkisiz göndericiyi açıkça reddeder ve alıcı sunuculara güçlü bir "bu IP'ye güvenme" sinyali verir. RFC 7208 her iki durumu da ayrı sonuç kategorileri olarak tanımlar.
DMARC p=reject politikası aktifse, softfail alan bir iletide DMARC da fail döner ve ileti reddedilir. Bu senaryoda softfail teknik olarak işe yarar. Ancak DMARC olmayan veya p=none aşamasındaki alan adları için hardfail çok daha güçlü bir koruma sağlar.
Eğer tüm meşru gönderici IP adresleri ve servisler SPF kaydına eklenmiş ise geçiş sorunsuz olur. Geçiş öncesinde MXToolbox veya dmarcian gibi araçlarla SPF kaydını doğrulayın ve DMARC raporlarını inceleyerek yetkisiz ama meşru göndericilerin olmadığından emin olun.
RFC 7208 Bölüm 4.6.4 uyarınca değerlendirme PermError ile sonuçlanır. Bu durumda SPF ne softfail ne de hardfail üretir; kayıt tamamen geçersiz sayılır. DMARC'ın SPF uyumunu doğrulayabilmesi için lookup sayısını 10 altında tutmak zorunludur.
Hayır, tam tersine. Hardfail yalnızca SPF kaydınızda yetkisiz olan IP'lerden gelen iletileri etkiler. Kendi meşru gönderici IP adreslerinizden yollanan iletiler spf=pass alır ve hardfail direktifinden etkilenmez.
E-posta göndermeyen (parked veya sadece web barındıran) alan adları için v=spf1 -all kaydı önerilir. Bu, söz konusu alan adından herhangi bir IP'nin e-posta gönderemeyeceğini açıkça beyan eder ve spoofing saldırılarını zorlaştırır.
Hayır. RFC 7208 Bölüm 3.2 uyarınca bir alan adı için yalnızca bir SPF TXT kaydı olabilir. Birden fazla v=spf1 kaydı varsa sonuç PermError olur ve tüm SPF doğrulaması başarısız sayılır. Birden fazla servis için include: mekanizması tek bir kayıtta birleştirilmelidir.
Alıcı sunucu, Authentication-Results veya Received-SPF başlığına sonucu yazar. spf=softfail, gönderici alan adının ~all direktifi kullandığını; spf=fail ise -all direktifi kullandığını gösterir. Her ikisi de SPF doğrulamasının geçemediği anlamına gelir; fark, alan adı sahibinin bu duruma verdiği yanıtın şiddetinde yatar.
DMARC Aggregate (RUA) ve Forensic (RUF) raporları, hangi IP adreslerinin alan adınız adına e-posta gönderdiğini gösterir. ~all ile geçiş döneminde bu raporları analiz ederek tüm meşru göndericileri tespit edebilir, SPF kaydınıza ekleyebilir ve ardından güvenle -all'a geçebilirsiniz. dmarcian, Valimail ve EasyDMARC bu raporları görselleştiren popüler araçlardandır.
Hayır. SPF yalnızca zarfın MAIL FROM alanını (Return-Path) doğrular; kullanıcıların gördüğü From: başlığını doğrulamaz. Bu boşluğu DKIM (RFC 6376) ve DMARC (RFC 7489) kapatır. Bütünsel e-posta güvenliği için SPF, DKIM ve DMARC üçlüsünün birlikte yapılandırılması zorunludur.
Reklamsız, KVKK uyumlu; kurulum ve geçiş ücretsiz, mailleri biz taşırız.
Kurulum + migrasyon ücretsiz. KVKK uyumlu, Türkiye'de barındırma. 7/24 Türkçe destek.
Kampanya 30 Haziran'a kadar geçerlidir.