DMARC’ı izleme modunda yayınla
From adresindeki alan adında _dmarc altına tek bir TXT kaydı ekle. p=none teslimatı değiştirmez; rua ise alıcılardan, alan adın adına hangi sunucuların e-posta gönderdiğini ve bunların SPF veya DKIM’den hizalı olarak geçip geçmediğini gösteren toplu raporlar ister. Raporlar başka bir alan adına gidiyorsa o alan adı, raporları yetkilendiren bir kayıt yayınlamalıdır.
; DMARC record for example.com, monitoring only
_dmarc.example.com. TXT "v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com"
; Only if rua points to another domain, for example rua=mailto:reports@example.net,
; example.net publishes:
example.com._report._dmarc.example.net. TXT "v=DMARC1"
Önce quarantine’e, sonra reject’e geç
Raporlar tüm meşru kaynakların geçtiğini gösterdiğinde p=quarantine’e geç, raporları yeniden izle, ardından p=reject’e geç. RFC 7489, politikayı başarısız e-postaların bir kısmına uygulamak için pct sunuyordu. Onun yerini alan RFC 9989, kısmi değerler tutarsız uygulandığı için pct’yi kaldırır ve alıcılardan yayınlanan politikanın bir alt seviyesini uygulamalarını isteyen t=y’yi ekler. RFC 7489’u izleyen alıcılar t=y’yi yok sayar; bu yüzden test sırasında pct=0 da ekle; bu, onlardan aynı şekilde bir alt seviyeyi uygulamalarını ister. Politikayı tam uygulamak için iki etiketi de kaldır.
; Publish one version at a time, in this order, after p=none
; 1. Quarantine in test mode (t=y, plus pct=0 for RFC 7489 receivers), then in full
_dmarc.example.com. TXT "v=DMARC1; p=quarantine; t=y; pct=0; rua=mailto:dmarc-reports@example.com"
_dmarc.example.com. TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@example.com"
; 2. Reject in test mode, then in full
_dmarc.example.com. TXT "v=DMARC1; p=reject; t=y; pct=0; rua=mailto:dmarc-reports@example.com"
_dmarc.example.com. TXT "v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.com"
Her alan adında tek SPF kaydı tut
Bir ad, v=spf1 ile başlayan yalnızca bir TXT kaydı taşıyabilir; iki kayıt SPF’nin kalıcı hatayla başarısız olmasına yol açar. Tüm göndericileri tek kayıtta birleştir. include: bir sağlayıcının kendi kaydını kontrol eder, redirect= ise tüm politikayı başka bir alan adına devreder; bu, birkaç alan adı aynı politikayı paylaştığında işe yarar. Kayıtta bir all terimi de varsa redirect= yok sayılır.
; Before: two SPF records on one name (permerror)
example.com. TXT "v=spf1 include:_spf.mailhost.example ~all"
example.com. TXT "v=spf1 include:spf.newsletter.example ~all"
; After: one record
example.com. TXT "v=spf1 include:_spf.mailhost.example include:spf.newsletter.example ~all"
; Another domain that uses the same policy
example.org. TXT "v=spf1 redirect=example.com"
On DNS sorgusu sınırında kal
SPF, DNS sorgusu gerektiren en fazla on terime izin verir ve iç içe her include bu sayıya dahildir: include, a, mx, ptr, exists ve redirect. Bir fazlası SPF’nin kalıcı hatayla başarısız olmasına yol açar. Artık kullanmadığın servislerin include’larını kaldır, a ve mx yerine kontrol ettiğin ip4 veya ip6 aralıklarını yaz, ptr’yi çıkar ve toplu gönderim yapan bir servisi kendi SPF kaydı olan bir alt alan adına taşı. Bir sağlayıcının adreslerini kaydına kopyalamak da sorgu tasarrufu sağlar, ancak sağlayıcı adreslerini değiştirdiğinde kopya eskir. Bu kontrol yalnızca üst düzey terimleri sayar.
; One lookup each: include, a, mx, ptr, exists, redirect (plus every lookup inside an include)
; No lookup: ip4, ip6, all
; Before: 4 lookups in the top-level record alone
example.com. TXT "v=spf1 a mx include:_spf.mailhost.example include:spf.oldtool.example ~all"
; After: fixed address, unused service removed, bulk mail on its own subdomain
example.com. TXT "v=spf1 ip4:192.0.2.10 include:_spf.mailhost.example ~all"
news.example.com. TXT "v=spf1 include:spf.newsletter.example ~all"
~all ile -all arasında dikkatle seç
Kaydı ~all (softfail) veya -all (fail) ile bitir; herhangi bir sunucunun geçmesine izin veren +all ile asla bitirme. -all daha katı bir sinyaldir, ancak SPF’yi erken kontrol eden bir alıcı bu durumda iletilmiş bir e-postayı, DMARC geçerli DKIM imzasını görmeden reddedebilir. Uygulanan bir DMARC politikası varken ~all kararı DMARC’a bırakır. Hiç e-posta göndermeyen bir alan adı v=spf1 -all yayınlayabilir.
; Choose one ending for example.com, not both
example.com. TXT "v=spf1 include:_spf.mailhost.example ~all"
example.com. TXT "v=spf1 include:_spf.mailhost.example -all"
; A domain that sends no mail
example.net. TXT "v=spf1 -all"
DKIM’i From alan adınla hizala
DMARC, SPF veya DKIM From adresiyle hizalı bir alan adı için geçtiğinde geçer. Birçok servis varsayılan olarak kendi alan adıyla imzalar; bu DKIM’den geçer ama hizalamadan geçmez. Her serviste kendi alan adınla imzalamayı aç, böylece imza d=example.com taşır, ve servisin verdiği anahtarı veya CNAME’i seçicisinin altında yayınla. Varsayılan olan gevşek hizalama, aynı kurumsal alan adının her alt alan adını kabul eder; adkim=s ve aspf=s birebir eşleşme ister.
; Key for a sending service, selector s1: a CNAME or a TXT record, as the service says
s1._domainkey.example.com. CNAME s1.dkim.mailhost.example.
s1._domainkey.example.com. TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOC..."
; Aligned signature in a delivered message: d= matches the From domain
From: news@example.com
DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=s1; ...
Bir DNS değişikliğinin her çözümleyiciye ulaşması eski kaydın TTL süresi kadar sürebilir. Ardından kontrolü From adresindeki alan adı için yeniden çalıştır, çünkü kontrol girdiğin ana makine adının tam kendisini okur.