Publique o DMARC em modo de monitoramento
Adicione um único registro TXT em _dmarc do domínio do seu endereço From. p=none não muda a entrega, e rua pede aos destinatários relatórios agregados que mostram quais servidores enviam e-mails em nome do seu domínio e se passam no SPF ou no DKIM com alinhamento. Se os relatórios forem para outro domínio, esse domínio precisa publicar um registro que os autorize.
; 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"
Passe para quarantine e depois para reject
Quando os relatórios mostrarem que todas as fontes legítimas passam, mude para p=quarantine, acompanhe os relatórios de novo e depois passe para p=reject. A RFC 7489 oferecia pct para aplicar a política a uma parte dos e-mails que falham. A RFC 9989, que a substitui, remove o pct porque valores parciais eram aplicados de forma desigual, e adiciona t=y, que pede aos destinatários que apliquem um nível abaixo da política publicada. Destinatários que ainda seguem a RFC 7489 ignoram t=y; por isso, adicione também pct=0 durante o teste, o que pede a eles o mesmo tratamento um nível abaixo. Remova as duas tags para aplicar a política.
; 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"
Um único registro SPF por domínio
Um nome só pode ter um registro TXT que começa com v=spf1; com dois, o SPF falha com um erro permanente. Junte todos os remetentes em um único registro. include: consulta o registro próprio de um provedor, e redirect= entrega a política inteira a outro domínio, o que ajuda quando vários domínios compartilham uma política. redirect= é ignorado se o registro também tiver um termo all.
; 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"
No máximo dez consultas DNS
O SPF permite no máximo dez termos que exigem uma consulta DNS, contando cada include aninhado: include, a, mx, ptr, exists e redirect. Um a mais e o SPF falha com um erro permanente. Remova os include de serviços que você não usa mais, troque a e mx por faixas ip4 ou ip6 que você controla, elimine ptr e leve um remetente em massa para um subdomínio com o próprio registro SPF. Copiar os endereços de um provedor para o seu registro também economiza consultas, mas a cópia fica desatualizada quando o provedor os muda. Este verificador conta apenas os termos do nível superior.
; 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"
Escolha ~all ou -all com cuidado
Termine o registro com ~all (softfail) ou -all (fail), nunca com +all, que deixa qualquer servidor passar. -all é o sinal mais rígido, mas um destinatário que verifica o SPF cedo pode então rejeitar um e-mail encaminhado antes que o DMARC veja a assinatura DKIM válida. Com uma política DMARC aplicada, ~all deixa a decisão para o DMARC. Um domínio que não envia e-mails pode publicar v=spf1 -all.
; 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"
Alinhe o DKIM ao seu domínio From
O DMARC passa quando o SPF ou o DKIM passa para um domínio alinhado com o endereço From. Muitos serviços assinam por padrão com o próprio domínio, o que passa no DKIM, mas não no alinhamento. Ative em cada serviço a assinatura com o seu próprio domínio, para que ela traga d=example.com, e publique a chave ou o CNAME que o serviço indicar sob o seletor dele. O alinhamento relaxado, o padrão, aceita qualquer subdomínio do mesmo domínio organizacional; adkim=s e aspf=s exigem correspondência exata.
; 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; ...
Uma mudança de DNS pode levar o tempo do TTL do registro antigo para chegar a todos os resolvedores. Depois execute o verificador de novo no domínio do seu endereço From, porque ele lê exatamente o nome de host informado.