Files
parsedmarc/docs/source/kibana.md
T
a5a5b45a50 Unify DMARC pass/fail chart naming on "DMARC compliance" (#865)
* Unify DMARC pass/fail chart naming on "DMARC compliance"

The same metric had three names across the dashboards: the pass/fail
pie chart was "Passed DMARC" (OpenSearch, Splunk) and "DMARC Passage"
(Grafana), while the per-domain table column added in #834 was
"% DMARC Compliant". Converge on the compliance wording, which already
anchored the "Message volume and DMARC compliance by from domain"
panels in every dashboard family:

- Pie chart: "DMARC compliance" ("DMARC Compliance" in Grafana, which
  title-cases panel names; OpenSearch and Splunk use sentence case).
- Line chart: "DMARC passage over time" -> "DMARC compliance over
  time" everywhere, so the pie rename doesn't leave the same
  inconsistency one panel down.
- Splunk filter dropdown label: "Passed DMARC" -> "DMARC compliant".
- Grafana Guide panel text and docs/source/kibana.md prose updated to
  match, plus a pre-existing typo fix ("pie charts. you").

Field names, tokens, and queries (passed_dmarc / dmarc_passed) are
untouched; only human-facing titles, labels, and prose changed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Fix "pie charts. you" typo in the Grafana Guide panel text

The period-for-comma typo fixed in docs/source/kibana.md also existed
in the Grafana Guide panel markdown, in both duplicated copies of the
guide text (content and options.content). Caught by Copilot review on
PR #865.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Sync the Grafana Guide panel walkthrough with the current panels

The Guide text described a three-column table layout with a from-domain
list "on the right" and directed readers to a "Message From Header"
table, but the dashboard has two table columns (Reporting Organisations
on the left; Top 2000 Message Sources by Reverse DNS on the right with
Message volume and DMARC compliance by from domain below it) and no
Message From Header table. Point the walkthrough at the real panel
titles and mention the per-domain compliance percentage the table
shows, mirroring the kibana.md walkthrough updated in #834. Both
duplicated copies of the guide markdown (content and options.content)
remain identical.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Scope the CHANGELOG rename claim to dashboards that have the charts

The bullet said the pass/fail charts were renamed "across the ...
Grafana dashboards", but the PostgreSQL Grafana variant has no
pass/fail pie or over-time chart, so the claim quantified over a
dashboard it doesn't apply to. Name the affected dashboards explicitly
and note the PostgreSQL variant is unchanged. Caught by Copilot review
on PR #865.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-26 18:13:06 -04:00

7.0 KiB

Using the Kibana dashboards

The Kibana DMARC dashboards are a human-friendly way to understand the results from incoming DMARC reports.

There is no separate Kibana export — Kibana 8.x's saved-object migration handlers accept the OpenSearch Dashboards format directly, so Kibana users import the bundled dashboards/opensearch/opensearch_dashboards.ndjson in Stack Management → Saved Objects → Import. A CI check imports the same file into a Kibana 8.x container on every change so this stays compatible.

:::{note} The default dashboard is DMARC aggregate reports. To switch between dashboards, click on the Dashboard link on the left side menu of Kibana. :::

DMARC aggregate reports

As the name suggests, this dashboard is the best place to start reviewing your aggregate DMARC data.

Across the top of the dashboard, three pie charts display the percentage of alignment pass/fail for SPF, DKIM, and DMARC. Clicking on any chart segment will filter for that value.

:::{note} Messages should not be considered malicious just because they failed to pass DMARC; especially if you have just started collecting data. It may be a legitimate service that needs SPF and DKIM configured correctly. :::

Start by filtering the results to only show failed DKIM alignment. While DMARC passes if a message passes SPF or DKIM alignment, only DKIM alignment remains valid when a message is forwarded without changing the from address, which is often caused by a mailbox forwarding rule. This is because DKIM signatures are part of the message headers, whereas SPF relies on SMTP session headers.

Underneath the pie charts, you can see graphs of DMARC compliance and message disposition over time.

Under the graphs you will find the most useful data tables on the dashboard. On the left, there is a list of organizations that are sending you DMARC reports. In the center, there is a list of sending servers grouped by the base domain in their reverse DNS. On the right, there is the "Message volume and DMARC compliance by from domain" table, which lists email from domains with their message volume and a percentage of those messages that passed DMARC.

By hovering your mouse over a data table value and using the magnifying glass icons, you can filter on or filter out different values. Start by looking at the Message Sources by Reverse DNS table. Find a sender that you recognize, such as an email marketing service, hover over it, and click on the plus (+) magnifying glass icon, to add a filter that only shows results for that sender. Now, look at the Message volume and DMARC compliance by from domain table to the right. That shows you the domains that a sender is sending as, and what share of that traffic is passing DMARC, which might tell you which brand/business is using a particular service. With that information, you can contact them and have them set up DKIM.

:::{note} The "Message volume and DMARC compliance by from domain" table is a TSVB visualization, used because per-domain compliance percentages require a Filter Ratio metric that agg-based data tables can't compute. It renders correctly on Kibana 8.x as imported, but editing it requires first enabling the metrics:allowStringIndices advanced setting, since it references the dmarc_aggregate* index as a string pattern, which Elastic has deprecated. :::

:::{note} If you have a lot of B2C customers, you may see a high volume of emails as your domains coming from consumer email services, such as Google/Gmail and Yahoo! This occurs when customers have mailbox rules in place that forward emails from an old account to a new account, which is why DKIM authentication is so important, as mentioned earlier. Similar patterns may be observed with businesses who send from reverse DNS addressees of parent, subsidiary, and outdated brands. :::

Further down the dashboard, you can filter by source country or source IP address.

Tables showing SPF and DKIM alignment details are located under the IP address table. Each row of the DKIM details table is one real DKIM signature, shown as a combined selector / domain / result value; the SPF details table shows scope / domain / result the same way. Combining the values into one column keeps each signature's selector, domain, and result paired together, rather than aggregating them as separate columns. Because a message that carries multiple DKIM signatures appears once per signature, summing the messages column across rows can exceed the total number of messages.

The "Auth result filters" panel above the details tables provides dropdowns for the individual auth-result components — DKIM selector, DKIM domain, DKIM result, SPF scope, SPF domain, and SPF result — and filters the whole dashboard by them. Because components from different signatures of the same message are indexed together, combining two of these component filters matches documents where any signature satisfies each condition individually, not necessarily the same signature; the combined selector / domain / result (scope / domain / result) column remains the per-signature source of truth.

:::{note} The alignment tables (SPF details, DKIM details) and the per-IP source table live on the same dashboard, further down. To view failures only, use the pie chart at the top of the page as a filter. :::

Any other filters work the same way. You can also add your own custom temporary filters by clicking on Add Filter at the upper right of the page.

DMARC failure reports

The DMARC failure reports dashboard (formerly DMARC Forensic Samples) contains information on DMARC failure reports (also known as forensic or ruf reports). These reports contain samples of emails that have failed to pass DMARC.

:::{note} Most recipients do not send failure/ruf reports at all to avoid privacy leaks. Some recipients (notably Chinese webmail services) will only supply the headers of sample emails. Very few provide the entire email. :::

SMTP TLS reporting

The SMTP TLS reporting dashboard surfaces aggregate counts of TLS-RPT reporting organizations, the policy domains they report on, and the specific failure types — certificate expiry, STARTTLS not supported, STS policy fetch errors, validation failures, and similar — together with the sending and receiving MTA addresses involved.

Like the DKIM and SPF details tables above, the "SMTP TLS domains" and "SMTP TLS failure details" tables show one row per policy and one row per failure detail, respectively, using combined policy (domain / type) and failure detail (domain / type / result / sending mta / receiving ip / mx) columns so that each policy's or failure detail's fields stay paired together, rather than aggregating them as separate columns. The successful_sessions and failed_sessions columns are summed per report document, though, not per policy: when a single report carries multiple policies, a row's session sums include the sibling policies from that report as well as its own. Fully attributing session counts to a single policy would require restructuring the stored documents.