Email & SMTP Errors
Delivery failures, relay denial, authentication, SPF, DKIM and DMARC.
Understanding Email errors
SMTP errors follow a strict convention: a 4xx code is temporary and will be retried, a 5xx is permanent and will not. Beyond delivery mechanics, most modern email problems are authentication problems (SPF, DKIM and DMARC alignment) which cause silent filtering into spam rather than an explicit bounce, and therefore need to be checked proactively.
How to debug Email errors
- Read the full bounce message. The enhanced status code (for example
5.7.1) is far more specific than the three-digit code and usually names the exact policy that rejected the message. - Test the SMTP conversation manually with
swaks --to [email protected] --server smtp.example.com --tls. It shows each command and response. - Verify SPF, DKIM and DMARC records with
dig TXT example.com,dig TXT selector._domainkey.example.comanddig TXT _dmarc.example.com. - Check DMARC alignment, not just presence: the domain in the
From:header must align with the SPF or DKIM domain, or DMARC fails even when both pass individually. - Confirm the sending IP is not on a blocklist and has valid reverse DNS. Missing PTR records cause rejection by many large providers.
Tools worth reaching for
swaksdig TXTopenssl s_client -starttls smtppostfix mail logsDMARC aggregate reports
All 20 Email errors
- DKIM: Signature verification failedThe DKIM signature on the email does not match. The DNS public key record may be wrong, or the message was modified in…
- DMARC: dmarc=fail (p=reject) in Authentication-Results NewSPF or DKIM passed on its own but neither aligned with the domain in the From header, and alignment is what DMARC…
- Postfix: 450 4.1.8 Sender address rejected: Domain not found NewThe receiving Postfix has reject_unknown_sender_domain enabled and could not find an A or MX record for the domain in…
- Postfix: connect to mx1.example.net[203.0.113.25]:25: Connection timed out NewYour server never got a TCP connection to the recipient's mail server on port 25, so the message sits deferred in the…
- Postfix: SASL authentication failure: No worthy mechs found NewPostfix tried to log in to the relay and Cyrus SASL could not find a mechanism the relay accepts. The username and…
- SMTP: 421 4.7.28 Our system has detected an unusual rate of unsolicited mail NewGmail is temporarily deferring mail from your IP or domain because recent volume looks like spam, judged by complaints…
- SMTP: 421 Too many connectionsThe mail server is rate limiting connections. Too many simultaneous connections from the same IP address.
- SMTP: 451 4.7.1 Greylisted, please try again later NewThe receiving server deliberately rejected a first delivery attempt from an unknown sender triple and expects a retry…
- SMTP: 530 5.7.0 Must issue a STARTTLS command first NewThe server requires an encrypted session before it will accept AUTH or MAIL FROM, and the client went straight in over…
- SMTP: 534-5.7.9 Application-specific password required NewGmail accepted the connection but will not take the account's normal password over SMTP, because the account has…
- SMTP: 535 5.7.139 Authentication unsuccessful NewMicrosoft 365 accepted your username and password but refused the login because authenticated SMTP submission is…
- SMTP: 535 Authentication failedSMTP login credentials were rejected. The password may be wrong, or the account requires an app-specific password…
- SMTP: 550 5.7.1 Client host [203.0.113.5] blocked using zen.spamhaus.org NewThe receiving server looked up your sending IP in a DNS blocklist and found it listed, so it rejected the connection…
- SMTP: 550 5.7.25 The IP address sending this message does not have a PTR record NewGmail checks that the sending IP has reverse DNS, and that the name it points to resolves forward to the same IP. The…
- SMTP: 550 5.7.26 unauthenticated email from domain not accepted NewGmail and Yahoo require bulk senders to authenticate with SPF and DKIM, publish a DMARC policy, align the From domain…
- SMTP: 550 Mailbox not foundThe recipient email address does not exist on the mail server. The mailbox may have been deleted or the address is…
- SMTP: 552 5.3.4 Message size exceeds fixed maximum message size NewThe message was larger than the receiving server accepts, and the limit applies after MIME encoding, which inflates…
- SMTP: 554 Relay access deniedThe SMTP server refuses to relay mail for the sender. The server only accepts mail for its own domains and the sender…
- SMTP: STARTTLS handshake failedThe TLS negotiation during STARTTLS failed. The server certificate may be invalid, or there's a protocol version…
- SPF: Sender not authorizedThe sending mail server's IP is not listed in the domain's SPF record. The email may be rejected or marked as spam.
Other categories
- AI 35Rate limits, context windows, GPU memory and model-serving failures.
- Ansible 18Unreachable hosts, become passwords, undefined variables and Jinja2 failures.
- API 20Auth headers, payload limits, versioning, idempotency and webhook signatures.
- Apple 20Command line tools, dyld, Homebrew permissions, notarisation and Keychain.
- Auth 20OIDC, SAML, Auth0, Okta, Keycloak, passkeys and MFA failures.
- BigData 17Spark, Kafka, Airflow, Snowflake, Flink and Databricks failures.
- C# 18NuGet restore, null references, EF Core migrations, async deadlocks and Blazor…
- C++ 20Segfaults, linker errors, memory corruption and template deduction failures.
- Caching 20Cache stampedes, stale content, Varnish and CloudFront failures.
- CI/CD 18GitHub Actions, GitLab CI, Jenkins, CircleCI: permissions, runners and…
- Client 21CORS, mixed content, module resolution, memory limits and framework runtime…
- Cloud 25IAM permissions, quotas, service limits and credential failures.
- Dart 20Null safety, pub version solving and build toolchain problems.
- Database 41Connections, deadlocks, constraints, replication and memory limits.
- DNS 20NXDOMAIN, SERVFAIL, timeouts, propagation and delegation problems.
- Docker 27Daemon connectivity, disk space, image pulls, ports and architecture mismatches.
- Elixir 18GenServer timeouts, supervision failures and Mix compilation problems.
- Frontend 23Hydration mismatches, bundler resolution, layout shift and font loading.
- Git 20Merge conflicts, rejected pushes, detached HEAD, LFS and repository corruption.
- Go 19Nil map assignment, concurrent map access, context cancellation and deadlocks.
- GraphQL 19Validation, depth limits, N+1 queries and fragment problems.
- gRPC 17Status codes, deadlines, message limits, TLS and HTTP/2 transport failures.
- HTTP 494xx client errors, 5xx server errors, redirects, headers and protocol problems.
- ICMP 23Destination unreachable, time exceeded, fragmentation needed and redirects.
- Ingress 20404 default backend, missing TLS secrets, IngressClass and path matching.
- Java 19Class loading, dependency resolution, connection pools and JVM version…
- JavaScript 42npm resolution, async pitfalls, hydration, memory limits and runtime type…
- Kubernetes 34CrashLoopBackOff, ImagePullBackOff, OOMKilled, RBAC, scheduling and storage.
- Logging 18Log4j, Logback, Fluentd, Logstash and CloudWatch ingestion problems.
- MessageQueue 20Kafka, RabbitMQ, SQS, NATS and Celery: lag, rebalancing and poison messages.
- Mobile 20Gradle, CocoaPods, Xcode signing, Metro bundler and toolchain mismatches.
- Monitoring 18Prometheus scrapes, Grafana data sources, OpenTelemetry exporters and agent…
- Network 35Refused connections, timeouts, resets, MTU problems and port exhaustion.
- Performance 19GC pauses, thread pool starvation and event loop blocking.
- PHP 20Memory limits, execution timeouts, autoloading, Composer and PDO connections.
- Proxy 20nginx, Envoy, HAProxy, Traefik, Caddy and Cloudflare upstream failures.
- Python 35Imports, virtual environments, encoding, concurrency and dependency conflicts.
- Regex 17Catastrophic backtracking, back references, escaping and engine differences.
- Ruby 20Bundler, migrations, native extensions, encoding and asset compilation.
- Rust 19Borrow checker, ownership moves, trait bounds and lifetime mismatches.
- Scala 17Dependency resolution, binary compatibility and type inference failures.
- Security 25JWT validation, CSRF, OAuth grants, SELinux, SSH host keys and CSP.
- Serverless 20Lambda timeouts, package size limits, VPC networking and cold starts.
- Shell 19Command not found, permissions, quoting, expansion and Makefile syntax.
- Storage 19S3 permissions, NFS mounts, quotas, signed URLs and volume attachment.
- Svelte 20Store subscriptions, load functions and server/client boundaries.
- System 26Disk space, systemd units, file descriptors, OOM killer and scheduled jobs.
- Terraform 18State locks, provider auth, drift, dependency cycles and plan-time unknowns.
- Testing 18Jest, pytest, JUnit, Cypress and Playwright: fixtures, snapshots and timeouts.
- TLS 24Untrusted authorities, expiry, hostname mismatch, chains and cipher negotiation.
- TypeScript 19Assignability, missing declarations, strict null checks and generic constraints.
- Virtualization 20VirtualBox, VMware, Hyper-V, WSL, KVM and hypervisor conflicts.
- Web3 17Gas estimation, nonce management and reverted transactions.
- WebAssembly 17Compile errors, memory bounds and host binding mismatches.
- WebServer 20nginx, Apache, IIS and Caddy: binding, permissions, rewrites and TLS.
- Windows 20Installer failures, missing runtimes, update errors and permission problems.