У меня есть приложение Rails 4.2, которое размещено на AWS и использует SES для доставки электронной почты.Я настроил уведомления SNS и POST для приложения, когда электронная почта возвращается.Если я отправляю тестовое электронное письмо через консоль SES, конечная точка, связанная с подпиской SNS, попадает в AWS точно так же, как и ожидалось с уведомлением об отказе.Когда электронное письмо, полученное от самого приложения, отскакивает, конечная точка не попадает, хотя в статистике электронной почты, отображаемой в консоли SES, появляется соответствующий отскок.
Если электронное письмо отправлено из приложенияпри значении Return-Path
электронное письмо, связанное с обратным путем, действительно получает сообщение «Уведомление о состоянии доставки (сбой)» от демона почтовой программы SES (хотя это электронное письмо переходит в спам).Я также проверил Apache access_log
и error_log
и вижу попадание в конечную точку уведомления о возврате только при отправке писем через консоль SES.
Письма в приложении отправляются через ActionMailer с delivery_strategy
:aws_sdk
(предоставлено драгоценным камнем aws-sdk-rails
).Я также пытался использовать стратегию доставки :smtp
с email-smtp.us-east-1.amazonaws.com
и учетными данными SES - единственное различие между двумя стратегиями состоит в том, что стратегия :smtp
не соответствует Return-Path
.Домен и электронная почта, используемые в адресе «От», проверены с помощью AWS, а DKIM включен, проверен и, похоже, работает.Тема SNS для Bounce Notifications для домена является правильной (и подписка на тему уже подтверждена).
Я проверил доставку электронной почты на адреса с несуществующими доменами, несуществующие адреса с реальными доменами.и bounce@simulator.amazonses.com
.Все тесты с приложением приводят к тому, что ничего не отправляется в конечную точку уведомления, а все тесты с консолью SES приводят к ожидаемому поведению.Все сервисы Amazon используют один и тот же регион (us-east-1), и все электронные письма, которые, как ожидается, будут доставлены без пересылки, будут доставлены надлежащим образом.
Код, который доставляет почту, выглядит в основном так:
class SomeMailer < ApplicationMailer
def some_email
...
mail(
to: destination,
from: sender,
cc: cc_addresses,
subject: some_subject,
template_name: some_template,
return_path: return_path_email
)
end
end
Я пытался убрать return_path
, который не влияет на поражение конечной точки SNS.
Я провел немало поиска здесь, в документах и убежище AWS.не нашел ничего, что меняет это поведение.Будем весьма благодарны за любые советы о том, как получать уведомления об отказах при отправке приложением.