451 4.7.1 Greylisted, please try again later

The receiving server has never seen this combination of sending IP, sender address and recipient before, so it refuses the first attempt and remembers the triple. A real mail server retries in a few minutes and is accepted; most spam software does not retry. The delay is the whole point, and it is deliberate.

What the server replies

451 4.7.1 Greylisting in action, please come back later

Sent by
Any mail server
Type
TemporaryRetry helps
About
Receiver policy
Enhanced code
4.7.1

Who sends it

Servers running Postgrey, milter-greylist, SpamAssassin's greylisting, Exim with greylisting ACLs, and several commercial gateways. The text varies: "Please try again later", "Service unavailable - try again later", "Greylisted for 300 seconds". The 4.7.1 code is also used for other temporary policy rejections such as "Try again later" from Gmail.

Why it happens

  • First message from your server to this recipient, which is normal.
  • Your server sends from a pool of IPs and each retry comes from a different one, so the triple never matches.
  • The sender address changes on every message (VERP bounce addresses), which defeats the triple.
  • Your MTA's first retry is set to an hour or more, so the message looks "slow" when it is really waiting for the retry.

How to fix it

  1. Accept the delay

    Greylisting adds five to thirty minutes to the first message to a new recipient. Nothing is wrong.

  2. Retry from the same IP

    If you send from several IPs, configure the MTA to retry a deferred message from the IP that first tried, or publish all of them in SPF; many greylisters whitelist a sender whose SPF passes.

  3. Shorten the first retry

    Set the minimum retry interval to around five minutes for the first attempt so greylisted mail clears quickly.

  4. Publish SPF and a PTR record

    Several greylisting implementations skip the delay for authenticated senders with proper reverse DNS.

Check it yourself

These free tools show the records and connections behind this code for your own domain or server.

Related codes

Sources

Fewer bounces to look up.

Faivelo queues temporary failures and retries them on a schedule receivers accept, then tells your application once, in plain words, if a message finally cannot be delivered.

Send with Faivelo

Free tier included. No card needed.