The receiving server temporarily refuses more mail from your IP because volume, reputation or authentication look suspicious – messages stay in the queue and are retried later.
Common causes
- A sudden spike in volume, e.g. a newsletter from a new IP without reputation.
- Missing or mismatched PTR (reverse DNS) record; Gmail is especially strict for IPv6.
- Spam complaints, or a compromised mailbox sending spam.
- Missing SPF/DKIM authentication makes the rating worse.
How to check it
Check the queue size
mailq | tail -n 1
Find the senders with the most mails in the queue
mailq | awk '/^[0-9A-F]/ {print $7}' | sort | uniq -c | sort -rn | head
Check the PTR of the outgoing IP
dig -x 203.0.113.10 +short
What actually helps
- Let Postfix handle retries – do not run
postqueue -fover and over, it makes throttling worse. - Set a PTR that matches the HELO name and make that name resolve back to the IP (forward-confirmed rDNS).
- Lock compromised accounts, reset passwords and remove spam with
postsuper -d.
FAQ
Are messages lost on a 421?
No. 4xx is a temporary error. Postfix keeps the mails in the queue and retries until maximal_queue_lifetime (5 days by default).
Why does it only happen over IPv6?
Gmail requires a valid PTR and authentication for IPv6 senders. Without a PTR, either add one or make Postfix prefer IPv4 with smtp_address_preference = ipv4.
Full page with every command and the German/Italian version: daniele-michelin.com/en/errors/smtp-421-4-7-0/
First published at daniele-michelin.com. The error lexicon covers HTTP, DNS, TLS, mail, database, PHP, nginx, systemd and Nextcloud, in German, English and Italian.
Top comments (0)