sysop@hub:~/tools/mailflow-debugger$
mailflow-debugger
"My mail came back." Paste the bounce message here, or the error line from a scanner, a message trace result, or the spam headers of a received mail. You get the cause in plain language, which side has to fix it, the commands to check it and a reply you can send to the user. The text is read by your browser and never uploaded.
Try an example:
what you can paste
| Input | Where to get it |
|---|---|
| Bounce message (NDR) | The mail the sender got back. Copy all of it, including the part headed "Diagnostic information for administrators". That part holds the status code and the name of the rejecting server. |
| SMTP error line | From the display or log of a scanner, printer, application or mail server, for example 550 5.7.1 Unable to relay. |
| Message trace | The output of Get-MessageTraceV2 or Get-MessageTraceDetailV2, or a row copied from the trace in the Exchange admin center. |
| Spam headers | The X-Forefront-Antispam-Report and Authentication-Results lines from the source of a mail that landed in Junk or quarantine. |
| Just a code | An enhanced status code such as 5.4.1 on its own. The diagnosis is less specific without the text around it. |
how to read a status code
| Part | Meaning |
|---|---|
| First digit | 2 delivered, 4 temporary failure (the sending server tries again), 5 permanent failure (the mail is returned). |
| Second digit | 1 address, 2 mailbox, 3 mail system, 4 network and routing, 5 protocol, 6 content, 7 security and policy. |
| Third part | The detail. Microsoft, Google and others define their own numbers here, which is why 5.7.509 or 5.7.26 only make sense for one provider. |
| Three-digit number in front | The classic SMTP reply, such as 550 or 451. It says less than the code that follows it. |
The debugger knows 50 situations, with a focus on Exchange Online and the big mail providers. It works from the text you paste and does not look anything up. A bounce is written by the server that rejected the mail, so the wording differs between products, and a rare or vendor-specific message may only get the general reading of its code. When in doubt, the administrator of the rejecting server has the final answer in their logs.
Related: mail flow cheat sheet email error codes domain check email header analyzer phish analyzer