Skip to content

Message Trace Report 1.1.0

Latest

Choose a tag to compare

@Nico77600 Nico77600 released this 02 Oct 17:44
· 17 commits to main since this release

Why a message was not delivered — for each recipient.

Added

  • Cause of each failure, in plain words: Blocked by DLP, Blocked by mail flow rule (ETR), Blocked by organization policy, Blocked by Tenant Allow/Block List, Recipient not found, Mailbox full, Sender not allowed by recipient, Sender authentication failed, Quarantined, Junk Email folder, Destination server unreachable, Rejected by remote server… (about 30), with the DLP or mail flow rule (name, or ID when the names are empty) and what to check. Decided from the component that rejected, the rule steps of the route, the codes reserved for mail flow rules (5.7.900–5.7.999), the enhanced status code and the answer of the remote server.
  • Route analysis (src\Engine.Route.cs): steps in order (events of the same second come back unordered from the service), facts of the XML data with readable labels (server, connector, TLS, SCL / SFV…), reason with SMTP and enhanced code, text, diagnostic, remote server, component and its Microsoft Learn page.
  • Where the routes split: the recipients of a message are grouped by identical route (Route A, Route B…); when some failed and others were delivered, the common steps and what happened next, side by side — in the HTML report and in the console.
  • Smarter route selection: a selection of at most Details.MaxDeliveries (now 100) is read completely; a larger one reads, newest message first, one recipient per problem status and one delivered recipient of the same message to compare (Details.CompareWithDelivered), then the other problems. Routes are read once and reused. -MaxRoutes changes the number for one run.
  • Console: the route of the messages of a small selection (Details.ConsoleMessages, 3), the causes and status codes of the run, a Causes line in the summary.
  • HTML report: Why deliveries were not delivered (one card per cause, then the status codes with their Learn page, click to filter), a Cause column, filters by cause, any recipient not delivered, partly delivered and route read, search in the reasons, a new message dialog (routes, split, cause box, steps with times and details).
  • Files: MessageTrace_Routes.csv (one row per step, Report.Files Routes); Cause and Reason columns at the end of the Messages and Deliveries CSV (and Route for Deliveries); route, outcome, causeId, cause, reason and events in the JSON files.

Changed

  • Details.MaxDeliveries 50 → 100; new keys CompareWithDelivered and ConsoleMessages.
  • The demonstration data and the in-memory API of the tests return the real shape of the routes (DLP, mail flow rule, restrictions, remote rejection, delay, quarantine, junk, group expansion). 59 Pester tests.

Upgrade: replace the files, keep your configuration (config\MessageTraceReport.config.psd1) and your data folder; the new Details keys have defaults. The CSV columns added are at the end.

Full guide: docs\MessageTraceReport-Guide.html in the zip.