Os relatórios agregados do DMARC são arquivos XML que os provedores de caixa de entrada enviam a você, geralmente uma vez por dia, listando todas as fontes que enviaram e-mails afirmando ser o seu domínio e se passaram no SPF, no DKIM e no alinhamento. Lê-los é como você encontra todos os remetentes legítimos, corrige os que falham e descobre quem está falsificando o seu domínio, para poder migrar de p=none para p=reject sem bloquear e-mails reais.
Comece aqui. Este guia pressupõe que você já publica um registro DMARC. Se não publica, siga primeiro o guia para autenticar um domínio de envio e volte aqui quando os relatórios começarem a chegar.
Resumo rápido
- Peça os relatórios. Adicione um endereço rua ao seu registro DMARC enquanto a política for p=none.
- Espere e colete. Reúna de duas a quatro semanas de relatórios, incluindo qualquer envio mensal.
- Classifique as fontes. Marque cada IP de origem como legítimo e alinhado, legítimo mas com falhas, ou desconhecido.
- Corrija o que falha. Dê a cada serviço legítimo uma assinatura DKIM ou um Return-Path alinhado.
- Aplique em etapas. Quarantine com uma porcentagem baixa, aumente e depois migre para reject.
O registro DMARC que solicita relatórios
_dmarc.example.com. 3600 IN TXT "v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com; adkim=r; aspf=r"
| Tag | Significado |
|---|---|
p | Política para e-mails que falham: none (monitorar), quarantine ou reject |
rua | Para onde enviar os relatórios agregados, como um ou mais endereços mailto: |
adkim, aspf | Modo de alinhamento: r para relaxado (um subdomínio pode corresponder), s para estrito (correspondência exata) |
sp | Política para subdomínios, se for diferente de p |
pct | Porcentagem dos e-mails que falham à qual a política se aplica |
Use uma caixa de entrada dedicada. Os relatórios são numerosos e grandes. Envie-os para um endereço dedicado ou para um serviço de processamento de relatórios, não para uma pessoa.
Enviando relatórios para outro domínio
Se o endereço rua estiver em um domínio diferente daquele sobre o qual se reporta, esse outro domínio precisa publicar um registro que o autorize. Caso contrário, os provedores não enviarão relatórios. Para relatórios sobre example.com indo para reports.example.net:
example.com._report._dmarc.reports.example.net. 3600 IN TXT "v=DMARC1"
O que há dentro de um relatório
Os relatórios chegam como anexo, geralmente compactados em gzip ou zip. Ao abrir um, você encontrará três partes: informações sobre o remetente do relatório, a política que o provedor encontrou e uma lista de linhas, uma para cada combinação de IP de origem e resultado.
<feedback>
<report_metadata>
<org_name>google.com</org_name>
<report_id>1234567890</report_id>
<date_range><begin>1759708800</begin><end>1759795199</end></date_range>
</report_metadata>
<policy_published>
<domain>example.com</domain><adkim>r</adkim><aspf>r</aspf><p>none</p><pct>100</pct>
</policy_published>
<record>
<row>
<source_ip>203.0.113.10</source_ip>
<count>1250</count>
<policy_evaluated><disposition>none</disposition><dkim>pass</dkim><spf>pass</spf></policy_evaluated>
</row>
<identifiers><header_from>example.com</header_from></identifiers>
<auth_results>
<dkim><domain>example.com</domain><selector>mail1</selector><result>pass</result></dkim>
<spf><domain>bounce.example.com</domain><result>pass</result></spf>
</auth_results>
</record>
</feedback>
| Campo | O que ele informa |
|---|---|
org_name | Qual provedor de caixa de entrada enviou o relatório |
date_range | O período coberto, como timestamps Unix |
policy_published | A política DMARC que o provedor viu, para você confirmar que o seu registro está ativo |
source_ip e count | O servidor de envio e quantas mensagens ele enviou no período |
policy_evaluated | O resultado que conta para o DMARC: dkim e spf aqui significam aprovação ou falha alinhada |
auth_results | Os resultados brutos de SPF e DKIM e os domínios que eles autenticaram, que podem ser diferentes do domínio do From |
header_from | O domínio no endereço From visível |
Dois resultados diferentes. Dentro de policy_evaluated, pass significa que a verificação passou e está alinhada. Dentro de auth_results, pass significa apenas que a verificação passou para o domínio que ela usou. Uma fonte pode passar em auth_results e falhar em policy_evaluated. Essa diferença é um problema de alinhamento.
Classifique cada fonte em um de três grupos
| Grupo | O que você vê | O que fazer |
|---|---|---|
| Legítima e alinhada | Um serviço conhecido, com DKIM ou SPF alinhado em policy_evaluated | Nada. Mantenha assim |
| Legítima, mas com falhas | Um serviço conhecido cujo auth_results passa, mas cujo policy_evaluated falha | Configure DKIM alinhado ou um Return-Path personalizado para esse serviço |
| Desconhecida | Um IP que você não reconhece, geralmente com muitas falhas | Investigue: um sistema esquecido, um encaminhador ou um falsificador. Não o autorize até saber o que é |
Como identificar uma fonte
- DNS reverso:
dig -x 203.0.113.10 +shortcostuma indicar o nome do provedor. - Domínios de autenticação: os domínios de SPF e DKIM em auth_results geralmente revelam o serviço.
- Seu próprio inventário: liste todas as ferramentas que enviam em nome do seu domínio: plataforma de marketing, helpdesk, CRM, sistema de cobrança, formulários do site, ferramentas de RH e servidores.
- Volume e padrão: uma contagem pequena e constante de um serviço conhecido é normal; um pico repentino de um IP desconhecido é suspeito.
Resuma os relatórios com um script curto
Para uma primeira visão de uma pasta de relatórios descompactados, este script totaliza as mensagens por IP de origem e resultado do DMARC:
import glob
import xml.etree.ElementTree as ET
from collections import defaultdict
totals = defaultdict(int)
for path in glob.glob("reports/*.xml"):
for rec in ET.parse(path).getroot().iter("record"):
row = rec.find("row")
ip = row.findtext("source_ip")
ev = row.find("policy_evaluated")
key = (ip, ev.findtext("dkim"), ev.findtext("spf"))
totals[key] += int(row.findtext("count"))
for (ip, dkim, spf), n in sorted(totals.items(), key=lambda x: -x[1]):
print(f"{ip:18} dkim={dkim:5} spf={spf:5} messages={n}")
Corrigindo falhas de alinhamento
| Padrão no relatório | Causa | Correção |
|---|---|---|
| O SPF passa, o DMARC falha | O SPF autenticou o domínio do provedor, não o seu | Use um Return-Path personalizado no seu próprio domínio |
| O DKIM passa, o DMARC falha | A assinatura usa o domínio do provedor em d= | Assine com o seu próprio domínio: publique o seletor DKIM para esse serviço |
| Ambos falham para um serviço conhecido | O serviço não está configurado para o seu domínio | Conclua a autenticação de domínio dele |
| Falha apenas por meio de um encaminhador | O encaminhamento quebrou o SPF e o DKIM foi alterado | Espere uma pequena cauda. Garanta que o DKIM esteja presente e assine o corpo |
| Falha em um subdomínio | O subdomínio não tem registros próprios | Publique SPF e DKIM para esse subdomínio |
Avance para a aplicação da política em etapas
Quando as fontes legítimas estiverem alinhadas e apenas fontes desconhecidas falharem, aumente a política gradualmente. Espere pelo menos uma semana em cada etapa e leia os relatórios antes de avançar.
| Etapa | Registro | O que faz |
|---|---|---|
| 1 | p=none | Apenas monitora. Coleta relatórios |
| 2 | p=quarantine; pct=10 | Os e-mails que falham em 10 por cento das mensagens vão para o spam |
| 3 | p=quarantine; pct=50 | Metade dos e-mails que falham é colocada em quarentena |
| 4 | p=quarantine | Todos os e-mails que falham são colocados em quarentena |
| 5 | p=reject; pct=25 | Um quarto dos e-mails que falham é rejeitado |
| 6 | p=reject | Todos os e-mails que falham são rejeitados. Mantenha o endereço rua |
Não pare em p=none. Ele atende às regras mínimas do Gmail, do Yahoo e do Outlook.com para remetentes em massa, mas não impede a falsificação. A aplicação da política é o que protege o seu domínio e os seus destinatários.
Continue monitorando depois do p=reject
- Revise semanalmente no início e depois mensalmente. Novas ferramentas que enviam em nome do seu domínio aparecerão como falhas.
- Adicione uma etapa ao onboarding: qualquer novo sistema que envie e-mails em nome do seu domínio é autenticado antes de entrar em produção.
- Proteja domínios estacionados: publique p=reject e um registro SPF vazio nos domínios dos quais você não envia.
- Fique atento à prontidão para o BIMI: uma política DMARC aplicada é pré-requisito se, mais tarde, você quiser que o seu logotipo apareça na caixa de entrada.
Quer uma segunda opinião sobre os seus relatórios? Envie-nos um relatório de exemplo e a lista de serviços que enviam em nome do seu domínio, e ajudaremos você a descobrir o que corrigir.
Leitura complementar e fontes
Perguntas frequentes
O que é um relatório agregado do DMARC?
É um arquivo XML, geralmente compactado, que um provedor de caixa de entrada envia ao endereço rua do seu registro DMARC, normalmente uma vez por dia. Ele resume os e-mails que o provedor viu afirmando ser do seu domínio: o IP de envio, quantas mensagens e se o SPF, o DKIM e o DMARC passaram. Não contém o conteúdo das mensagens.
Por que não estou recebendo relatórios DMARC?
Verifique se o endereço rua está correto e escrito com o prefixo mailto:, se a caixa de entrada aceita anexos grandes e se você esperou pelo menos um dia. Se o endereço de relatórios estiver em outro domínio, esse domínio precisa publicar um registro de autorização. Nem todo provedor envia relatórios, e domínios pequenos podem receber poucos.
Qual é a diferença entre rua e ruf?
A tag rua solicita relatórios agregados, que são resumos. A tag ruf solicita relatórios forenses ou de falha sobre mensagens individuais que falharam. A maioria dos grandes provedores não envia relatórios forenses, porque eles podem conter dados pessoais, então planeje-se em torno dos relatórios agregados.
Posso ler relatórios DMARC sem uma ferramenta?
Sim, para um punhado de arquivos, porque são XML simples. Para qualquer volume maior, use um serviço de processamento de relatórios ou um script curto para totalizar os resultados por fonte, pois até um domínio modesto recebe dezenas de relatórios por dia.
O que significa uma falha de alinhamento?
O DMARC só passa quando o SPF ou o DKIM passa e o domínio que ele autenticou corresponde ao domínio visível no From. Se uma fonte passa no SPF para o domínio do provedor de serviço, mas o seu domínio de From é diferente, o DMARC falha mesmo que o SPF tenha passado. A solução é autenticar com o seu próprio domínio, usando um Return-Path personalizado ou uma assinatura DKIM com o seu domínio.
Por quanto tempo devo ficar em p=none?
Tempo suficiente para ver todos os remetentes legítimos, o que geralmente leva de duas a quatro semanas e deve incluir um ciclo de fim de mês se você envia e-mails mensais, como faturas. Ficar em p=none para sempre não protege nada, então defina uma data para avançar.
O que a tag pct faz?
A tag pct aplica a sua política a apenas uma porcentagem das mensagens que falham, por exemplo pct=25. Ela permite implantar quarantine ou reject gradualmente. O suporte é comum, mas não universal, então trate-a como um controle suave e continue acompanhando os relatórios.
O p=reject vai quebrar meus e-mails?
Ele bloqueará qualquer mensagem que falhe no DMARC, e esse é o objetivo. E-mails legítimos só quebram quando um remetente real não está autenticado e alinhado. Por isso você coleta os relatórios primeiro, corrige todas as fontes legítimas e avança em etapas.
E os e-mails encaminhados e as listas de discussão?
O encaminhamento muitas vezes quebra o SPF porque o encaminhador não está no seu registro, e as listas podem alterar a mensagem e quebrar o DKIM. Um DKIM assinado que sobrevive e os cabeçalhos ARC adicionados pelo encaminhador ajudam os receptores a decidir. Espere uma pequena cauda de falhas por encaminhamento mesmo em uma configuração saudável.
Os subdomínios precisam do próprio registro DMARC?
Um registro DMARC no seu domínio principal também cobre os subdomínios, a menos que você o substitua. A tag sp define uma política para subdomínios, e um registro em um subdomínio substitui ambos. Subdomínios não utilizados são alvo de falsificação, então uma política rigorosa para eles é um ganho rápido.