SPF Kaydı Sorgulama
SPF kaydı sorgulama ve SPF sorgulama için: bir alan adının SPF kaydını alıcı e-posta sunucuları gibi kontrol edin. Her include kendi DNS sorgu maliyetiyle, 10 sınırına karşı toplam sayıyla, void sorgularla ve herhangi bir gönderen IP için sonucu belirleyen terimle birlikte gösterilir.
Tam olarak yazdığınız ad sorgulanır: SPF'de miras yoktur, bu yüzden mail.example.com'un kendi kaydı olmalıdır.
SPF kaydı nedir?
SPF kaydı, bir alan adı adına e-posta göndermesine izin verilen sunucuları listeleyen bir TXT kaydıdır. v=spf1 ile başlar, ardından göndericileri terim terim sayar ve alıcıların diğer herkese ne yapması gerektiğini söyleyen bir bitişle sona erer (RFC 7208, Nisan 2014, hâlâ geçerli standart).
Alıcılar onu, bağlanan sunucunun adresine ve zarf göndericisindeki alan adına, yani MAIL FROM veya Return-Path'e göre kontrol eder; okuyucunun gördüğü From: satırına göre değil. SPF'yi From: ile ilişkilendirmek DMARC'ın işidir.
Bir kayıt yalnızca durduğu adı kapsar: SPF'de miras yoktur, bu yüzden mail.example.com'un kendi kaydı olmalıdır. E-posta göndermeyen bir alan adı v=spf1 -all yayımlamalıdır.
Include _spf.google.com adını gösteriyor · 8 aralık, başka sorgu yok
ip4:74.125.0.0/16ip4:209.85.128.0/17ip6:2001:4860:4864::/56ip6:2404:6800:4864::/56ip6:2607:f8b0:4864::/56ip6:2800:3f0:4864::/56ip6:2a00:1450:4864::/56ip6:2c0f:fb50:4864::/56~all
v=spf1, en başta: başka şekilde başlayan bir kayıt SPF kaydı değildir.redirect= kontrolü başka bir kayda devreder; exp= bir fail sonucunu açıklar.~all'a ulaşır. 24 Ekim 2026 tarihinde Google Public DNS üzerinden kaydedildi.SPF kaydı nasıl sorgulanır
Yukarıya bir alan adı yazın; sorgu aracı TXT kayıtlarını okur, v=spf1 ile başlayanı seçer, ardından bir alıcı sunucunun yapacağı gibi her include ve redirect'i izler ve her DNS sorgusunu sayar.
Elle yapmak için TXT kayıtlarını isteyin: dig TXT example.com +short veya nslookup -type=TXT example.com. Yanıtta o addaki tüm TXT kayıtları bulunur; SPF kaydı v=spf1 ile başlayandır ve uzun bir kayıt, SPF'nin boşluksuz birleştirdiği birkaç tırnaklı dize olarak gelir. Her include bir sorgu daha demektir ve onları kendiniz saymanız gerekir.
Belirli bir sunucunun gönderip gönderemeyeceğini görmek için IP test et sekmesine geçin: aynı kontrolü o adres için çalıştırır ve eşleşen terimi gösterir.
dig TXT example.com +shortÇözümleyicinizdeki haliyle o addaki tüm TXT kayıtları; SPF kaydı v=spf1 ile başlayandır. Her include için yeniden çalıştırın.
$ dig TXT github.com @dns1.p08.nsone.net +norec +noall +answer github.com. 300 IN TXT "v=spf1 ip4:192.30.252.0/22 include:spf.protection.outlook.com include:_netblocks.google.com include:_netblocks2.google.com include:mail.zendesk.com include:_spf.salesforce.com include:servers.mcsv.net include:mktomail.com include:sendgrid.net ip4:62.253.2" "27.114 ip4:166.78.69.169 ip4:166.78.69.170 ip4:166.78.71.131 ~all" # ardından her include, tek tek sorgu olarak: $ dig +short TXT _spf.salesforce.com "v=spf1 exists:%{i}._spf.mta.salesforce.com -all"
- Bir kayıt v=spf1 ile başlıyor. Yanındaki 23 başka TXT kaydı (doğrulama belirteçleri ve benzerleri), yanıtın boyutu dışında SPF için önemli değil.
- 2 dize, boşluksuz birleştirilir. 255 baytlık bölünme
ip4:62.253.227.114içine denk geliyor: alıcılar dizeleri yeniden birleştirir, bu yüzden sorun yok. - TTL 5 dakika. Bir değişiklikten sonra çözümleyicilerin bu kopyayı ne kadar tutabileceği. Bölgenin kendi sunucusu 5 dakika diyor; çözümleyici kendi kopyasından kalan süreyi gösterir.
- Her include ayrı bir sorgudur. github.com alan adının kaydını izlemek, iç içe olanlar dahil 10 sorgu gerektiriyor. dig bir seferde bir ad gösterir: 10 sınırına kadar sayımı kendiniz toplamalısınız.
$ nslookup -type=TXT github.com 8.8.8.8
# o addaki tüm TXT kayıtları, Google Public DNS'ten PS> Resolve-DnsName -Name github.com -Type TXT -Server 8.8.8.8
Sonucu okumak: include ağacı
Karar, kaydın listelemediği bir gönderici için alıcıların ne aldığını söyler: bitişiyle birlikte geçerli (~all için softfail, -all için fail), nedeniyle birlikte bir permerror ya da DNS yanıt vermediyse "kontrol edilemedi".
Lacivert sütun sorgu bütçesidir: her DNS sorgusu için bir hücre, onu harcayan include'a göre renklendirilmiş, 10'a karşı toplam sayı ve void sorgular halka olarak. 10.'dan sonra hücreler kırmızıya döner ve alıcıların durduğu dal işaretlenir.
Ağaç görünümü bulguları, başarısızlıklar önce, her biri RFC bölümü ve çözümüyle listeler; ardından her sorguyu bir alıcının sorduğu sırayla gösterir.

KararKaydın listelemediği bir gönderici için alıcıların ne aldığı ve buna karar veren bitiş.Terim terim kayıtHer terim türüne göre renklendirilmiş; bir include sahibinin işaretini ve kendi sorgu maliyetini taşır.BulgularTek kayıt, geçerli sözdizimi, sorgular, void'ler, bitiş, ptr, DMARC: başarısızlıklar önce, her biri kendi çözümüyle.Sorgu bütçesiHer DNS sorgusu bir hücre olarak, onu harcayan include'a göre renklendirilmiş, 10 sınırına karşı.Her include'un maliyetiHer include için bir dal: kendi hücreleri, içine yerleştirdikleri ve toplam sayı.Void sorgularBoş dönen sorgular için halkalar; üçüncüsü kontrolü bitirir.10 sorgu sınırı ve "çok fazla DNS sorgusu" (permerror)
Alıcılar DNS sorgusu gerektiren her terimi (include, a, mx, ptr, exists ve redirect) iç içe tüm include'lar boyunca sayar ve 10'da durur. 11. sorgu permerror verir (RFC 7208 §4.6.4). ip4, ip6, all ve exp hiçbir şeye mal olmaz.
Bu bir fail değil, permerror'dır: alıcının onunla ne yapacağı kendi seçimidir, ancak DMARC altında permerror hiçbir zaman pass sayılmaz. Kontrol ilk eşleşmede durduğu için, sınırı aşan bir kayıt erken listelenen göndericiler için yine pass verir ve yalnızca geç listelenenler için bozulur.
Maliyet include'ların içinde saklanır: include:_netblocks.mimecast.com tek başına 9, Yandex 360 8, Freshdesk 7, Mailgun 5 harcar. Google ve Microsoft 365 include'ları birer sorguya mal olur. 10'un altına inmek için artık kullanmadığınız göndericileri çıkarın ve toplu gönderim yapan birini kendi kaydı olan bir alt alan adına taşıyın.
v=spf1 include:spf.protection.outlook.com include:_netblocks.mimecast.com include:mailgun.org include:sendgrid.net -all
Diğer herkes de kaydın -all fail sonucunu değil, permerror alır: alıcılar oraya ulaşmadan durur.
- _netblocks.mimecast.comMimecast9 sorgu
- _spf.yandex.netYandex 3608 sorgu
- email.freshdesk.comFreshdesk7 sorgu
- mailgun.orgMailgun5 sorgu
- icloud.comiCloud+5 sorgu
- spf.titan.emailTitan Email4 sorgu
- secureserver.netGoDaddy3 sorgu
- _spf.google.comGoogle Workspace1 sorgu
- spf.protection.outlook.comMicrosoft 3651 sorgu
Void sorgu nedir?
Void sorgu, hiç kayıt döndürmeyen bir sorgudur: ad mevcut değildir (NXDOMAIN) ya da mevcuttur ancak istenen kayıt yoktur. Alıcıların ikisine izin vermesi gerekir; üçüncüsü permerror'dır (RFC 7208 §4.6.4).
Artık var olmayan bir host'a işaret eden a:old.example.com gibi bir terim tek başına hata değildir: yalnızca eşleşmez ve bir void sayılır. Salesforce'un listelemediği her gönderici için exists:%{i}._spf.mta.salesforce.com da öyledir; include sırasının önemli olmasının nedeni budur.
Bir sunucu hatası ya da zaman aşımı void değildir: temperror'dır ve alıcılar genellikle sonra yeniden dener.
salesforce.com alan adının kendi kaydı, 192.0.2.1 için, 24 Ekim 2026 tarihinde kaydedildi
v=spf1 include:_spf.google.com include:_spf.salesforce.com exists:%{i}._spf.corp.salesforce.com ~all
exists:%{i}._spf.mta.salesforce.com192.0.2.1._spf.mta.salesforce.com → NXDOMAIN · 3. sorgu · _spf.salesforce.com içindeexists:%{i}._spf.corp.salesforce.com192.0.2.1._spf.corp.salesforce.com → NXDOMAIN · 4. sorgu · salesforce.com içinde
Sonuç: softfail, izin verilen iki void de harcanmış
a:mail.example.com, hâlâ var olan ama artık adresi bulunmayan bir ad için: yanıt yok, NOERROR. Eşleşme yok, bir void, kontrol sürer.NODATAvoid sorguexists:%{i}._spf.mta.salesforce.com her gönderen IP'den bir ad oluşturur; Salesforce hizmetinin listelemediği bir adres için yanıt NXDOMAIN'dir: her seferinde bir void.NXDOMAINvoid sorgumx:shop.example.com, artık var olmayan bir ad, zaten 2 void harcandıktan sonra: alıcılar burada durur.NXDOMAINpermerrorinclude:_spf.vendor.example için SERVFAIL veya zaman aşımı: DNS başarısız oldu, bu yüzden hiçbir şey void sayılmaz.SERVFAILtemperror, void değilblastmail hizmetinin include:spf.bmv.jp include'u, böyle iki exists terimiyle başlar: listelemediği bir adres için izin verilen iki void'i tek başına harcar.
SPF düzleştirme: ne zaman işe yarar, ne zaman bozar
Düzleştirme, bir include'u listelediği adreslerle değiştirir; böylece kayıt daha az sorguya mal olur. Nadiren değişen aralıklar için işe yarar; bir sağlayıcı hiç kopyalamadığınız bir sunucu eklediğinde ters teper: o sunucudan gelen e-posta SPF'yi geçemez.
Microsoft include:spf.protection.outlook.com düzleştirilmemesini söyler; ayrıca Google ve Microsoft include'ları zaten birer sorguya mal olur. Toplu gönderim yapan birini news.example.com gibi bir alt alan adına taşımak ona kendi kaydını ve kendi 10 sorgusunu verir.
Önce
include:mailgun.org
- Sorgular
- 5
- Alınan kayıtlar
- 5
- Kaydınızdaki bayt
- 19
- Mailgun bir aralığı değiştirir
- hemen alınır
Sonra
ip4:159.135.224.0/20 ip4:69.72.32.0/20 ip4:204.220.90.0/23 ip4:204.220.92.0/22 +18 tane daha
- Sorgular
- 0
- Kaydınızdaki bayt
- 450
- Gereken TXT dizeleri
- 2
- Mailgun bir aralığı değiştirir
- kopyanız eskimiş
Eski kopya riski. Bugün 22 aralık kopyalıyorsunuz; Mailgun bir tane eklediğinde, biri fark edip kaydı güncelleyene kadar ondan gelen e-posta SPF'yi geçemez.
- kopyalandı
- Mailgun bir aralık ekler
- ondan gelen e-posta SPF'yi geçemez
~all ve -all (ve DMARC)
Son terim, listede olmayan her gönderene ne olacağını söyler. -all fail'dir, en güçlü ifadedir; ~all softfail'dir, "büyük olasılıkla değil"; ?all neutral'dır ve alıcılar onu hiç SPF yokmuş gibi ele alır; +all herkesin geçmesine izin verir ve asla yayımlanmamalıdır.
~all ile -all arasında yanlış bir cevap yoktur. Google, Google Workspace için ~all; Microsoft ise Microsoft 365 için -all önerir. DMARC uygulama modundayken ~all, DMARC'ın DKIM'e göre karar vermesini sağlar: bazı alıcılar, DMARC geçen bir DKIM imzasını görmeden önce -all nedeniyle reddeder; bu yüzden yönlendirilen e-postalar geri dönebilir (RFC 9989 §7.1).
~all-all?all?all ile biter: orada zararsızdır, çünkü yalnızca bir include içindeki pass eşleşir.+allDMARC p=reject iken -all
- SPF: fail
- SMTP'de reddedildi
- DKIM hiç kontrol edilmedi
Bazı alıcılar önce SPF'ye göre davranır; bu yüzden geçerli bir DKIM imzası olan yönlendirilmiş bir ileti DMARC çalışmadan reddedilebilir ve kayıp DMARC raporlarında hiç görünmez.
DMARC p=reject iken ~all
- SPF: softfail
- DMARC DKIM'i kontrol eder
- hizalı DKIM: pass
DMARC karar verir. Ancak DKIM imzası yoksa Microsoft, ~all başarısızlıkları için DMARC'ın fiilen yok sayıldığını söyler ve bu nedenle -all önerir.
~all de -all de geçerli seçimlerdir; ?all hiçbir şey söylemez ve +all herkesin geçmesine izin verir.Sık görülen SPF hataları ve çözümleri
Bozuk kayıtların çoğu üç hatadan gelir: ikisini birleştirmek yerine ilkinin yanına eklenen ikinci bir SPF kaydı, artık kullanılmayan bir sağlayıcının include'u ve belgelerden kopyalanıp içinde yazım hatası olan bir değer.
Sağlayıcı belgelerinin bir kısmı bunları kendisi yazıyor: Mimecast –all değerini en dash ile, Postmark include: spf.mtasv.net değerini boşlukla yazıyor, Twilio SendGrid var olmayan bir aaaa mekanizması listeliyor. Herhangi bir sözdizimi hatası tüm kaydı permerror yapar. Alan adının sonundaki nokta ise geçerlidir.
İki SPF kaydıpermerror
v=spf1 include:_spf.google.com ~allv=spf1 include:sendgrid.net ~allÇözüm: tek kayıtta birleştirin: tek v=spf1, her include bir kez, tek bitiş.
Sorgu sınırı (10) aşılıyorpermerror
v=spf1 include:_netblocks.mimecast.com include:mailgun.org -all14 sorgu
Çözüm: artık kullanmadığınız göndericileri çıkarın ya da toplu göndericiye kendi alt alan adını verin.
Üçüncü bir void sorgupermerror
v=spf1 a:old.example.com mx:gone.example.net exists:%{i}.spf.example.org -all3 void
Çözüm: artık var olmayan adlara giden terimleri silin ve exists include'larını en sona koyun.
Arkasında SPF kaydı olmayan bir includepermerror
v=spf1 include:spf.retired-vendor.example -allÇözüm: adı düzeltin ya da bıraktığınız sağlayıcıyı çıkarın.
–all içinde bir en dashpermerror
v=spf1 include:_netblocks.mimecast.com –allMimecast hizmetinin kendi belgelerinde bu şekilde yazılmış
Çözüm: düz bir tire: -all.
include: sonrasında bir boşlukpermerror
v=spf1 a mx include: spf.mtasv.net ~allPostmark hizmetinin kendi belgelerinde bu şekilde yazılmış
Çözüm: include:spf.mtasv.net
Bir aaaa mekanizmasıpermerror
v=spf1 aaaa:example.com ~allTwilio SendGrid hizmetinin kendi belgelerinde bu şekilde yazılmış
Çözüm: a:example.com; a zaten IPv6 gönderenlerin AAAA kayıtlarıyla da eşleşir.
Sondaki noktageçerli
v=spf1 include:spf.protection.outlook.com. -allGeçerli: RFC 7208 §7.3 bunu yayımlamamayı söyler, ancak alıcılar kabul etmek zorundadır.
Zendesk yardım sayfası ayrıca “redirect: sözdizimi destekleniyor” diyor: değiştirici redirect= biçiminde yazılır (RFC 7208 §6.1).
Gmail, Yahoo ve Microsoft ne istiyor
Şubat 2024'ten beri Gmail ve Yahoo her göndericiden SPF veya DKIM kurmasını ister. Toplu göndericilerin ikisine de, en az p=none olan bir DMARC kaydına ve ikisinden biriyle hizalı bir From: alan adına ihtiyacı vardır. Outlook.com yüksek hacimli göndericilerden hem SPF hem DKIM ister ve 5 Mayıs 2025'ten beri ikisi olmayanları reddediyor.
Gmail'in eşiği kişisel hesaplara günde 5.000'den fazla ileti; Yahoo hiçbir eşik yayımlamıyor. SPF tek başına e-postayı hiçbir zaman "hizalı" yapmaz: MAIL FROM alan adı sağlayıcının geri dönüş (bounce) alan adı değil, sizin alan adınız olmalıdır.
| Gmail | Yahoo | Outlook.com | |
|---|---|---|---|
| Toplu gönderim eşiği | Gmailkişisel Gmail hesaplarına günde 5.000 iletiden fazla, birincil alan adı başına sayılır | Yahooyayımlanmış yok: “Bir hacim eşiği belirtmeyeceğiz” | Outlook.comgünde 5.000 adetten fazla (Microsoft'un blogu); tek bir From: alan adından 5.000 veya daha fazla (destek makalesi) |
| Tüm göndericiler | GmailSPF veya DKIM, ayrıca ileri ve ters DNS, TLS ve %0,3 altında spam oranı | YahooSPF veya DKIM, ayrıca ileri ve ters DNS ve %0,3 altında spam oranı | Outlook.comkatı bir kural yok |
| Toplu göndericiler | GmailSPF ve DKIM, DMARC (p=none yeterli), SPF veya DKIM ile hizalı From:, pazarlama e-postaları için tek tıkla abonelikten çıkma | YahooSPF ve DKIM, en az p=none olan ve geçen DMARC, SPF veya DKIM ile hizalı From:, tek tıkla abonelikten çıkma | Outlook.comSPF geçmeli ve DKIM geçmeli, en az p=none olan DMARC, SPF veya DKIM ile hizalı |
| Yürürlükte | Gmail1 Şubat 2024; reddetmeler Kasım 2025 ayından itibaren hızlandı | YahooŞubat 2024 | Outlook.com5 Mayıs 2025 (reddetme) |
| SPF hatası şöyle görünür | Gmail4.7.275.7.27 | YahooSPF için belgelenmemiş | Outlook.com550 5.7.515 |
Japonya: NTT docomo hizmetinin en sıkı ayarı olan 「全て拒否する」, alan adının SPF kaydının yetkilendirmediği gönderen IP'den gelen e-postayı ve hiç SPF kaydı yayımlamayan alan adlarından gelen e-postayı reddeder. docomo.ne.jp
Kaynaklarsupport.google.comsenders.yahooinc.comtechcommunity.microsoft.com
SPF sorgulama ile dig ve nslookup farkı
dig ve nslookup TXT kayıtlarını çözümleyicinizdeki haliyle gösterir: SPF kaydını ve o addaki diğer her şeyi. include'ları izlemez, sorguları veya void'leri saymaz, bir alıcının ne karar vereceğini söylemez.
Buradaki gibi bir SPF sorgulama aracı kaydın tamamını izler, bu yüzden sayılar bir alıcı sunucunun hesapladığıyla uyuşur. Tek bir ad için dig'i, karar için bu aracı kullanın.
dig TXT | nslookup -type=TXT | ||
|---|---|---|---|
| TXT kayıtlarını gösterir | Bu araçEvetterimlere bölünmüş | dig TXTEvet | nslookup -type=TXTEvet |
| Uzun bir kaydın dizelerini birleştirir | Bu araçEvetalıcılar gibi | dig TXTHayırher dizeyi ayrı gösterir | nslookup -type=TXTHayırher dizeyi ayrı gösterir |
| Her include'u izler | Bu araçEvetağacın tamamı | dig TXTHayırsorgu başına bir ad | nslookup -type=TXTHayırsorgu başına bir ad |
| 10 sınırına kadar sorguları sayar | Bu araçEvetinclude başına toplam sayı | dig TXTHayırelle | nslookup -type=TXTHayırelle |
| Void sorguları sayar | Bu araçEvetadlarıyla birlikte | dig TXTHayır | nslookup -type=TXTHayır |
| İki kayıt = permerror der | Bu araçEvet | dig TXTHayırikisini de yazdırır | nslookup -type=TXTHayırikisini de yazdırır |
| Gönderen bir IP'yi test eder | Bu araçEvetcheck_host ve eşleşen terim | dig TXTHayır | nslookup -type=TXTHayır |
| Kendi çözümleyicinize sorar | Bu araçHayırGoogle Public DNS, sunucumuzdan | dig TXTEvet | nslookup -type=TXTEvet |
SPF sorgulama: sık sorulan sorular
SPF kaydı sorgulama nedir?
Bir IP adresinin alan adım adına e-posta gönderip gönderemeyeceğini nasıl test ederim?
"SPF çok fazla DNS sorgusu" ne demek?
SPF permerror nedir?
SPF'de void sorgu nedir?
SPF kaydım ~all ile mi yoksa -all ile mi bitmeli?
Bir alan adının iki SPF kaydı olabilir mi?
SPF düzleştirme nedir ve kullanmalı mıyım?
Bir alt alan adının kendi SPF kaydı olmalı mı?
SPF burada geçiyor ama Gmail'de neden başarısız oluyor?
SPF, DKIM ve DMARC arasındaki fark nedir?
Bir SPF kaydı değişikliğinin etkili olması ne kadar sürer?
İlgili e-posta ve DNS araçları
MX Sorgulama
Posta değişim kayıtlarını ve posta sunucusu ayrıntılarını bulun
DMARC Sorgulama
Alan adının DMARC politikası ve hizalama ayarlarını kontrol edin
DKIM Kontrolü
Otomatik seçici algılama ile DKIM kayıtlarını doğrulayın
E-posta Başlık Analizi
Ham e-posta başlıklarını ayrıştırın ve e-posta yolculuğunu izleyin
IP Kara Liste Kontrolü
IP adresinin spam veya zararlı yazılım kara listelerinde olup olmadığını kontrol edin
Ters DNS Sorgulama
PTR kayıtları ile IP adresine bağlı ana bilgisayar adlarını bulun
DNS Sorgulama
Tüm DNS kayıtları alan adının kendi ad sunucularından, Google ve Cloudflare önbelleğiyle yan yana
SPF Kaydı Oluşturma Aracı
E-posta sağlayıcılarınız ve sunucularınız için 10 DNS sorgusu limitini canlı kontrol ederek geçerli bir SPF TXT kaydı oluşturun
