Knowledge base

Where it stopped versus why it failed verifiedcritical

MailerQ classifies by stage, PowerMTA by cause, and Hub's analytics speak the second — so the states must be mapped before a MailerQ node can appear in the same charts.

In detail

The two schemes are not translations of each other. "Bad mailbox" is a cause; rcptto/error is a place. Most of the time they coincide, and the exceptions are exactly the cases that matter. The valuable part of the stage view is that it separates things a cause-based scheme merges. A refusal at rcptto and one at message can carry the same 550 and mean opposite things — a wrong address versus an unwelcome sender. A refusal at mailfrom is about our envelope before the recipient is named. And six states describe failures that never reached a receiver at all, which no bounce category should ever contain. The mapping this catalogue proposes has four buckets rather than seventeen, because four is what the evidence supports: not a bounce (process, suppression, storage, responsive, personalize, rewrite, bind, the six auth states, invalid) — our own doing, must be excluded from delivery rates; recipient (rcptto, and dns where the domain genuinely has no server) — a list problem, feeds the suppression list; sender or content (mailfrom, ehlo, helo, message) — a reputation problem, feeds the deliverability view; receiver conditions (connect, intro, data, handshake, starttls, idle, timeout, lost) — theirs rather than ours, feeds the rate and limit decisions. Two engine-provided flags refine this for free: fatal says whether the attempt ended the message, and individual says whether the failure concerned the message or the whole destination. Both are better than anything derived from codes, and neither is read today.