How it works
The receiver remembers a triplet of sending IP, sender address and recipient address. On first sight it answers with a temporary error and notes the time. If the same combination returns after a waiting period — five minutes by default in Postgrey — it is accepted and put on an allow list for weeks.
A five to fifteen minute delay on the very first message to a recipient is therefore not a fault but the entire point of the method.
When it does become a problem
- The sender does not retry. Web shops, monitoring scripts and form mailers that send once via PHP or an API have no queue. A temporary error is final for them. Such systems belong behind a real mail server or smarthost that handles the retry.
- The retry comes from a different IP. Large senders use pools with many outbound addresses. If every attempt hits a new IP the triplet never matches, and the mail sits until the queue expires. Known behaviour at several cloud providers.
- The envelope sender changes per attempt. Some systems generate a fresh VERP address for each try — with the same result.
What you can do
On the sending side: make sure a server with a proper queue does the delivery, and keep the outbound IP as stable as you can. Clean reverse DNS and passing authentication help too, because many installations exempt known, well-reputed senders from greylisting.
On the receiving side: rather than switching greylisting off wholesale, maintain exceptions for the domains whose delay genuinely hurts.