Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Distinguish bounce and OOTO with Amazon SES

I'm sending emails with Amazon SES and processing notifications with SNS. I just realized that I have been processing OOTO messages as bounces and I would like to fix that so I properly distinguish the two.

Both OOTO and bounce notifications have "notificationType":"Bounce".

There must be some other information in the notification that allows you to distinguish bounces and OOTOs, but I can't find this documented anywhere. Has anyone figured this out?

like image 694
gaefan Avatar asked Jul 01 '13 01:07

gaefan


1 Answers

Providing some additional information to help others. Below are example messages received from the SES simulator for the email addresses [email protected], [email protected], and [email protected]. Also below is message corresponding to an OOTO email in production, which is different from what is simulated.

Looks like you can use "bounceType" to distinguish OOTO from bounces, but would be nice to get clarity from the SES team. In my opinion, OOTO messages should not be treated as bounces.

OOTO from simulator:

{
u'mail': {
  u'timestamp': u'2013-09-01T17:21:23.000Z', 
  u'destination': [u'[email protected]'], 
  u'source': u'[email protected]', 
  u'messageId': u'...'}, 
u'notificationType': u'Bounce', 
u'bounce': {
  u'bounceType': u'Transient', 
  u'bounceSubType': u'General', 
  u'bouncedRecipients': [{u'emailAddress': u'[email protected]'}], 
  u'feedbackId': u'...', 
  u'timestamp': u'2013-09-01T17:21:24.000Z'}
}

OOTO in production:

{
u'mail': {
  u'timestamp': u'2013-09-01T18:45:10.000Z', 
  u'destination': [u'[email protected]'], 
  u'messageId': u'...', 
  u'source': u'[email protected]'}, 
u'notificationType': u'Bounce', 
u'bounce': {
  u'bouncedRecipients': [], 
  u'bounceType': u'Undetermined', 
  u'bounceSubType': u'Undetermined', 
  u'feedbackId': u'...', 
  u'timestamp': u'2013-09-01T18:45:11.000Z'}
}

Bounce from simulator:

{
u'mail': {
  u'timestamp': u'2013-09-01T17:21:20.000Z', 
  u'destination': [u'[email protected]'], 
  u'messageId': u'...', 
  u'source': u'[email protected]'}, 
u'notificationType': u'Bounce', 
u'bounce': {
  u'bounceType': u'Permanent',
  u'bounceSubType': u'General', 
  u'bouncedRecipients': [{u'action': u'failed', u'status': u'5.1.1', u'diagnosticCode': u'smtp; 550 5.1.1 user unknown', u'emailAddress': u'[email protected]'}], 
  u'feedbackId': u'...', 
  u'timestamp': u'2013-09-01T17:21:20.767Z', 
  u'reportingMTA': u'dsn; a8-96.smtp-out.amazonses.com'}
}

Bounce in production:

{
u'mail': {
  u'timestamp': u'2013-09-02T13:39:02.000Z', 
  u'destination': [u'[email protected]'], 
  u'messageId': u'...', 
  u'source': u'[email protected]'}, 
u'notificationType': u'Bounce', 
u'bounce': {
  u'feedbackId': u'...', 
  u'timestamp': u'2013-09-02T13:38:57.000Z', 
  u'reportingMTA': u'dns; b232-135.smtp-out.amazonses.com', 
  u'bounceSubType': u'General', 
  u'bouncedRecipients': [{u'status': u'5.0.0', u'diagnosticCode': u"smtp; 5.1.0 - Unknown address error 550-'Requested action not taken: mailbox unavailable' (delivery attempts: 0)", u'emailAddress': u'[email protected]', u'action': u'failed'}], 
  u'bounceType': u'Permanent'}
}

Suppression list from simulator:

{u'mail': {
  u'timestamp': u'2013-09-01T17:21:31.000Z', 
  u'destination': [u'[email protected]'], 
  u'messageId': u'...', 
  u'source': u'[email protected]'}, 
u'notificationType': u'Bounce', 
u'bounce': {
  u'bounceType': u'Permanent',
  u'bounceSubType': u'Suppressed', 
  u'bouncedRecipients': [{u'status': u'5.1.1', u'emailAddress': u'[email protected]', u'diagnosticCode': u'Amazon SES has suppressed sending to this address because it has a recent history of bouncing as an invalid address. For more information about how to remove an address from the suppression list, see the Amazon SES Developer Guide: http://docs.aws.amazon.com/ses/latest/DeveloperGuide/remove-from-suppressionlist.html ', u'action': u'failed'}],
  u'feedbackId': u'...', 
  u'timestamp': u'2013-09-01T17:21:32.620Z', 
  u'reportingMTA': u'dns; amazonses.com'}
}
like image 109
gaefan Avatar answered Nov 01 '22 12:11

gaefan