Skip to content

How do I monitor Amazon SES soft bounces?

2 minute read
1

I used Amazon Simple Email Service (Amazon SES) to send an email and received a delivery failure. I want to know if the delivery failure is a soft bounce.

Short description

A soft bounce or a transient bounce is a bounced email that's rejected by the recipient mail server because of a temporary failure. Temporary failures that cause a soft bounce include:

  • The recipient mailbox is full.
  • The recipient mailbox is temporarily unavailable.
  • An overloaded server.

Note: Amazon SES retries soft bounces multiple times.

Resolution

To monitor soft bounces on Amazon SES, use Amazon Simple Notification Service (Amazon SNS) to setup notifications. The Amazon SNS notifications trigger when you receive bounces. You can also setup Amazon SES event publishing to track email sending events.

To determine if the delivery failure is a soft bounce, review the contents of the bounce object type in the Amazon SNS notification. If the bounceType value is Transient, then it's a soft bounce. To determine the type of soft bounce, review the bounceSubType value.

Example Amazon SNS notification:

 {
       "notificationType":"Bounce",
       "bounce":{
          "bounceType":"Transient",
          "reportingMTA":"dns; email.example.com",
          "bouncedRecipients":[
             {
                "emailAddress":"jane@example.com",
                "status":"4.1.1",
                "action":"failed",
                "diagnosticCode":"smtp; 550 5.1.1 <jane@example.com>User mailbox full"
             }
          ],
          "bounceSubType":"MailboxFull",
          "timestamp":"2016-01-27T14:59:38.237Z",
          "feedbackId":"00000138111222aa-33322211-cccc-cccc-cccc-ddddaaaa068a-000000",
          "remoteMtaIp":"127.0.2.0"
       },

In the preceding example, the bounce type is soft because the bounceType value is Transient. The type of soft bounce is a full mailbox because the bounceSubType value is MailboxFull.

For more information, see Bounce types.

Related information

Understanding email deliverability in Amazon SES

Best practices for sending email using Amazon SES

How can I access my Amazon SES logs?

3 Comments

Thank you, this was useful but incomplete.

For example, SES is incorrectly labeling "invalid domain" as a "soft bounce". And it is listed as 544 or "5.4.4", so the four codes you listed for "soft bounces" are incomplete.

This means we can't just read the "bounceType": "Transient", line. https://github.com/knadh/listmonk/issues/1463

Instead, we have to read the status code:

        "status": "5.4.4",
        "emailAddress": "eg@gmail.ocm",
        "diagnosticCode": "smtp; 550 5.4.4 Invalid domain"

But I need the list of status & diagnostic codes. The links in your post are not adequate.

The IANA link/list is far too extensive and does not even have "544" nor "5.4.4".

I would get an error when listing these in my comment, so I listed them here https://github.com/knadh/listmonk/issues/1463#issuecomment-1683221839 instead. We need a complete list like that.

replied 3 years ago

Thank you for your comment. We'll review and update the Knowledge Center article as needed.

AWS
MODERATOR

replied 3 years ago

What I understood is that you want the Transient/General to be treated as Hard Bounces. If that is the case, then it cannot be done, as Transient simply means it is a SoftBounce as per the documentation here: https://docs.aws.amazon.com/ses/latest/dg/notification-contents.html#bounce-types:~:text=The%20bounce%20object,your%20mailing%20lists.

And this is the meaning of the Transient/General from the documentation as well: https://docs.aws.amazon.com/ses/latest/dg/notification-contents.html#bounce-types:~:text=bounce%20rate%20metric.-,Transient,automatic%20responses%20when%20it%20calculates%20the%20bounce%20rate%20for%20your%20account.,-Transient

The meaning of the x.4.4 is listed in here: https://datatracker.ietf.org/doc/html/rfc3463#:~:text=X.4.4%20%20%20Unable,to%20route%0A%20%20%20%20%20%20%20%20%20error.

Please note that SES does not control the status code that it shows in the logs. This status code is sent by the MTA/ISP to SES when the SMTP conversation takes place. I am more interested of the fact that the ISP is sending a code stating that the domain is invalid, and in the same time, it sends a code that means Transient/General. This however should be investigated in a case with SES Premium Support Team. If you have a message ID that is not older that 30 days, you can open a case with SES team to investigate the discrepancy between the message and the code that SES receives from the MTA/ISP.

Many thanks! Mo

AWS

replied 3 years ago