Email verification tests often fail for a reason that is not really email. A test creates an account, requests a verification message, waits for an inbox, and then asserts that a link arrived. If the inbox is shared or its lifetime is undefined, the test has no reliable answer to a simple question: does this message belong to this run?
I treat a test inbox as a leased resource. The lease has an owner, an expiration time, and a state. That small model makes a REST API easier to retry and gives PostgreSQL enough information to reject stale or competing work. It also keeps temporary disposable mail in its proper place: a controlled fixture for a test environment, not a substitute for an application's identity model.
Why an inbox should have a lease
A mailbox address by itself is not a test fixture. It is only a location. Without ownership and expiry, several jobs can read the same verification email, or a new job can consume a message left by an older one.
The usual workaround is to add a longer sleep .…