all guides

// how to fix

Amazon SES address on the suppression list: why it is not delivered

Amazon SES accepts your email but never delivers it because the address is on your account-level suppression list. Find why and remove it safely.

What it means

Your app sent an email through Amazon SES and got a normal success response with a message ID. But the recipient never received it, and your bounce notifications show a permanent bounce with the subtype OnAccountSuppressionList. SES describes it as: SES has suppressed sending to this address because it is on the account-level suppression list.

The account-level suppression list is a list of addresses that SES will not send to for your AWS account, in one Region. SES adds an address automatically when a message to it caused a hard bounce or, depending on your settings, a complaint. SES accepts the message but does not try to deliver it, which protects your reputation.

There is also an older subtype, Suppressed, linked to the SES global suppression list (addresses with a recent history of hard bounces for all SES customers).

Why it happens

  • The address hard bounced before: it did not exist, the domain did not exist, or the mailbox was closed. See bounce 550 5.1.1: the address does not exist.
  • The recipient marked one of your emails as spam at a provider that sends feedback to SES (Gmail does not, so Gmail spam reports never add addresses).
  • A temporary problem at the recipient was reported as a hard bounce, for example a misconfigured server that answered 550 for a few hours. The address works now, but it stays suppressed.
  • You or a colleague added it manually or by bulk import.

Only hard bounces are added. A full mailbox is a soft bounce and does not put the address on the list (see 552 5.2.2 mailbox full). Addresses stay on the list until someone removes them.

How to check

  1. In the SES console, select the Region, open Suppression list (under Configuration) and search for the address. Choose View report to see why and when it was added, with details of the original bounce or complaint.
  2. With the CLI:
aws sesv2 get-suppressed-destination --email-address customer@example.com

aws sesv2 list-suppressed-destinations | grep -A2 'example.com'

The lookup is case-sensitive: use the exact capitalization stored in the list (Customer@Example.com is a different entry from customer@example.com for these API calls). Also check which configuration set your app uses: a configuration set can override the account-level suppression settings.

How to fix it

First decide if the address should receive email

Look at the reason. If the original bounce said "user unknown" and nothing changed, removing the address will only cause another hard bounce, which hurts your bounce rate. Remove it only if you have a good reason: the customer confirmed the address works, they fixed their mail server, or they asked to receive your emails again after a complaint.

Remove the address

Console: Suppression list, tick the address, Remove. Or with the CLI:

aws sesv2 delete-suppressed-destination --email-address customer@example.com --region eu-west-1

Bulk removal is possible from an S3 file with create-import-job (up to 10,000 addresses per job at the time of writing), but bulk actions require production access.

Keep your own list in sync

The SES list is a safety net, not your list management. Subscribe to bounce and complaint notifications (SNS or event publishing) and mark those contacts as inactive in your own database, so your app stops sending to them. Messages sent to suppressed addresses still count toward your daily quota, and AWS considers repeated sending to suppressed or unsubscribed addresses a bad practice. If bounces are piling up, read Amazon SES account under review before it becomes a problem.

Mailgun has a similar mechanism with its own error; see Mailgun 605 previously bounced address.

Check that it is fixed

Before resending, send a test through the same SES setup to the unique address on the Delivmail home page to confirm that authentication and content are clean, so the next attempt does not bounce for another reason. Then resend to the removed address and watch the notification: a Delivery event means the receiving server accepted it. If it bounces again with a hard bounce, SES adds it back to the list, and the address should stay off your mailing list.

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