DMARC (Domain-based Message Authentication, Reporting and Conformance), bir alan adının sahibinin, SPF ve DKIM doğrulamasından geçemeyen ya da görünen gönderici adresiyle hizalanmayan mail için alıcı sunuculara ne yapılacağını (teslim et, karantinaya al, reddet) söylediği ve sonuçların kendisine raporlanmasını istediği DNS kaydıdır. Standart RFC 7489 ile tanımlanır ve _dmarc.<alan-adi> adında bir TXT kaydı olarak yayınlanır.
Bu yazı DMARC'ın neyi çözdüğünü, üç politika arasındaki farkı ve bir alan adını güvenle p=reject seviyesine taşımanın yolunu anlatır.
DMARC hangi sorunu çözer?
Bir mailin iki gönderici adresi vardır: alıcının ekranda gördüğü From başlığı ve sunucuların teslim sırasında kullandığı zarf göndericisi (envelope sender, Return-Path). SPF (RFC 7208) yalnız zarf göndericisinin alan adını kontrol eder; DKIM (RFC 6376) ise imzayı atan alan adını (d=) doğrular. İkisi de kullanıcının gördüğü From adresine bakmaz.
Saldırgan bu boşluğu kullanır: kendi alan adından SPF'yi geçen bir mail gönderir ama From başlığına muhasebe@ornek.com.tr yazar. DMARC burada devreye girer ve şu soruyu sorar: SPF ya da DKIM'den geçen alan adı, From başlığındaki alan adıyla aynı mı? Buna hizalama (alignment) denir. DMARC'tan geçmek için SPF ya da DKIM'den en az birinin hem geçmesi hem de hizalı olması gerekir.
Hizalama iki modda çalışır:
- relaxed (varsayılan,
aspf=r/adkim=r): Alt alan adları eşleşir;bulten.ornek.com.trileornek.com.trhizalı sayılır. - strict (
aspf=s/adkim=s): Alan adlarının birebir aynı olması gerekir.
DMARC kaydı nasıl görünür?
En sade hali:
_dmarc.ornek.com.tr. IN TXT "v=DMARC1; p=none; rua=mailto:dmarc@ornek.com.tr"
Sık kullanılan etiketler:
| Etiket | Anlamı |
|---|---|
v=DMARC1 | Sürüm; kaydın ilk etiketi olmak zorundadır. |
p= | Ana alan adı için politika: none, quarantine ya da reject. |
sp= | Alt alan adları için ayrı politika; yazılmazsa p= geçerlidir. |
rua= | Toplu (aggregate) raporların gönderileceği adres. |
pct= | Politikanın uygulanacağı mail yüzdesi; varsayılan 100. |
adkim= / aspf= | DKIM ve SPF hizalama modu (r ya da s). |
Aynı adda v=DMARC1 ile başlayan ikinci bir kayıt olamaz; iki kayıt bulunan alan adında alıcılar DMARC'ı hiç uygulamaz.
p=none, p=quarantine ve p=reject arasındaki fark nedir?
p=none yalnız gözlem yapar. DMARC'tan geçemeyen mail yine teslim edilir; kazancınız, rua adresine gelen raporlardır. Yeni başlayan bir alan adı için doğru ilk adımdır, ama kalıcı bir durum olarak koruma sağlamaz: sahte mail alıcının gelen kutusuna ulaşmaya devam eder.
p=quarantine alıcıdan, DMARC'tan geçemeyen maili şüpheli saymasını ister. Pratikte bu çoğu zaman gereksiz (spam) klasörü demektir. Sahte mail teslim edilir ama kullanıcının önüne düşmez.
p=reject alıcıdan bu maili teslim sırasında reddetmesini ister. Sahte mail hiç teslim edilmez. Hedeflenen son durum budur.
pct= etiketi politikanın yalnız bir yüzdeye uygulanmasını sağlar. Geçiş sırasında kademeli ilerlemek için kullanılabilir; ancak pct=25 bırakılan bir kayıt, sahte maillerin geri kalanına politikanın hiç uygulanmadığı anlamına gelir.
DMARC raporları (rua) neden önemlidir?
rua adresine alıcı sunuculardan günlük XML raporları gelir. Raporlar, alan adınız adına mail gönderen her IP adresini, gönderim sayısını ve SPF/DKIM/DMARC sonucunu listeler. Bu raporlar olmadan politikayı sıkılaştırmak körlemesine yapılır: unuttuğunuz bir CRM, bülten servisi ya da tarayıcının mail gönderimi p=reject sonrası sessizce durur.
Rapor adresi başka bir alan adındaysa (ör. bir rapor işleme servisi), o alan adının raporları kabul ettiğini bildiren bir kayıt yayınlaması gerekir:
ornek.com.tr._report._dmarc.rapor-servisi.example. IN TXT "v=DMARC1"
p=reject'e güvenle nasıl geçilir?
- SPF ve DKIM'i tamamlayın. Mail gönderen her servis ya SPF'de listelenmeli ya da kendi alan adınızla DKIM imzası atmalıdır. Ayrıntılar için SPF kaydı nasıl yazılır? ve DKIM nedir? yazılarına bakın.
p=noneveruaile başlayın. Raporları en az birkaç hafta okuyun. Tanımadığınız ama meşru bir gönderici görürseniz onu SPF'ye ya da DKIM'e ekleyin.p=quarantineuygulayın. Raporlarda meşru gönderim hatası kalmadığında politikayı yükseltin.p=rejectuygulayın. Birkaç hafta sorunsuz geçerse son adımı atın.- Mail göndermeyen alan adlarını unutmayın. Bu alan adlarında doğrudan
p=rejectkullanılabilir:
ornek.com.tr. IN TXT "v=spf1 -all"
_dmarc.ornek.com.tr. IN TXT "v=DMARC1; p=reject;"
Google ve Yahoo, toplu gönderim yapan alan adlarından DMARC kaydı bekliyor. Kayıt yalnız bir güvenlik önlemi değil, teslim edilebilirlik şartı haline geldi.
Alt alan adları için ne yapılmalı?
DMARC kaydı yalnız ana alan adında (_dmarc.ornek.com.tr) yayınlanır ve alt alan adlarına da uygulanır: kendi DMARC kaydı olmayan fatura.ornek.com.tr için alıcı, ana alan adının kaydına bakar. Alt alan adlarına farklı bir politika uygulamak için sp= etiketi kullanılır.
Saldırganlar çoğu zaman var olmayan alt alan adlarını kullanır (ör. guvenlik.ornek.com.tr). Ana alan adında p=reject olsa bile sp=none yazılmış bir kayıt bu kapıyı açık bırakır. Alt alan adlarından mail göndermiyorsanız sp= yazmayın ya da sp=reject kullanın. Alt alan adından bülten gönderiyorsanız o alt alan adına ayrı bir DMARC kaydı yayınlayıp kendi geçiş sürecini yürütün.
Denetta DMARC'ta neyi kontrol eder?
Denetta'nın Alan Adı ve E-posta Güvenliği modülü, alan adını yalnız herkese açık bilgilerle ve dışarıdan, 31 kuralla denetler. DMARC tarafında ilgili kural kodları şunlardır:
- MAIL-006: DMARC kaydı yok.
- MAIL-007: Politika yalnız izliyor (
p=none). - MAIL-008: Politika maillerin yalnız bir kısmına uygulanıyor (
pct100'den küçük). - MAIL-009: Rapor adresi (
rua) tanımlı değil.
DMARC zorlamada değilken SPF'nin ~all ile bitmesi de ayrıca değerlendirilir (MAIL-004): ~all ancak DMARC quarantine ya da reject seviyesindeyse sonuç doğurur.
Her bulgu, alan adının DNS barındırma sağlayıcısına göre yazılmış bir düzeltme metniyle gelir. Metin yalnız gösterilir; Denetta hiçbir DNS kaydını değiştirmez. Kararı ve değişikliği siz yaparsınız.
Kendi alan adınızın durumunu görmek için alan adı kontrolünü kullanabilirsiniz. Kontrol, alan adınızın sunucularına bağlanmadan yalnız DNS kayıtlarını okur ve 21 kuralla bir ön kontrol puanı üretir. Modülün tamamı için Alan Adı ve E-posta Güvenliği sayfasına bakın.
Sıkça sorulan sorular
DMARC kaydı olmadan SPF ve DKIM yeterli mi?
Hayır. SPF ve DKIM yalnız doğrulama sonucu üretir; sonuç olumsuz olduğunda alıcının ne yapacağını ve size rapor gönderilip gönderilmeyeceğini DMARC belirler. Ayrıca SPF görünen gönderici adresini (From) hiç kontrol etmez; o bağı DMARC hizalaması kurar.
p=none'dan p=reject'e ne kadar sürede geçilmeli?
Sabit bir süre yoktur. Toplu raporlarda mail gönderen tüm meşru servisler SPF ya da DKIM ile hizalı geçene kadar p=none kalır; ardından p=quarantine, birkaç hafta sorunsuz geçerse p=reject uygulanır.
Mail göndermeyen bir alan adına DMARC gerekir mi?
Evet. Mail göndermeyen alan adları sahte gönderimde sık kullanılır. Bu alan adlarında v=spf1 -all SPF kaydı ve v=DMARC1; p=reject; DMARC kaydı yayınlamak sahte gönderimi kapatır.
rua adresi başka bir alan adında olabilir mi?
Olabilir, ama o alan adının raporları kabul ettiğini bir DNS kaydıyla bildirmesi gerekir (RFC 7489, bölüm 7.1). Rapor işleyen bir servis kullanıyorsanız bu kaydı genellikle servis yayınlar.