{"id":1752,"date":"2025-11-12T20:11:32","date_gmt":"2025-11-12T17:11:32","guid":{"rendered":"https:\/\/www.dchost.com\/blog\/spf-flattening-ile-10-lookup-duvarini-nasil-asarsin-ci-cd-ve-workers-ile-yasayan-spf\/"},"modified":"2025-11-12T20:11:32","modified_gmt":"2025-11-12T17:11:32","slug":"spf-flattening-ile-10-lookup-duvarini-nasil-asarsin-ci-cd-ve-workers-ile-yasayan-spf","status":"publish","type":"post","link":"https:\/\/www.dchost.com\/blog\/spf-flattening-ile-10-lookup-duvarini-nasil-asarsin-ci-cd-ve-workers-ile-yasayan-spf\/","title":{"rendered":"SPF Flattening ile 10 Lookup Duvar\u0131n\u0131 Nas\u0131l A\u015fars\u0131n? CI\/CD ve Workers ile Ya\u015fayan SPF"},"content":{"rendered":"<div class=\"dchost-blog-content-wrapper\"><p>Hi\u00e7 SPF kayd\u0131n\u0131 g\u00fcncellemek i\u00e7in DNS\u2019e girip \u201cBir daha ellemem\u201d deyip sonra iki hafta sonra yine oraya d\u00fc\u015ft\u00fcn\u00fcz m\u00fc? Ben \u00e7ok ya\u015fad\u0131m. Bir m\u00fc\u015fteri, \u00fc\u00e7 farkl\u0131 e\u2011posta sa\u011flay\u0131c\u0131s\u0131, \u00fcst\u00fcne bir de helpdesk sistemi eklenince SPF kayd\u0131 bir anda iplik yuma\u011f\u0131na d\u00f6n\u00fcyor. O me\u015fhur 10 DNS lookup s\u0131n\u0131r\u0131 da ans\u0131z\u0131n kap\u0131da beliriveriyor; hop, teslim edilebilirlik d\u00fc\u015f\u00fcyor, uyar\u0131lar gelmeye ba\u015fl\u0131yor. \u0130\u015fte tam o g\u00fcn, \u201cBunu otomati\u011fe ba\u011flasak da kafam\u0131z rahat etse\u201d diye d\u00fc\u015f\u00fcnd\u00fcm.<\/p>\n<p>Bug\u00fcn, SPF Flattening denen tatl\u0131 bir numaray\u0131, \u00fcstelik CI\/CD ya da Workers ile otomatik hale getirerek nas\u0131l sorunsuz kullanabilece\u011fini konu\u015faca\u011f\u0131z. Her \u015feyi en ba\u015ftan, sakin sakin anlataca\u011f\u0131m. Biraz hikaye, arada ger\u00e7ek d\u00fcnya \u00f6rnekleri, derken sonunda \u00e7al\u0131\u015fan, ya\u015fayan bir SPF y\u00f6netimi kurmu\u015f olaca\u011f\u0131z. E\u2011posta teslim edilebilirli\u011fi, DMARC hizalamas\u0131 ve DNS bak\u0131m y\u00fck\u00fc derken hepsi usul usul yerine oturacak.<\/p>\n<p>Yaz\u0131n\u0131n sonunda elinizde iki sa\u011flam yol olacak: Kod deposuyla s\u00fcr\u00fcmlenen ve pipeline\u2019da her de\u011fi\u015fiklikte kendini g\u00fcncelleyen bir SPF; ve edge taraf\u0131nda, yani Workers benzeri bir ortamda \u00e7al\u0131\u015fan anl\u0131k flattening. Hangisi i\u015finize gelirse, oradan y\u00fcr\u00fcrs\u00fcn\u00fcz. Hadi ba\u015fl\u0131yoruz.<\/p>\n<h2 id=\"section-1\">Nereden \u00c7\u0131kt\u0131 Bu 10 Lookup S\u0131n\u0131r\u0131?<\/h2>\n<p>SPF, g\u00f6nderici alan ad\u0131n\u0131n \u201cBu IP\u2019lerden e\u2011posta g\u00f6ndermeme izin var\u201d dedi\u011fi basit bir TXT kay\u0131t mant\u0131\u011f\u0131. Fakat o basitlik, include ve benzeri mekanizmalarda DNS\u2019e bakma ihtiyac\u0131 do\u011furuyor. Her include, a, mx, exists ve redirect gibi mekanizmalar birer DNS sorgusu demek. \u0130\u015fte toplamda 10 sorgu s\u0131n\u0131r\u0131 var ve bunu a\u015ft\u0131\u011f\u0131n\u0131z anda SPF de\u011ferlendirmesi ba\u015far\u0131s\u0131z olabiliyor.<\/p>\n<p>G\u00f6r\u00fcn\u00fcrde \u00fc\u00e7 include kullanm\u0131\u015fs\u0131n\u0131zd\u0131r ama onlar\u0131n i\u00e7inde ba\u015fka include\u2019lar olabilir. Bir de MX \u00fczerinden IP topluyorsan\u0131z, her biri ayr\u0131 bir sorgu olarak say\u0131labiliyor. Bir anda 10\u2019u ge\u00e7mek i\u015ften bile de\u011fil. \u201cBen sadece birka\u00e7 sa\u011flay\u0131c\u0131 kullan\u0131yorum\u201d diyen ekiplerin bile bu s\u0131n\u0131ra toslad\u0131\u011f\u0131n\u0131 \u00e7ok g\u00f6rd\u00fcm, \u00e7\u00fcnk\u00fc zincirleme include\u2019lar i\u015fin rengini de\u011fi\u015ftiriyor.<\/p>\n<p>Burada gizli bir ba\u015fka ayr\u0131nt\u0131 daha var: Lookup say\u0131s\u0131 \u00e7o\u011fu zaman konfig\u00fcrasyon dosyas\u0131nda net g\u00f6r\u00fcnm\u00fcyor. Bir sa\u011flay\u0131c\u0131, kendi alt\u0131ndaki \u00fc\u00e7\u00fcnc\u00fc bir include\u2019u de\u011fi\u015ftirdi\u011finde, siz dokunmam\u0131\u015f olsan\u0131z bile lookup say\u0131n\u0131z artabiliyor. Bu da sizi beklenmedik SPF hatalar\u0131yla ba\u015f ba\u015fa b\u0131rak\u0131yor.<\/p>\n<p>Sonu\u00e7? Teslim edilebilirlik etkileniyor. Spam klas\u00f6r\u00fc s\u00fcrprizleri ba\u015f g\u00f6steriyor. Bir yandan DMARC\u2019\u0131 d\u00fczg\u00fcn tutmaya \u00e7al\u0131\u015f\u0131rken bir yandan SPF\u2019de tak\u0131l\u0131 kalmak sinir bozucu. Neyse ki \u00e7\u00f6z\u00fcm var ve ho\u015f da bir \u00e7\u00f6z\u00fcm: flattening.<\/p>\n<p>Bu arada, SMTP g\u00fcvenli\u011fini besleyen di\u011fer par\u00e7alar\u0131 da unutmamak laz\u0131m. Merak ederseniz, <a href=\"https:\/\/www.dchost.com\/blog\/mta-sts-tls-rpt-ve-dane-tlsa-ile-smtp-guvenligi-teslim-edilebilirligi-ve-sifrelemeyi-nasil-guclendirirsin\/\">SMTP g\u00fcvenli\u011fini g\u00fc\u00e7lendirme \u00fczerine yaz\u0131m\u0131z<\/a> SPF\u2019le yan yana g\u00fczel gider.<\/p>\n<h2 id=\"section-2\">SPF Flattening Nedir, Neyi \u00c7\u00f6zer?<\/h2>\n<p>Flattening, kabaca \u201cinclude\u2019lar\u0131 a\u00e7, IP\u2019leri tek tek \u00e7\u0131kar, SPF sat\u0131r\u0131na do\u011frudan ip4\/ip6 olarak yaz\u201d demek. Yani zincirleme DNS bak\u0131\u015flar\u0131 yerine hepsini bir kerede d\u00fcz bir listeye \u00e7eviriyorsun. B\u00f6ylece de\u011ferlendirme s\u0131ras\u0131nda ekstra lookup ihtiyac\u0131 kalm\u0131yor, 10 s\u0131n\u0131r\u0131n\u0131 takmadan ilerliyorsun.<\/p>\n<p>Bu yakla\u015f\u0131m\u0131n tatl\u0131 yan\u0131 \u015fu: \u00c7al\u0131\u015fma an\u0131nda neredeyse lookup yok. SPF kayd\u0131n\u0131z, ip4:\u2026 ip6:\u2026 mekanizmalar\u0131yla dolu d\u00fcz bir yap\u0131 haline geliyor. D\u0131\u015far\u0131daki de\u011fi\u015fimlerden daha az etkileniyorsunuz \u00e7\u00fcnk\u00fc ger\u00e7ekte \u201cinclude\u201d takip etmiyorsunuz. O g\u00fcn\u00fcn ger\u00e7ek IP\u2019lerini al\u0131p tek kay\u0131t olarak yay\u0131nl\u0131yorsunuz.<\/p>\n<p>Dezavantaj k\u0131sm\u0131 da d\u00fcr\u00fcst\u00e7e s\u00f6yleyeyim: Sa\u011flay\u0131c\u0131 IP\u2019leri de\u011fi\u015fti\u011finde, sizin yay\u0131nlad\u0131\u011f\u0131n\u0131z d\u00fcz liste eskimi\u015f oluyor. Yani flattening tek ba\u015f\u0131na statik kal\u0131rsa, bir sabah SPF\u2019iniz ger\u00e7e\u011fi yans\u0131tmayabilir. \u00c7\u00f6z\u00fcm\u00fc basit: Otomasyon. Kay\u0131tlar\u0131 d\u00fczenli aral\u0131klarla yeniden \u00fcretip DNS\u2019e basarsan\u0131z, sorun k\u00f6kten \u00e7\u00f6z\u00fcl\u00fcr.<\/p>\n<p>Bir de pratik s\u0131n\u0131rlamalar var. TXT alan\u0131nda tek par\u00e7a 255 karakter s\u0131n\u0131r\u0131 gibi teknik detaylar ve toplam cevap boyutu gibi kayg\u0131lar \u00e7\u0131kabilir. Bunun i\u00e7in kay\u0131t segmentlemeyi ak\u0131ll\u0131ca yapmak, gerekirse \u201cv=spf1\u201d sat\u0131r\u0131n\u0131 birden fazla t\u0131rnak par\u00e7as\u0131na b\u00f6lmek i\u015fe yarar. Yani flattening sadece \u201cIP yaz, bitsin\u201d de\u011fil; temiz bir ambalaj da istiyor.<\/p>\n<p>\u00d6zetle: Flattening, lookup derdini \u00e7\u00f6zer ama g\u00fcncelli\u011fi takip etme sorumlulu\u011fu getirir. O sorumlulu\u011fu da otomasyonla makineye devretti\u011finizde, tek bir kayda bak\u0131p rahat uyursunuz.<\/p>\n<h2 id=\"section-3\">CI\/CD ile Otomatik SPF Y\u00f6netimi Nas\u0131l Kurulur?<\/h2>\n<p>Benim favorim, SPF\u2019yi bir kod deposunun i\u00e7ine almak. Basit bir script d\u00fc\u015f\u00fcn\u00fcn: Alan ad\u0131n\u0131z\u0131n planlanan include\u2019lar\u0131n\u0131 okuyor, her birini recursive \u015fekilde \u00e7\u00f6z\u00fcp IP\u2019leri topluyor, tekrarlar\u0131 ay\u0131kl\u0131yor, sonra da \u201cv=spf1 ip4:\u2026 ip6:\u2026 ~all\u201d \u015feklinde tek bir sat\u0131r \u00fcretiyor. Bu \u00e7\u0131kt\u0131 dosyas\u0131n\u0131 pipeline\u2019\u0131n sonunda DNS\u2019e yazd\u0131r\u0131yorsunuz.<\/p>\n<p>Script taraf\u0131 i\u00e7in dil se\u00e7imi \u00f6zg\u00fcrd\u00fcr. K\u00fc\u00e7\u00fck bir Python beti\u011fi gayet yeterli. Mesela \u201cinclude:\u201d i\u00e7eren TXT kay\u0131tlar\u0131n\u0131 \u00e7ekip i\u00e7 i\u00e7e \u00e7\u00f6zmek, \u201ca\u201d ve \u201cmx\u201d mekanizmalar\u0131n\u0131 IP\u2019ye indirgemek, ard\u0131ndan b\u00fcy\u00fck bir set i\u00e7inde birle\u015ftirmek. Sonras\u0131nda da karakter s\u0131n\u0131r\u0131n\u0131 koruyacak \u015fekilde uygun yerlerden bo\u015fluk ekleyip t\u0131rnaklar\u0131 b\u00f6lmek. \u00c7al\u0131\u015f\u0131nca, g\u00fcnl\u00fck ya da saatlik tetikleyip g\u00fcncel bir SPF \u00fcretirsiniz.<\/p>\n<p>Pipeline taraf\u0131nda ise bir Git push, belirli aral\u0131kta cron tetiklemesi veya manuel onay ak\u0131\u015f\u0131 kullan\u0131labilir. Depoya yeni bir sa\u011flay\u0131c\u0131 eklendi\u011finde script yeniden ko\u015far, kay\u0131t g\u00fcncellenir, DNS API\u2019sine bir \u00e7a\u011fr\u0131 gider. Cloudflare, Route 53 veya kendi DNS sunucunuza API \u00fczerinden yazmak m\u00fcmk\u00fcn. Bu, hatalar\u0131 azalt\u0131p s\u00fcre\u00e7leri izlenebilir k\u0131l\u0131yor.<\/p>\n<p>\u00c7al\u0131\u015fan \u00f6rnekleri g\u00f6rmek isterseniz, <a href=\"https:\/\/docs.github.com\/actions\" rel=\"nofollow noopener\" target=\"_blank\">GitHub Actions belgeleri<\/a> iyi bir ba\u015flang\u0131\u00e7 sunuyor. Basit bir workflow dosyas\u0131yla, \u201cher ak\u015fam 03:00\u2019te \u00e7al\u0131\u015f, \u00e7\u0131kt\u0131y\u0131 \u00fcret, DNS\u2019e koy\u201d gibi kurallar yazabilirsiniz. Dahas\u0131, test a\u015famas\u0131nda SPF metnini do\u011frulayan k\u00fc\u00e7\u00fck kontroller ekleyip beklenmedik durumlar\u0131 pipeline\u2019da yakalars\u0131n\u0131z.<\/p>\n<p>DNS altyap\u0131s\u0131n\u0131 kodla y\u00f6netiyorsan\u0131z i\u015finiz daha da kolay. \u00d6rne\u011fin Terraform kullan\u0131yorsan\u0131z, pipeline son \u00e7\u0131kt\u0131y\u0131 Terraform de\u011fi\u015fkenine aktar\u0131p apply ad\u0131m\u0131nda DNS kay\u0131tlar\u0131n\u0131 g\u00fcncelleyebilirsiniz. Bu yakla\u015f\u0131m\u0131 ad\u0131m ad\u0131m g\u00f6rmek isterseniz, <a href=\"https:\/\/www.dchost.com\/blog\/terraform-ile-vps-ve-dns-otomasyonu-cloudflare-proxmox-openstack-ve-sifir-kesinti-dagitim-nasil-bir-araya-gelir\/\">Terraform ile DNS otomasyonu yaz\u0131m\u0131z<\/a> size fikir verecektir.<\/p>\n<p>Son dokunu\u015f olarak g\u00f6zlem katman\u0131 eklemek g\u00fczel olur. Pipeline \u00e7\u0131kt\u0131s\u0131n\u0131 Slack\u2019e atmak, SPF boyutunu ve lookup tahmini \u00f6l\u00e7\u00fcmlerini loglamak, gerekirse \u201cfail\u2011safe\u201d moduna d\u00fc\u015fmek gibi k\u00fc\u00e7\u00fck l\u00fcksler, b\u00fcy\u00fck geceleri kurtar\u0131r. Bozuldu\u011funda haber veren sistem, bozulmayan sistemdir.<\/p>\n<h2 id=\"section-4\">Workers ile Kenarda Ak\u0131ll\u0131 SPF: Anl\u0131k, Hafif ve H\u0131zl\u0131<\/h2>\n<p>Bir ba\u015fka yakla\u015f\u0131m da edge\u2019de, yani kullan\u0131c\u0131n\u0131n en yak\u0131n\u0131nda \u00e7al\u0131\u015fan k\u00fc\u00e7\u00fck bir uygulamaya i\u015fi devretmek. Cloudflare Workers gibi hafif ortamlar, SPF flattening\u2019i anl\u0131k \u00fcretip yay\u0131nlamaya olduk\u00e7a uygun. Basit\u00e7e anlatay\u0131m: Workers, belirledi\u011finiz bir endpoint\u2019e gelen istekte SPF\u2019yi dinamik \u00fcretip cevaplayabiliyor, sonra DNS taraf\u0131nda TXT kayd\u0131n\u0131z\u0131 bu endpoint ile entegre edebiliyorsunuz.<\/p>\n<p>Burada iki yol var. Birincisi, Workers taraf\u0131 belirli aral\u0131klarla sa\u011flay\u0131c\u0131lar\u0131n SPF\u2019lerini \u00e7\u00f6z\u00fcp ip\u2019leri KV veya Durable Object i\u00e7inde saklar; DNS ise bu \u00fcretilmi\u015f d\u00fcz listeyi TXT kayd\u0131 olarak servis eder. \u0130kincisi, SPF istenirken anl\u0131k \u00e7\u00f6z\u00fcm yap\u0131p cevaplamak. \u0130kincisi pratikte dikkat istiyor, \u00e7\u00fcnk\u00fc lookup gecikmesini e\u2011posta de\u011ferlendirme yoluna sokmak istemezsiniz.<\/p>\n<p>Genellikle \u201c\u00f6nceden \u00fcret, kenarda tut\u201d yakla\u015f\u0131m\u0131 daha sa\u011fl\u0131kl\u0131. Workers, arkada belirli periyotlarla g\u00fcnceller, \u00fcretir ve saklar. B\u00f6ylece bir kesinti ya da sa\u011flay\u0131c\u0131 de\u011fi\u015fikli\u011finde en fazla bir ka\u00e7 saatlik gecikmeyle yeni liste devreye girer. Gerekirse bir butonla elle tetikleme de ekleyebilirsiniz.<\/p>\n<p>Bu tarz bir mimariyi kurcalamak isterseniz, <a href=\"https:\/\/developers.cloudflare.com\/workers\/\" rel=\"nofollow noopener\" target=\"_blank\">Cloudflare Workers dok\u00fcmantasyonu<\/a> yap\u0131 ta\u015flar\u0131n\u0131 olduk\u00e7a anla\u015f\u0131l\u0131r anlat\u0131yor. K\u00fc\u00e7\u00fck bir fetch ile TXT kay\u0131tlar\u0131n\u0131 \u00e7ekip i\u00e7 i\u00e7e \u00e7\u00f6zmek, ard\u0131ndan KV\u2019de tek anahtarda tutmak yeterli. DNS taraf\u0131nda da TXT kayd\u0131n\u0131 s\u0131k de\u011fi\u015ftirmeden ayn\u0131 i\u00e7eri\u011fe i\u015faret etmi\u015f olursunuz.<\/p>\n<p>Workers\u2019\u0131n g\u00fczelli\u011fi, d\u00fc\u015f\u00fck maliyetle y\u00fcksek esneklik sunmas\u0131. Ayr\u0131ca beklenmedik b\u00fcy\u00fcmeleri ak\u0131ll\u0131ca kar\u015f\u0131lar. Yine de unutmay\u0131n, e\u2011posta de\u011ferlendirme katman\u0131na dinamik bile\u015fen sokarken her zaman bir \u201cstatik yedek\u201d bulundurmak iyi fikirdir. Bozulursa statik moda d\u00f6n\u00fcn, d\u00fczelince tekrar dinamik yay\u0131nlay\u0131n.<\/p>\n<h2 id=\"section-5\">Kenar K\u00f6\u015fe: Uzunluk S\u0131n\u0131r\u0131, TTL, Fail\u2011Safe ve Di\u011fer Tuzaklar<\/h2>\n<p>SPF kayd\u0131 metin olarak uzun olabiliyor. DNS TXT alan\u0131nda tek bir t\u0131rnak i\u00e7inde 255 karakter s\u0131n\u0131r\u0131n\u0131 unutmay\u0131n. Bu s\u0131n\u0131r\u0131 a\u015fmak i\u00e7in kayd\u0131 birden fazla t\u0131rnak par\u00e7as\u0131na b\u00f6lebilirsiniz. \u00c7\u00f6z\u00fcc\u00fc taraf bunlar\u0131 birle\u015ftirir. Ama okunabilirlik ve y\u00f6netilebilirlik i\u00e7in sat\u0131r\u0131 ak\u0131ll\u0131ca segmentlemek b\u00fcy\u00fck rahatl\u0131k sa\u011flar.<\/p>\n<p>Toplam DNS yan\u0131t boyutu da bir ba\u015fka pratik konu. Modern \u00e7\u00f6z\u00fcmler genelde b\u00fcy\u00fck yan\u0131tlar\u0131 idare ediyor ama risk i\u015ftah\u0131na g\u00f6re, IP listesini \u00e7ok \u015fi\u015firmemek iyi. Gereksiz aral\u0131klar\u0131 birle\u015ftirmek, CIDR kullanmak ve tekrar eden IP\u2019leri temizlemek kay\u0131t boyutunu do\u011fal \u015fekilde azalt\u0131r. Script\u2019inize k\u00fc\u00e7\u00fck bir \u201cminify\u201d ad\u0131m\u0131 ekleyin.<\/p>\n<p>TTL konusu kritik. \u00c7ok k\u0131sa TTL, her de\u011fi\u015fiklikte d\u00fcnya kadar yeniden sorgu demek ve bazen gereksiz y\u00fck getirir. \u00c7ok uzun TTL ise sa\u011flay\u0131c\u0131 IP de\u011fi\u015fiminde yeni kayd\u0131n yay\u0131lmas\u0131n\u0131 geciktirir. Ben genelde orta bir de\u011ferde kal\u0131p, kritik g\u00fcncellemeler \u00f6ncesi TTL\u2019i ge\u00e7ici olarak d\u00fc\u015f\u00fcrmeyi seviyorum. Otomasyon varsa bu i\u015flemi pipeline\u2019a g\u00f6mebilirsiniz.<\/p>\n<p>Fail\u2011safe olmazsa olmaz. Otomatik \u00fcretimde beklenmedik bir hata oldu\u011funda, mevcut \u00e7al\u0131\u015fan SPF\u2019yi koruyun. Script ba\u015far\u0131s\u0131z olursa \u201cen son iyi bilinen\u201d \u00e7\u0131kt\u0131y\u0131 yeniden yazmay\u0131n. Bunun yerine hatay\u0131 bildirip g\u00fcncellemeyi atlay\u0131n. Bu k\u00fc\u00e7\u00fck prensip b\u00fcy\u00fck ar\u0131zalar\u0131 \u00f6nler.<\/p>\n<p>\u201cinclude\u201d yerine \u201credirect\u201d kullan\u0131m\u0131 da bazen kar\u015f\u0131m\u0131za \u00e7\u0131kar. Redirect, asl\u0131nda \u201ct\u00fcm politikay\u0131 ba\u015fka yere ta\u015f\u0131r\u0131m\u201d demek. Flattening d\u00fcnyas\u0131nda genellikle redirect\u2019i minimal tutmak, hatta hi\u00e7 kullanmamak daha temiz olur. \u00c7\u00fcnk\u00fc ama\u00e7 lookup t\u00fcketmeyen, tek par\u00e7a bir politika yay\u0131nlamak. Yine de baz\u0131 kurumsal \u015femalarda redirect i\u015fe yarayabilir; dikkatli planlamak gerekir.<\/p>\n<p>SPF\u2019in detaylar\u0131na bazen d\u00f6n\u00fcp bakmak iyi olur. Standart, hangi mekanizman\u0131n nas\u0131l say\u0131ld\u0131\u011f\u0131n\u0131 ve s\u0131n\u0131rlar\u0131 net tarif ediyor. Merak edenler i\u00e7in <a href=\"https:\/\/datatracker.ietf.org\/doc\/html\/rfc7208\" rel=\"nofollow noopener\" target=\"_blank\">SPF standard\u0131n\u0131n (RFC 7208) metni<\/a> elinizin alt\u0131nda dursun. Okurken bile k\u0131v\u0131lc\u0131mlar \u00e7ak\u0131yor; script\u2019inizde neleri kapsaman\u0131z gerekti\u011fini netle\u015ftiriyor.<\/p>\n<h2 id=\"section-6\">\u0130zleme, Raporlama ve Ya\u015fayan Bir SPF<\/h2>\n<p>SPF tek ba\u015f\u0131na bir kahraman de\u011fil. DMARC\u2019la el ele y\u00fcr\u00fcd\u00fc\u011f\u00fcnde esas g\u00fcc\u00fcn\u00fc g\u00f6steriyor. Raporlar, hizalama ve politikan\u0131n etkisi gibi konular\u0131 takip etti\u011finizde, hatalar\u0131 erkenden yakal\u0131yorsunuz. Bu konuda pratik ve yol g\u00f6sterici bir kaynak ar\u0131yorsan\u0131z, <a href=\"https:\/\/www.dchost.com\/blog\/gelismis-dmarc-ve-bimi-rua-ruf-raporlarindan-marka-gostergesine-nasil-yol-alinir\/\">Geli\u015fmi\u015f DMARC ve BIMI rehberi<\/a> i\u015fin mutfa\u011f\u0131n\u0131 g\u00fczel anlat\u0131r.<\/p>\n<p>Ben izleme i\u00e7in k\u00fc\u00e7\u00fck metrikler seviyorum: \u00dcretilen IP say\u0131s\u0131, kay\u0131t boyutu, pipeline s\u00fcresi, son ba\u015far\u0131l\u0131 ko\u015fu zaman\u0131 ve DNS yay\u0131l\u0131m penceresi. Bu metrikleri panoya koydu\u011funuzda, bir \u015fey ters gitti\u011finde g\u00f6z\u00fcn\u00fcz al\u0131\u015fm\u0131\u015f oluyor. Ayr\u0131ca mail ak\u0131\u015f\u0131nda beklenmedik bir d\u00fc\u015f\u00fc\u015f g\u00f6r\u00fcrseniz, \u00f6nce bu panoya bak\u0131p \u201cSPF taraf\u0131 sa\u011fl\u0131kl\u0131 m\u0131?\u201d diye sorun.<\/p>\n<p>Altyap\u0131 olarak kendi e\u2011posta sunucunuzu i\u015fletiyorsan\u0131z, SPF\u2019in etkisini yerinde g\u00f6r\u00fcrs\u00fcn\u00fcz. Kuyruk davran\u0131\u015f\u0131, geri d\u00f6n\u00fc\u015fler ve greylisting gibi detaylarda SPF\u2019nin dokunu\u015fu bariz olur. Bu tarafa ilgi duyuyorsan\u0131z, <a href=\"https:\/\/www.dchost.com\/blog\/vpste-e%e2%80%91posta-sunucusu-kurulumu-postfix-dovecot-rspamd-ile-teslim-edilebilirlik-ve-ip-isitma-adim-adim\/\">Postfix + Dovecot ile e\u2011posta sunucusu kurma rehberimiz<\/a> pratik bak\u0131\u015f sa\u011flar.<\/p>\n<p>Bir de ucu SMTP taraf\u0131na dokunan g\u00fcvenlik katmanlar\u0131 var. En ba\u015fta bahsetmi\u015ftim; MTA\u2011STS, TLS\u2011RPT ve DANE\/TLSA gibi \u00e7\u00f6z\u00fcmler, SPF ve DMARC\u2019\u0131n yan\u0131na konunca posta ak\u0131\u015f\u0131 daha istikrarl\u0131 hale geliyor. Bu seti yava\u015f yava\u015f oturtmak, \u201cbug\u00fcn SPF d\u00fczeldi, yar\u0131n TLS raporlar\u0131na bakal\u0131m\u201d gibi k\u00fc\u00e7\u00fck ad\u0131mlarla \u00e7ok daha kolay.<\/p>\n<h2 id=\"section-7\">Kapan\u0131\u015f: Basit Ba\u015fla, Otomatikle B\u00fcy\u00fct<\/h2>\n<p>Toparlayal\u0131m. SPF Flattening, include labirentini d\u00fcz bir yola \u00e7eviriyor. 10 lookup s\u0131n\u0131r\u0131yla pazarl\u0131k etmiyor, onu kibarca devre d\u0131\u015f\u0131 b\u0131rak\u0131yor. Ama bunun s\u00fcrd\u00fcr\u00fclebilir olmas\u0131 i\u00e7in otomasyon \u015fart. Ya CI\/CD ile s\u00fcr\u00fcmlenen, test edilen ve DNS\u2019e otomatik yazan bir ak\u0131\u015f kuracaks\u0131n\u0131z ya da Workers gibi bir kenar ortam\u0131nda ak\u0131ll\u0131 bir \u00fcret\u2011sakla modeli kullanacaks\u0131n\u0131z. \u0130kisi de olur, \u00f6nemli olan sizin ekibin ritmine uymas\u0131.<\/p>\n<p>Ba\u015flarken k\u00fc\u00e7\u00fck bir alan ad\u0131nda deneyin. Script\u2019inizi yaz\u0131n, bir iki sa\u011flay\u0131c\u0131y\u0131 \u00e7\u00f6z\u00fcn, IP\u2019leri d\u00fczle\u015ftirin, TXT uzunlu\u011funu y\u00f6netin ve fail\u2011safe\u2019i kurun. Her \u015fey yolunda gidiyorsa, TTL ayarlar\u0131n\u0131 d\u00fc\u015f\u00fcnerek ana alan\u0131n\u0131za ta\u015f\u0131rs\u0131n\u0131z. Bu arada DMARC raporlar\u0131na g\u00f6z atmadan ge\u00e7meyin; sorunlar\u0131 en h\u0131zl\u0131 onlar f\u0131s\u0131ldar.<\/p>\n<p>Daha derine dalmak isterseniz, SPF\u2019nin sahada nas\u0131l nefes ald\u0131\u011f\u0131na dair par\u00e7alar\u0131 birbirine ba\u011flay\u0131n. SMTP \u015fifreleme ve teslimat katman\u0131n\u0131 daha sa\u011flam kurmak i\u00e7in <a href=\"https:\/\/www.dchost.com\/blog\/mta-sts-tls-rpt-ve-dane-tlsa-ile-smtp-guvenligi-teslim-edilebilirligi-ve-sifrelemeyi-nasil-guclendirirsin\/\">g\u00fcvenlik rehberimizi<\/a> ve altyap\u0131 otomasyonu i\u00e7in de <a href=\"https:\/\/www.dchost.com\/blog\/terraform-ile-vps-ve-dns-otomasyonu-cloudflare-proxmox-openstack-ve-sifir-kesinti-dagitim-nasil-bir-araya-gelir\/\">Terraform ile DNS otomasyonu yaz\u0131m\u0131z\u0131<\/a> b\u0131rak\u0131yorum. Umar\u0131m bu yaz\u0131, SPF taraf\u0131nda \u201cOf yine mi include!\u201d dedirten g\u00fcnlerinizi keyifli bir otomasyonla geride b\u0131rak\u0131r. Bir sonraki yaz\u0131da g\u00f6r\u00fc\u015f\u00fcr\u00fcz.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Hi\u00e7 SPF kayd\u0131n\u0131 g\u00fcncellemek i\u00e7in DNS\u2019e girip \u201cBir daha ellemem\u201d deyip sonra iki hafta sonra yine oraya d\u00fc\u015ft\u00fcn\u00fcz m\u00fc? Ben \u00e7ok ya\u015fad\u0131m. Bir m\u00fc\u015fteri, \u00fc\u00e7 farkl\u0131 e\u2011posta sa\u011flay\u0131c\u0131s\u0131, \u00fcst\u00fcne bir de helpdesk sistemi eklenince SPF kayd\u0131 bir anda iplik yuma\u011f\u0131na d\u00f6n\u00fcyor. O me\u015fhur 10 DNS lookup s\u0131n\u0131r\u0131 da ans\u0131z\u0131n kap\u0131da beliriveriyor; hop, teslim edilebilirlik d\u00fc\u015f\u00fcyor, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1753,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26],"tags":[],"class_list":["post-1752","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-teknoloji"],"_links":{"self":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/1752","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/comments?post=1752"}],"version-history":[{"count":0,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/1752\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media\/1753"}],"wp:attachment":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media?parent=1752"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/categories?post=1752"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/tags?post=1752"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}