X_MAIL_SEND_FAILED
Means
the mail transport refused the message
Typical cause
a rejected recipient, bad credentials, a throttle, a dead socket, or a peer that never completes a reply
Fix
the queue now decides this without you: sendFailed carries the verdict as error.retry, so sendMailJob dead-letters a permanent refusal on the attempt that threw it instead of presenting the same rejected recipient four more times. meta.retryable is the same fact, unchanged, and is still what an operator reads. true → it will be requeued; false → fix what meta.stage names, then x doctor --json. meta.stage is the SendStage union in packages/mail/src/errors.ts: auth → SMTP_URL credentials, tls → openssl s_client -connect <host>:465 for the implicit-TLS certificate, starttls → openssl s_client -starttls smtp -connect <host>:587, recipient → the address, reply → point SMTP_URL at the SMTP port itself, since a proxy or an HTTP port answers like this