DMARC (Domain-based Message Authentication, Reporting and Conformance), alan adınızın DNS'ine eklenen bir TXT kaydıdır ve iki şey yapar: SPF ile DKIM sonuçlarını kullanıcının gördüğü "Kimden" adresine bağlar ve doğrulamadan geçemeyen iletiye ne yapılacağını alıcıya söyler. Üçüncü bir işlevi daha vardır ve çoğu zaman en değerlisi odur: alan adınız adına kimin e-posta gönderdiğini size rapor eder.
DMARC neden gerekli?
SPF iletinin zarf adresini, DKIM ise imzalayan alan adını doğrular. İkisi de kullanıcının e-posta programında gördüğü "Kimden" satırını tek başına korumaz: bir sahteci kendi alan adıyla SPF ve DKIM'den geçip "Kimden" satırına sizin adresinizi yazabilir. DMARC bu boşluğu hizalama (alignment) kuralıyla kapatır: SPF ya da DKIM'den geçen alan adı, "Kimden" adresindeki alan adıyla eşleşmelidir. SPF'nin ayrıntıları için SPF kaydı nasıl yapılır, üçünün genel resmi için SPF, DKIM ve DMARC yazımız.
Hizalama örnekleri
Hizalama kuralı somut örneklerle daha kolay anlaşılır. Aşağıdaki tabloda "Kimden" adresi her satırda [email protected]:
| Doğrulanan alan adı | Gevşek hizalama (r, varsayılan) | Sıkı hizalama (s) |
|---|---|---|
ornek.com.tr | Hizalı | Hizalı |
bulten.ornek.com.tr | Hizalı (aynı ana alan adı) | Hizalı değil |
gonderimhizmeti.com | Hizalı değil | Hizalı değil |
Son satır, bir bülten ya da fatura hizmetinin iletiyi kendi alan adıyla imzaladığı durumdur: SPF ve DKIM "geçer" ama DMARC için sayılmaz. Bu hizmetlerin neredeyse hepsi, sizin alan adınızla DKIM imzalamak için DNS'inize eklemeniz gereken bir kayıt (genellikle bir CNAME ya da TXT) verir. Raporlarda gördüğünüz "DKIM pass ama DMARC fail" satırlarının çoğu bu ayarın yapılmamasından kaynaklanır.
DMARC kaydının yapısı
Kayıt her zaman _dmarc alt adında, TXT türünde yayımlanır: _dmarc.ornek.com.tr. İçeriği noktalı virgülle ayrılmış etiketlerdir:
| Etiket | Anlamı | Örnek |
|---|---|---|
v | Sürüm; her zaman ilk etiket | v=DMARC1 |
p | Doğrulamadan geçemeyen iletiye politika | none, quarantine, reject |
rua | Günlük toplu raporların gideceği adres | mailto:[email protected] |
ruf | Tek tek başarısız ileti raporu (az sağlayıcı gönderir) | mailto:[email protected] |
pct | Politikanın uygulanacağı ileti yüzdesi | pct=25 |
sp | Alt alan adları için ayrı politika | sp=reject |
adkim / aspf | Hizalama sıkılığı: r gevşek (alt alan adı da eşleşir), s sıkı (birebir) | adkim=r |
Gerçek dünyadan örnek kayıtlar
Büyük sağlayıcıların yayımladığı kayıtlar iyi birer başvuru noktasıdır. Test sunucumuzdan okuduğumuz değerler:
$ dig +short TXT _dmarc.google.com
"v=DMARC1; p=reject; rua=mailto:[email protected]"
$ dig +short TXT _dmarc.microsoft.com
"v=DMARC1; p=reject; pct=100; rua=mailto:[email protected]; ruf=mailto:[email protected]; fo=1"
Microsoft'un kaydındaki fo=1 etiketi, ayrıntılı hata raporunun SPF ya da DKIM'den herhangi biri başarısız olduğunda üretilmesini ister; varsayılan davranış (fo=0) yalnız ikisi birden başarısız olduğunda rapor üretmektir. Bu etiket yalnız ruf raporlarını etkiler ve toplu raporlara bir şey katmaz.
İkisi de en sıkı politikada: doğrulamadan geçemeyen ileti reddedilir. Bu noktaya bir günde gelinmez; aşağıdaki geçiş takvimi bunun içindir.
Adım adım DMARC kaydı oluşturma
- Önce SPF ve DKIM. DMARC onlara dayanır. Gönderim yapan her hizmetinizin SPF kaydında yer aldığından ve iletileri kendi alan adınızla DKIM imzaladığından emin olun.
- Rapor adresi açın. Raporlar her gün gelir; kişisel kutunuzu doldurmasın diye ayrı bir adres (ör.
[email protected]) kullanın. - İzleme modunda yayımlayın:
Ad: _dmarc Tür: TXT Değer: v=DMARC1; p=none; rua=mailto:[email protected] - Doğrulayın:
dig +short TXT _dmarc.ornek.com.trtek bir satır döndürmeli. Sözdizimini ve etiketleri kontrol etmek için DMARC kontrol aracı, etiketleri seçerek kayıt üretmek için DMARC oluşturucu.
Rapor başka bir alan adına gidecekse: rua=mailto:[email protected] yazdığınızda alıcılar, o alan adının bu raporları kabul ettiğini ornek.com.tr._report._dmarc.baska-alan.com adında bir TXT kaydı (v=DMARC1) ile doğrulamak ister. Kayıt yoksa raporlar gönderilmez.
Toplu raporları okumak
Raporlar sıkıştırılmış XML olarak gelir. Bir kaydın özü şöyledir (kısaltılmış örnek):
<record>
<row>
<source_ip>203.0.113.25</source_ip>
<count>148</count>
<policy_evaluated>
<disposition>none</disposition>
<dkim>pass</dkim>
<spf>fail</spf>
</policy_evaluated>
</row>
<identifiers><header_from>ornek.com.tr</header_from></identifiers>
</record>
Bu satır, 203.0.113.25 adresinden alan adınız adına 148 ileti gittiğini, DKIM'in hizalı geçtiğini, SPF'nin geçmediğini söyler. DMARC sonucu yine de pass'tir, çünkü biri yeterlidir. Raporlarda aradığınız üç şey:
- Tanıdık ama başarısız kaynaklar: Fatura yazılımınız, bülten hizmetiniz. SPF'ye ekleyin ya da DKIM'i yapılandırın.
- Tanımadığınız kaynaklar: Adınıza sahte gönderim. Politikayı sıkılaştırmanın gerekçesi tam olarak budur.
- Yönlendirme ve posta listeleri: İletinizi başka adrese yönlendiren sunucularda SPF bozulur; DKIM bozulmadıkça sorun olmaz. DKIM'in neden şart olduğu buradan anlaşılır.
p=none'dan p=reject'e güvenli geçiş
| Aşama | Kayıt | Ne zaman sonraki aşamaya geçilir |
|---|---|---|
| 1. İzleme | p=none; rua=… | En az 2-4 hafta rapor toplandı, tüm meşru kaynaklar hizalı geçiyor |
| 2. Kısmi karantina | p=quarantine; pct=25; rua=… | Bir-iki hafta şikâyet yok, raporlarda yeni meşru kaynak çıkmadı |
| 3. Tam karantina | p=quarantine; rua=… | Birkaç hafta sorunsuz |
| 4. Ret | p=reject; rua=… | Hedef durum; raporları izlemeye devam edin |
Takvim alan adınızdan ne kadar farklı hizmetin gönderim yaptığına bağlıdır. Tek bir e-posta sunucusu kullanan küçük bir işletme birkaç haftada reject'e gelebilir; onlarca SaaS aracının gönderim yaptığı bir şirkette bu aylar alabilir. Acele etmeyin: yanlış yapılandırılmış bir reject, faturalarınızın müşteriye hiç ulaşmaması demektir.
pct, sp ve ruf ne zaman kullanılır?
pctyalnız geçiş dönemi içindir: politikayı iletilerin bir yüzdesine uygulayarak riski sınırlar. Hedef duruma ulaştığınızda etiketi kaldırın; varsayılan değer zaten 100'dür.spalt alan adlarına ayrı politika verir. Hiç kullanmadığınız alt alan adlarının adına sahte gönderim yapılmasını engellemek için ana alan adı henüzp=none'dayken bilesp=rejectyazabilirsiniz; ama gönderim yapan bir alt alan adınız varsa (ör.bulten.) önce onu doğrulayın.ruftek tek başarısız iletilerin ayrıntılı raporudur ve iletinin başlıklarını, bazen içeriğinden parçaları taşıyabilir. Bu raporlar kişisel veri içerebileceği için birçok büyük sağlayıcı göndermez; siz de kullanacaksanız raporların geldiği kutuya kimin eriştiğini ve ne kadar süre saklandığını KVKK açısından belirleyin.
Bir not daha: gelen kutusunda gönderenin logosunu gösteren BIMI standardı, alan adında p=quarantine ya da p=reject politikası ister. p=none ile BIMI çalışmaz.
Sık yapılan hatalar
- Kaydı yanlış ada yazmak: Kayıt
ornek.com.tr'ye değil_dmarc.ornek.com.tr'ye yazılır. Bazı paneller alan adını kendisi ekler; ad alanına yalnız_dmarcyazılmalıdır, aksi halde kayıt_dmarc.ornek.com.tr.ornek.com.trolur. - İki DMARC kaydı: SPF'de olduğu gibi aynı adda ikinci bir
v=DMARC1kaydı politikanın tamamen yok sayılmasına yol açar. - Rapor adresini unutmak:
ruaolmadanp=noneyazmak hiçbir şey ölçmeyen bir kayıttır; neden kurulduğunu unutturur. - Raporları hiç açmamak: İzleme moduna alınıp yıllarca orada bırakılan kayıt çok yaygındır. Takvime bir hatırlatma koyun.
- DKIM'siz
reject: Yalnız SPF'ye güvenerekreject'e geçmek, yönlendirilen iletilerin reddedilmesine yol açar.
Geçişin her aşamasında kaydı değiştirdikten sonra dig +short TXT _dmarc.ornek.com.tr ile yayımlandığını doğrulayın ve raporların gelmeye devam ettiğini kontrol edin.
E-posta göndermeyen alan adları
Yalnız web sitesi için kullanılan ya da park edilmiş alan adlarınız sahteciler için en kolay hedeftir; çünkü raporlarını kimse izlemez. Bu alan adlarında beklemeye gerek yoktur:
TXT @ v=spf1 -all
TXT _dmarc v=DMARC1; p=reject
Kayıtlar doğru olduğu halde iletileriniz hâlâ reddediliyorsa sorun gönderen IP'nin itibarında olabilir: IP adresini kara listeden çıkarma.
Sık sorulan sorular
DMARC kaydı zorunlu mu?
Yasal bir zorunluluk değildir ama büyük posta sağlayıcıları giderek arar. Google ve Yahoo, 2024 başından itibaren kendi kullanıcılarına günde 5.000'den fazla ileti gönderen alan adlarından en azından p=none politikalı bir DMARC kaydı istiyor. Az gönderim yapan alan adları için de kayıt, sahte göndericilere karşı tek gerçek korumadır.
p=none ne işe yarar, bir şeyi engeller mi?
Hiçbir iletiyi engellemez; yalnız izleme modudur. Alıcılar raporları rua adresine gönderir ve siz adınıza kimin gönderim yaptığını görürsünüz. Asıl koruma quarantine ve reject politikalarıyla başlar.
DMARC raporlarını nasıl okurum?
Toplu raporlar sıkıştırılmış XML dosyalarıdır ve her biri bir alıcının bir günlük gözlemini içerir: hangi IP'den kaç ileti geldi, SPF ve DKIM sonucu ne oldu, hizalama tuttu mu. Az sayıda rapor için XML'i doğrudan okuyabilirsiniz; düzenli takip için raporları toplayıp tablo hâline getiren bir rapor çözümleyici kullanın.
DMARC kaydı alt alan adlarını da kapsar mı?
Evet; alt alan adının kendi _dmarc kaydı yoksa üst alan adının kaydı uygulanır. Alt alan adları için farklı politika istiyorsanız sp= etiketini kullanın.
p=quarantine ne demek?
Doğrulamadan geçemeyen iletinin alıcı tarafından şüpheli sayılmasını ister; uygulamada ileti genellikle spam ya da gereksiz klasörüne konur. İleti silinmez, kullanıcı görebilir. p=reject ise iletinin SMTP aşamasında reddedilmesini ister; ileti kullanıcıya hiç ulaşmaz ve gönderen sunucu bir geri dönüş iletisi alır.
- #dmarc
- #e-posta
- #spf
- #dkim
- #dns
Alan adınızın e-postasını tek yerden yönetin. Web hosting paketlerimizde e-posta hesapları, SPF, DKIM ve DNS kayıtları panelden düzenlenir.
Hosting paketlerine bakın