vlad-ardelean
vlad-ardelean

Reputation: 7622

Why is Amazon SES mail simulator bounces not working? (Am I missing headers or something?)

I'm trying to use the amazon SES simulator as documented here: http://docs.aws.amazon.com/ses/latest/DeveloperGuide/mailbox-simulator.html

The body of the message looks like this:

MIME-Version: 1.0
Content-Type: multipart/alternative; charset="utf-8";
 boundary="===============123456789=="
Content-Transfer-Encoding: base64
Subject: hello test message!
Reply-To: my_address@my_provider.com
To: [email protected]
Return-Path: my_address@my_provider.com
Bounces-to: my_address@my_provider.com
Errors-to: my_address@my_provider.com
From: my_address@my_provider.com

--===============123456789==
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64

Ym9keSB3aXRoIG5vbmNlOiAw

--===============123456789==
MIME-Version: 1.0
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: base64

Ym9keSB3aXRoIG5vbmNlOiAw

--===============123456789==--

I'm sending this as the body, and using the boto3 interface ses_client.send_raw_message.

I'm generating this message body with something like this

from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import re

msg = MIMEMultipart('alternative')
msg.set_charset('utf8')

text_message='Ym9keSB3aXRoIG5vbmNlOiAw'

p = re.compile('<.*?>')
text_message = 'body with nonce: {}'.format(str(nonce))
text = MIMEText(p.sub('', text_message), 'plain', 'utf8')
html = MIMEText(text_message, 'html', 'utf8')
msg.attach(text)
msg.attach(html)

source = 'my_email@my_provider.com'
msg['Subject'] = 'hello test message!'

msg['Reply-To'] = source
msg['To'] = to_mail
msg['Return-Path'] = source
msg['Bounces-to'] = source
msg['Errors-to'] = source

So I can send emails through SES and it works just fine. I can also send emails to [email protected], and that works. I haven't set up any SNS messaging, but I expected, through all the header fields that I set, to get a bounce back at the desired address. However, nothing happens if i use [email protected].

This is a list of header fields that amazon acknowledges: http://docs.aws.amazon.com/ses/latest/DeveloperGuide/header-fields.html

I have also enabled email feedback forwarding, as described here: http://docs.aws.amazon.com/ses/latest/DeveloperGuide/notifications-via-email.html

Also, for sending the emails I use this logic:

amazon_client = boto3.client('ses', 'region', **credentials)
amazon_client.send_raw_email(
            Source=from_mail,
            Destinations=to_mails,
            RawMessage={'Data': body}
        )

According to the page documenting how to receive notifications, I should be getting mails back at the Source address specified - which I do set, and I do have the email feedback forwarding enabled for....

Any ideas what I might be missing?

Upvotes: 0

Views: 1260

Answers (2)

vlad-ardelean
vlad-ardelean

Reputation: 7622

Solved.

The bounce address was different from the 'From' address. Therefore, the bounces ended up in the SPAM of that other address. Interestingly, that address had a filter to forward everything to the address I had used as for 'From' address, when sending the email.

So my confusion was caused because I expected to get mail forwarded from that other address, but the bounces never got forwarded.

Upvotes: 1

tripleee
tripleee

Reputation: 189397

The headers you are putting in suggest that the real problem is false expectations. Errors-To: will be ignored pretty much by everything you can find, and Return-Path: will be replaced with the envelope sender by the receiving MTA. To control bounces, you need to control the envelope sender (traditionally, with sendmail -f) and what you put in the headers is completely irrelevant.

Upvotes: 1

Related Questions