// how to fix
Mailgun 605 "Not delivering to previously bounced address": fix
Mailgun refuses to send with code 605 because the address bounced before. Learn when to remove it from the bounce list and when to leave it there.
What it means
Mailgun did not even try to deliver your message. It dropped it before it left Mailgun, because the recipient address is on the Bounces suppression list of your sending domain. In the logs, the failed event usually shows:
Code: 605 Message: Not delivering to previously bounced address Severity: permanent
A suppression list is a "do not send" list that Mailgun keeps per domain. Once an address is on it, every new message to that address fails instantly with 605 until you remove it. This protects your reputation: mailbox providers like Gmail and Outlook watch how often you send to dead addresses.
A related code, 607, is used when the address is suppressed because the person marked one of your emails as spam. Do not remove those; the person asked not to hear from you.
Why it happens
- An earlier hard bounce. A previous message to this address got a permanent refusal, for example
550 5.1.1 user unknown. Mailgun added it to the Bounces list. See bounce "550 5.1.1": the address does not exist for what that original bounce means. - A typo that was later corrected in your database, while the old bounce stays on the list for the same address.
- A temporary problem that looked permanent. Some servers answer with a 5xx code for a full mailbox, a disabled account or a policy block. The mailbox may work again later, but the bounce stays recorded.
- A block against you, not the recipient. If the original bounce was caused by your IP or domain being blocked, the address itself is fine. Read the original bounce text before deciding.
How to check
- Find the original bounce. In the Mailgun control panel, open your sending domain, go to the Suppressions section and open the Bounces table. Search for the address. The entry shows the date and the error that the receiving server returned.
- Or ask the API. Replace the key, domain and address (use
api.eu.mailgun.netif your domain is in the EU region):curl -s --user 'api:YOUR_API_KEY' \ https://api.mailgun.net/v3/yourdomain.com/bounces/alice@example.com
- Read the error. "User unknown", "no such user" or "address does not exist" means the address is really dead. "Blocked", "spam", "policy" or a blacklist name means the problem was your sending reputation.
- If it was a block, send a test email from the same Mailgun domain to the address on the Delivmail home page and check SPF, DKIM, DMARC and blacklists in the report before sending to that recipient again.
How to fix it
The address really does not exist
Leave it on the list. Remove or fix the address in your own database (ask the person for a correct address through another channel). Removing a dead address from the suppression list only creates a new hard bounce and damages your reputation.
The mailbox works again
If the person confirms that the address works (new account, mailbox no longer full, typo fixed), remove it from the Bounces table in the control panel, or with the API:
curl -s --user 'api:YOUR_API_KEY' -X DELETE \ https://api.mailgun.net/v3/yourdomain.com/bounces/alice@example.com
Mailgun will try to deliver again. If the address bounces again, it goes back on the list automatically. Messages that already failed with 605 are not resent; send them again yourself.
The original bounce was a block against you
Fix the cause first (authentication, blacklisted IP or domain, content), then remove the address. Otherwise the next message will bounce for the same reason.
Prevent it in your application
- Listen to Mailgun's permanent failure webhook and mark the address as invalid in your own database, so your application stops queuing mail to it.
- Use double opt-in or address confirmation at signup to stop typos from entering your list.
- Clean old lists before a campaign; see how to clean your mailing list after a high bounce rate.
Other providers have the same mechanism under another name: Postmark returns error 406 for inactive recipients, and Amazon SES has its own account-level suppression list.
Check that it is fixed
After removing the address, send one message and look at its events in Mailgun's logs. You want a "delivered" event, not "failed" with 605. If it fails with a new bounce, read that new error: it tells you the current state of the mailbox. If the original problem was your reputation, run a new Delivmail test first and make sure nothing is blacklisted.
Check that it is fixed
DNS changes can take from a few minutes to a few hours. Then send a new test email or scan your domain again.
Related guides
- Gmail bounce "550 5.7.26": unauthenticated emailGmail refused your email because it could not confirm it comes from your domain. SPF, DKIM or DMARC is missing or failing. Here is how to fix it.
- Bounce "550 5.7.1": message rejected or blocked by policyA 5.7.1 bounce means the receiving server refused your email on purpose. Learn to read bounce messages, find the real reason and fix it.
- High bounce rate: clean your mailing listSending to addresses that no longer exist damages your reputation fast. Learn the difference between hard and soft bounces and remove bad addresses after every send.
- Spam traps and bought email listsSpam traps are hidden addresses that catch senders with bad lists. Hitting them can blacklist you. Never buy lists, and only email people who asked for it.
- Emails delayed: greylisting and 4xx temporary errorsSome servers answer "try again later" on purpose. A normal mail server retries and the email arrives a few minutes late. Here is how to tell normal delays from real problems.