Различайте отказов и OOTO с помощью Amazon SES

Я отправляю электронные письма с помощью Amazon SES и обрабатываю уведомления с помощью SNS. Я только что понял, что обрабатываю сообщения OOTO как отказы, и я хотел бы это исправить, чтобы правильно различать их.

И OOTO, и уведомления о отказах имеют "notificationType":"Bounce".

В уведомлении должна быть какая-то другая информация, которая позволяет вам различать отказы и OOTO, но я нигде не могу найти это задокументировано. Кто-нибудь в этом разобрался?


person gaefan    schedule 01.07.2013    source источник
comment
Это как-то связано с amazon-sns?   -  person tster    schedule 01.07.2013
comment
@tster, да, в первом предложении сказано, что я обрабатываю уведомления через соцсети.   -  person gaefan    schedule 02.07.2013
comment
Вы спрашиваете, как отличить OOTO от уведомления о недоставке от SES. Я думаю, что тот факт, что вы используете социальные сети для чего-то, не имеет значения. Я эксперт в социальных сетях и часто проверяю тег amazon-sns, и я думаю, что этот вопрос не имеет к нему никакого отношения.   -  person tster    schedule 03.07.2013


Ответы (1)


Предоставление некоторой дополнительной информации, чтобы помочь другим. Ниже приведены примеры сообщений, полученных от симулятора SES для адресов электронной почты [email protected], [email protected] и [email protected]. Также ниже приведено сообщение, соответствующее действующему электронному письму OOTO, которое отличается от смоделированного.

Похоже, вы можете использовать bounceType, чтобы отличать OOTO от отказов, но было бы неплохо получить ясность от команды SES. На мой взгляд, сообщения OOTO не следует рассматривать как отказы.

OOTO из симулятора:

{
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 в производстве:

{
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'}
}

Отскок от симулятора:

{
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'}
}

Отказ в производстве:

{
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'}
}

Список подавления из симулятора:

{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'}
}
person gaefan    schedule 01.09.2013
comment
Я изучаю это, а также пытаюсь решить, следует ли нам использовать SES. Вы говорите, что симулятор дает вам другой тип bounceType и subBounceType, чем при использовании в продакшене? Это ужасно, если это действительно так. - person Gary Brunton; 14.10.2013
comment
Да, это так. - person gaefan; 15.10.2013
comment
Только постоянные отказы учитываются в официальном показателе отказов аккаунта - все временные или неопределенные отказы не учитываются. Обычно я бы рекомендовал в основном обрабатывать постоянные отказы в автоматическом режиме (отказаться от подписки или заблокировать адрес электронной почты) и вручную проверять все другие типы, чтобы увидеть, нужны ли какие-либо действия. Иногда в этих ошибках содержится некоторая полезная информация, например, блокировка поставщиком или ошибка DMARC. - person iquito; 29.02.2016