Relatórios DMARC
Consulte os relatórios DMARC agregados e forenses de um domínio de envio ou envie os seus próprios.
- GET/domains/{id}/dmarc/reports
- GET/domains/{id}/dmarc/reports/{report_id}
- POST/domains/{id}/dmarc/reports
- GET/domains/{id}/dmarc/forensic
- GET/domains/{id}/dmarc/forensic/{report_id}
- GET/domains/{id}/dmarc/stats
- GET/domains/{id}/dmarc/sources
- GET/domains/{id}/dmarc/countries
- GET/domains/{id}/dmarc/asns
- GET/domains/{id}/dmarc/reporters
Listar relatórios agregados
Retorna os relatórios DMARC de um domínio de envio, dos mais recentes para os mais antigos. Requer uma chave de API com escopo full.
O Emailit só coleta relatórios para domínios com os relatórios DMARC ativados (dmarc_reports: true em Atualizar um domínio), o que exige o plano Pro ou superior. Consulte Relatórios DMARC.
A listagem também inclui relatórios forenses. Passe type=aggregate para listar apenas os relatórios agregados ou use Listar relatórios forenses para os detalhes forenses.
/domains/{id}/dmarc/reportsParâmetros de caminho
idstringobrigatóriodom_…) ou o nome do domínio, por exemplo acme.com.Parâmetros de consulta
typestringaggregate ou forensic.statusstringpending, processed, failed ou duplicate.org_namestringgoogle.com.fromstring2026-09-01.tostringlimitintegerpadrão: 25offsetintegerpadrão: 0matchstringall (padrão) exige todos os filtros. or corresponde a qualquer filtro. Consulte Filtragem.
orderstringChave de ordenação desta lista. Consulte as chaves de ordenação abaixo.
directionstringasc ou desc.
Os filtros genéricos key.condition=value também funcionam em type, status, org_name e created_at; essas também são as chaves de ordenação para order. Consulte Filtragem.
Retorno
Retorna data, um array de objetos de relatório, e meta com total, limit e offset.
idstringdmr_.typestring | nullaggregate ou forensic. null até que um relatório enviado seja processado.sourcestringsmtp para relatórios que o Emailit recebeu no endereço de relatórios do domínio, upload para relatórios que você enviou.statusstringpending, processed, failed (consulte error_message) ou duplicate (o mesmo relatório já foi processado).org_name, org_emailstring | nullexternal_report_idstring | nulldate_range_begin, date_range_endstring | nullpolicy_domain, adkim, aspf, p, sp, pct, fostring | integer | nullr ou s), política e política de subdomínio (none, quarantine, reject), porcentagem e opções de relatório de falhas.original_filenamestring | nullenvelope_tostring | nullcreated_at, updated_at, processed_atstring | nullRetorna 404 se o domínio não existir no workspace.
{
"data": [
{
"object": "dmarc_report",
"id": "dmr_3Xu63kEs8KCiyOZ1TDgnttppitx",
"type": "aggregate",
"source": "smtp",
"status": "processed",
"org_name": "google.com",
"org_email": "noreply-dmarc-support@google.com",
"external_report_id": "4129847120347812934",
"date_range_begin": "2026-09-29 00:00:00+00",
"date_range_end": "2026-09-29 23:59:59+00",
"policy_domain": "acme.com",
"adkim": "r",
"aspf": "r",
"p": "none",
"sp": "none",
"pct": 100,
"fo": null,
"original_filename": null,
"error_message": null,
"envelope_to": "k2v9x4qa7m@dmarc.emailitmail.com",
"created_at": "2026-09-30 04:12:09.214377+00",
"updated_at": "2026-09-30 04:12:11.902154+00",
"processed_at": "2026-09-30 04:12:11.902154+00"
}
],
"meta": { "total": 1, "limit": 50, "offset": 0 }
}{
"error": "Domain not found"
}Obter um relatório
Obtém um relatório DMARC. Para um relatório agregado, a resposta inclui os registros dele, um por fonte de envio, ordenados pela contagem de mensagens. Para um relatório forense, inclui a amostra da falha em forensic. Requer uma chave de API com escopo full.
Os relatórios só chegam para domínios com os relatórios DMARC ativados, o que exige o plano Pro ou superior.
/domains/{id}/dmarc/reports/{report_id}Parâmetros de caminho
idstringobrigatóriodom_…) ou o nome do domínio.report_idstringobrigatóriodmr_…).Parâmetros de consulta
limitintegerpadrão: 100offsetintegerpadrão: 0Retorno
Retorna o objeto de relatório (consulte Listar relatórios agregados), além de:
recordsobject[]metaobjecttotal de registros, limit e offset.forensicobject | nullCada registro tem:
source_ipstringcountintegercountry_code, country_name, continent_code, asn, as_org, latitude, longitudestring | integer | number | nullnull quando o IP não pôde ser localizado.dispositionstringnone, quarantine ou reject.dkim, spfstringpass ou fail.header_from, envelope_from, envelope_tostring | nulldkim_domain, dkim_selector, dkim_resultstring | nullspf_domain, spf_resultstring | nullreason_type, reason_commentstring | nullforwarded ou mailing_list.Retorna 404 se o domínio ou o relatório não existir.
{
"object": "dmarc_report",
"id": "dmr_3Xu63kEs8KCiyOZ1TDgnttppitx",
"type": "aggregate",
"source": "smtp",
"status": "processed",
"org_name": "google.com",
"org_email": "noreply-dmarc-support@google.com",
"external_report_id": "4129847120347812934",
"date_range_begin": "2026-09-29 00:00:00+00",
"date_range_end": "2026-09-29 23:59:59+00",
"policy_domain": "acme.com",
"adkim": "r",
"aspf": "r",
"p": "none",
"sp": "none",
"pct": 100,
"fo": null,
"original_filename": null,
"error_message": null,
"envelope_to": "k2v9x4qa7m@dmarc.emailitmail.com",
"created_at": "2026-09-30 04:12:09.214377+00",
"updated_at": "2026-09-30 04:12:11.902154+00",
"processed_at": "2026-09-30 04:12:11.902154+00",
"records": [
{
"object": "dmarc_report_record",
"source_ip": "198.51.100.24",
"count": 1840,
"country_code": "US",
"country_name": "United States",
"continent_code": "NA",
"asn": 64500,
"as_org": "Example Hosting",
"latitude": 37.751,
"longitude": -97.822,
"disposition": "none",
"dkim": "pass",
"spf": "pass",
"header_from": "acme.com",
"envelope_from": "emailit.acme.com",
"envelope_to": null,
"dkim_domain": "acme.com",
"dkim_selector": "emailit",
"dkim_result": "pass",
"spf_domain": "emailit.acme.com",
"spf_result": "pass",
"reason_type": null,
"reason_comment": null
},
{
"object": "dmarc_report_record",
"source_ip": "203.0.113.77",
"count": 12,
"country_code": "NL",
"country_name": "Netherlands",
"continent_code": "EU",
"asn": 64511,
"as_org": "Example Networks",
"latitude": 52.3824,
"longitude": 4.8995,
"disposition": "none",
"dkim": "fail",
"spf": "fail",
"header_from": "acme.com",
"envelope_from": "acme.com",
"envelope_to": null,
"dkim_domain": null,
"dkim_selector": null,
"dkim_result": null,
"spf_domain": "acme.com",
"spf_result": "softfail",
"reason_type": null,
"reason_comment": null
}
],
"meta": { "total": 2, "limit": 100, "offset": 0 }
}{
"error": "Report not found"
}Enviar um relatório
Envia um relatório DMARC que você recebeu em outro lugar, por exemplo em uma caixa de e-mail que você usava antes do Emailit. Requer uma chave de API com escopo full.
O Emailit armazena o arquivo e o processa em segundo plano: a resposta tem o status pending, e o relatório passa para processed, failed ou duplicate (já importado) pouco depois. Confira com Obter um relatório. Os relatórios que o Emailit recebe por e-mail exigem os relatórios DMARC ativados no domínio (plano Pro ou superior); os relatórios enviados pela API são processados de qualquer forma.
/domains/{id}/dmarc/reportsParâmetros de caminho
idstringobrigatóriodom_…) ou o nome do domínio.Parâmetros do corpo
Envie exatamente um destes: content_base64 ou content. O relatório decodificado pode ter até 10 MB.
content_base64string.xml, .xml.gz ou .zip, e relatórios forenses como .eml (AFRF).contentstringfilenamestringoriginal_filename.Retorno
Retorna 202 Accepted com o novo objeto de relatório. type é null até que o processamento o detecte.
| Status | Quando |
|---|---|
400 |
Nem content_base64 nem content foi definido, ou o valor está vazio. |
404 |
O domínio não existe no workspace. |
413 |
O relatório decodificado tem mais de 10 MB. |
{
"object": "dmarc_report",
"id": "dmr_3MjUXgcEBO0o7FkzeBdlrCY6NYk",
"type": null,
"source": "upload",
"status": "pending",
"org_name": null,
"org_email": null,
"external_report_id": null,
"date_range_begin": null,
"date_range_end": null,
"policy_domain": null,
"adkim": null,
"aspf": null,
"p": null,
"sp": null,
"pct": null,
"fo": null,
"original_filename": "google-acme.com-2026-09-29.xml.gz",
"error_message": null,
"envelope_to": null,
"created_at": "2026-10-01 12:03:55.607+00",
"updated_at": "2026-10-01 12:03:55.607+00",
"processed_at": null
}{
"error": "content_base64 or content is required"
}{
"error": "Report exceeds maximum size of 10485760 bytes"
}Listar relatórios forenses
Retorna os relatórios forenses (RUF) processados de um domínio, dos mais recentes para os mais antigos. Cada um descreve uma mensagem que falhou no DMARC. Os cabeçalhos ficam fora da listagem; obtenha um relatório forense para vê-los. Requer uma chave de API com escopo full.
Os relatórios só chegam para domínios com os relatórios DMARC ativados, o que exige o plano Pro ou superior. Poucos provedores de e-mail enviam relatórios forenses, e os que enviam podem incluir dados pessoais da mensagem que falhou.
/domains/{id}/dmarc/forensicParâmetros de caminho
idstringobrigatóriodom_…) ou o nome do domínio.Parâmetros de consulta
fromstringtostringlimitintegerpadrão: 25offsetintegerpadrão: 0Os filtros genéricos key.condition=value também funcionam em org_name e created_at, com match, order e direction. Consulte Filtragem.
Retorno
Retorna data e meta (total, limit, offset). Cada item tem:
objectstringdmarc_forensic_report.id, report_idstringdmr_…).arrival_datestring | nullsource_ipstring | nullcountry_code, country_name, continent_code, asn, as_org, latitude, longitudestring | integer | number | nullauth_failurestring | nulldmarc, spf ou dkim.authentication_resultsstring | nullAuthentication-Results do servidor de destino.original_mail_from, original_rcpt_to, subjectstring | nulldelivery_resultstring | nullreject ou delivered.reported_domainstring | nullcreated_atstring | null{
"data": [
{
"object": "dmarc_forensic_report",
"id": "dmr_3MjUXgcEBO0o7FkzeBdlrCY6NYk",
"report_id": "dmr_3MjUXgcEBO0o7FkzeBdlrCY6NYk",
"arrival_date": "2026-09-28 17:44:02+00",
"source_ip": "203.0.113.77",
"country_code": "NL",
"country_name": "Netherlands",
"continent_code": "EU",
"asn": 64511,
"as_org": "Example Networks",
"latitude": 52.3824,
"longitude": 4.8995,
"auth_failure": "dmarc",
"authentication_results": "mx.example.net; dmarc=fail (p=none) header.from=acme.com; spf=softfail smtp.mailfrom=acme.com; dkim=none",
"original_mail_from": "billing@acme.com",
"original_rcpt_to": "ada@example.net",
"subject": "Your invoice is ready",
"delivery_result": "delivered",
"reported_domain": "acme.com",
"created_at": "2026-09-28 18:02:16.448210+00"
}
],
"meta": { "total": 1, "limit": 25, "offset": 0 }
}{
"error": "Domain not found"
}Obter um relatório forense
Obtém um relatório forense (RUF) com os cabeçalhos da mensagem que falhou no DMARC. Requer uma chave de API com escopo full. Os relatórios forenses podem conter dados pessoais, como endereços de destinatários e assuntos.
Os relatórios só chegam para domínios com os relatórios DMARC ativados, o que exige o plano Pro ou superior.
/domains/{id}/dmarc/forensic/{report_id}Parâmetros de caminho
idstringobrigatóriodom_…) ou o nome do domínio.report_idstringobrigatóriodmr_…) de um relatório forense.Retorno
Retorna o relatório forense com os campos descritos em Listar relatórios forenses, além de:
headersstring | nullRetorna 404 se o domínio não existir, se o relatório não existir ou se ele não for um relatório forense processado.
{
"object": "dmarc_forensic_report",
"id": "dmr_3MjUXgcEBO0o7FkzeBdlrCY6NYk",
"report_id": "dmr_3MjUXgcEBO0o7FkzeBdlrCY6NYk",
"arrival_date": "2026-09-28 17:44:02+00",
"source_ip": "203.0.113.77",
"country_code": "NL",
"country_name": "Netherlands",
"continent_code": "EU",
"asn": 64511,
"as_org": "Example Networks",
"latitude": 52.3824,
"longitude": 4.8995,
"auth_failure": "dmarc",
"authentication_results": "mx.example.net; dmarc=fail (p=none) header.from=acme.com; spf=softfail smtp.mailfrom=acme.com; dkim=none",
"original_mail_from": "billing@acme.com",
"original_rcpt_to": "ada@example.net",
"subject": "Your invoice is ready",
"delivery_result": "delivered",
"reported_domain": "acme.com",
"headers": "From: Acme Billing <billing@acme.com>\r\nTo: ada@example.net\r\nSubject: Your invoice is ready\r\nDate: Mon, 28 Sep 2026 17:43:58 +0000\r\nMessage-ID: <20260928174358.4f1c@mail.acme.com>",
"created_at": "2026-09-28 18:02:16.448210+00"
}{
"error": "Forensic report not found"
}Obter estatísticas
Resume os relatórios DMARC agregados de um domínio em um intervalo de datas: quantos e-mails do seu domínio os servidores de destino viram, quantos passaram e de onde vieram. São os dados por trás da aba Overview em Email APIDMARC reports. Requer uma chave de API com escopo full.
Os relatórios só chegam para domínios com os relatórios DMARC ativados (dmarc_reports: true em Atualizar um domínio), o que exige o plano Pro ou superior.
/domains/{id}/dmarc/statsParâmetros de caminho
idstringobrigatóriodom_…) ou o nome do domínio.Parâmetros de consulta
fromstring2026-09-01. Sem ele, todos os relatórios são contados.tostringRetorno
Retorna data com estes campos. Uma mensagem conta como aprovada quando o resultado do DKIM ou do SPF alinhado ao DMARC é pass.
total_volumeintegerpass_volume, fail_volumeintegerpass_ratenumber0 quando não há volume.report_countintegerdispositionsobject[]disposition (none, quarantine, reject) e volume.dkim, spfobject[]result (pass ou fail) e volume.dailyobject[]date no formato YYYY-MM-DD, UTC) com volume, pass_volume e fail_volume.daily_dispositions, daily_dkim, daily_spfobject[]date, disposition ou result, e volume.top_countriesobject[]country_code, country_name, volume, pass_volume, fail_volume.top_asnsobject[]asn, as_org, volume, pass_volume, fail_volume.unknown_geo_volumeintegerRetorna 404 se o domínio não existir no workspace.
{
"data": {
"total_volume": 3712,
"pass_volume": 3688,
"fail_volume": 24,
"pass_rate": 99.35,
"report_count": 6,
"dispositions": [
{ "disposition": "none", "volume": 3712 }
],
"dkim": [
{ "result": "pass", "volume": 3680 },
{ "result": "fail", "volume": 32 }
],
"spf": [
{ "result": "pass", "volume": 3676 },
{ "result": "fail", "volume": 36 }
],
"daily": [
{ "date": "2026-09-28", "volume": 1860, "pass_volume": 1848, "fail_volume": 12 },
{ "date": "2026-09-29", "volume": 1852, "pass_volume": 1840, "fail_volume": 12 }
],
"daily_dispositions": [
{ "date": "2026-09-28", "disposition": "none", "volume": 1860 },
{ "date": "2026-09-29", "disposition": "none", "volume": 1852 }
],
"daily_dkim": [
{ "date": "2026-09-28", "result": "pass", "volume": 1844 },
{ "date": "2026-09-28", "result": "fail", "volume": 16 },
{ "date": "2026-09-29", "result": "pass", "volume": 1836 },
{ "date": "2026-09-29", "result": "fail", "volume": 16 }
],
"daily_spf": [
{ "date": "2026-09-28", "result": "pass", "volume": 1842 },
{ "date": "2026-09-28", "result": "fail", "volume": 18 },
{ "date": "2026-09-29", "result": "pass", "volume": 1834 },
{ "date": "2026-09-29", "result": "fail", "volume": 18 }
],
"top_countries": [
{ "country_code": "US", "country_name": "United States", "volume": 3688, "pass_volume": 3688, "fail_volume": 0 },
{ "country_code": "NL", "country_name": "Netherlands", "volume": 24, "pass_volume": 0, "fail_volume": 24 }
],
"top_asns": [
{ "asn": 64500, "as_org": "Example Hosting", "volume": 3688, "pass_volume": 3688, "fail_volume": 0 },
{ "asn": 64511, "as_org": "Example Networks", "volume": 24, "pass_volume": 0, "fail_volume": 24 }
],
"unknown_geo_volume": 0
}
}{
"error": "Domain not found"
}Listar fontes de envio
Agrupa os dados DMARC agregados de um domínio pelo endereço IP de origem, do maior volume para o menor. Use-o para identificar servidores que enviam como o seu domínio, mas falham no SPF e no DKIM. Requer uma chave de API com escopo full.
Os relatórios só chegam para domínios com os relatórios DMARC ativados, o que exige o plano Pro ou superior.
/domains/{id}/dmarc/sourcesParâmetros de caminho
idstringobrigatóriodom_…) ou o nome do domínio.Parâmetros de consulta
fromstringtostringlimitintegerpadrão: 50offsetintegerpadrão: 0Retorno
Retorna data e meta (limit, offset). A resposta não tem total; peça a próxima página até que data tenha menos itens que limit. Cada fonte tem:
source_ipstringcountry_code, country_namestring | nullasn, as_orginteger | string | nullvolumeintegerpass_volume, fail_volumeintegerRetorna 404 se o domínio não existir no workspace.
{
"data": [
{
"source_ip": "198.51.100.24",
"country_code": "US",
"country_name": "United States",
"asn": 64500,
"as_org": "Example Hosting",
"volume": 3688,
"pass_volume": 3688,
"fail_volume": 0
},
{
"source_ip": "203.0.113.77",
"country_code": "NL",
"country_name": "Netherlands",
"asn": 64511,
"as_org": "Example Networks",
"volume": 24,
"pass_volume": 0,
"fail_volume": 24
}
],
"meta": { "limit": 50, "offset": 0 }
}{
"error": "Domain not found"
}Listar países
Agrupa os dados DMARC agregados de um domínio pelo país do IP de envio, do maior volume para o menor. Requer uma chave de API com escopo full.
Os relatórios só chegam para domínios com os relatórios DMARC ativados, o que exige o plano Pro ou superior.
/domains/{id}/dmarc/countriesParâmetros de caminho
idstringobrigatóriodom_…) ou o nome do domínio.Parâmetros de consulta
fromstringtostringlimitintegerpadrão: 50offsetintegerpadrão: 0Retorno
Retorna data e meta (limit, offset). Cada país tem:
country_codestring | nullnull agrupa os endereços IP que não puderam ser localizados.country_namestring | nullcontinent_codestring | nullEU.volumeintegerpass_volume, fail_volumeintegerRetorna 404 se o domínio não existir no workspace.
{
"data": [
{
"country_code": "US",
"country_name": "United States",
"continent_code": "NA",
"volume": 3688,
"pass_volume": 3688,
"fail_volume": 0
},
{
"country_code": "NL",
"country_name": "Netherlands",
"continent_code": "EU",
"volume": 24,
"pass_volume": 0,
"fail_volume": 24
}
],
"meta": { "limit": 50, "offset": 0 }
}{
"error": "Domain not found"
}Listar redes (ASNs)
Agrupa os dados DMARC agregados de um domínio pelo sistema autônomo (ASN) do IP de envio, do maior volume para o menor. Uma rede normalmente corresponde a um provedor de hospedagem ou a um serviço de e-mail, o que facilita reconhecer os remetentes legítimos. Requer uma chave de API com escopo full.
Os relatórios só chegam para domínios com os relatórios DMARC ativados, o que exige o plano Pro ou superior.
/domains/{id}/dmarc/asnsParâmetros de caminho
idstringobrigatóriodom_…) ou o nome do domínio.Parâmetros de consulta
fromstringtostringlimitintegerpadrão: 50offsetintegerpadrão: 0Retorno
Retorna data e meta (limit, offset). Cada rede tem:
asninteger | nullnull agrupa os endereços IP que não puderam ser consultados.as_orgstring | nullvolumeintegerpass_volume, fail_volumeintegerRetorna 404 se o domínio não existir no workspace.
{
"data": [
{
"asn": 64500,
"as_org": "Example Hosting",
"volume": 3688,
"pass_volume": 3688,
"fail_volume": 0
},
{
"asn": 64511,
"as_org": "Example Networks",
"volume": 24,
"pass_volume": 0,
"fail_volume": 24
}
],
"meta": { "limit": 50, "offset": 0 }
}{
"error": "Domain not found"
}Listar emissores
Lista as organizações que enviaram relatórios agregados processados de um domínio, das que enviaram mais relatórios para as que enviaram menos. Requer uma chave de API com escopo full.
Os relatórios só chegam para domínios com os relatórios DMARC ativados, o que exige o plano Pro ou superior.
/domains/{id}/dmarc/reportersParâmetros de caminho
idstringobrigatóriodom_…) ou o nome do domínio.Parâmetros de consulta
fromstringtostringlimitintegerpadrão: 50offsetintegerpadrão: 0Retorno
Retorna data e meta (limit, offset). Cada emissor tem:
org_namestring | nullgoogle.com. Passe-o como org_name para Listar relatórios agregados para ver os relatórios dela.org_emailstring | nullreport_countintegerRetorna 404 se o domínio não existir no workspace.
{
"data": [
{ "org_name": "google.com", "org_email": "noreply-dmarc-support@google.com", "report_count": 30 },
{ "org_name": "Enterprise Outlook", "org_email": "dmarcreport@microsoft.com", "report_count": 28 },
{ "org_name": "Yahoo", "org_email": "dmarchelp@yahooinc.com", "report_count": 14 }
],
"meta": { "limit": 50, "offset": 0 }
}{
"error": "Domain not found"
}