Changing MAIL FROM Domain in Amazon AWS SES - amazon-web-services

I'm using a marketing email application called Mautic to use AWS SES to send emails. I'm receiving the emails successfully but they're all from the domain amazonses.com. I followed the AWS SES documentation to verify ownership of my domain, I enabled SPF and DKIM successfully, and I put the proper MX records into my GoDaddy DNS. Everything is 'verified' in the AWS Console, but I'm not sure how to get it to use the "MAIL FROM" domain I've setup. Mautic has no settings with respect to the "MAIL FROM" domain so I'm pretty sure I'm just missing the last step on the SES in order to get it to actually use the 'from' domain I've setup.
Please let me know if I can provide any more details that might be helpful. Thanks for your time in advance!

I had the same issue, but it was because I had verified my email address before I set up the MAIL FROM domain. In this case, if you look at the details for the verified email address, you will see the MAIL FROM domain set to amazonses.com. It appears that SES uses this value when sending from this email regardless of the MAIL FROM domain setting.
Since my domain is verified, my solution was to simply delete the verified email. Now when I send emails, it uses the domain default which is my MAIL FROM domain setting.
If you are using verified email addresses, check that it shows the MAIL FROM domain that you want to use in the details.

Ah, I figured it out. In Step 8 of this document it says "You can now use Amazon SES to send email that is signed using a DKIM signature from any valid address in the verified domain." I didn't realize I had to have a verified email from this domain under the "Email Addresses" section of the SES console. I created an email address in my domain, verified it using SES, and now my application can use SES to send email on behalf of my own domain!

AWS also has a Custom Mail From domain setup option. Here is the doc:
http://docs.aws.amazon.com/ses/latest/DeveloperGuide/mail-from.html
Follow the directions very carefully and don't forget you need an SPF record for the new subdomain you create for the Mail From - otherwise SES won't pass it in the header.

Related

How to verify email address in AWS SES

I have bought a domain,then I have created domain identity in SES and verified it successfully, now comes the email part. I have created email address in identity management that is user#example.com (assume that example.com is my domain), documentation states that I need to go to the email inbox and click on the email but what inbox they mean? How can I access this inbox of this address that I've just created? If I have to use my own email here then what's the point of adding a domain If I can use gmail smtp straight away? Can someone please clarify this?
Here is the clear answer:
At first, you need to purchase and verify your domain in SES(you've done this already, it's good to go for next step)
You need to write a support ticket to move your SES account out from sandbox mode as it's in sandbox mode by default(You need to provide all info AWS requires in detail)
moving out from sandbox mode
This might take 1 day around, finally you can get production SES status and check in your statistics section from SES console.
Next, you need to go AWS WorkMail service console and create your email accounts to be used for sender or receiver in your platform by your purchased domain(i.e, if your domain is abc.com, info#abc.com or support#abc.com).
When I say creating email accounts, it says you need to create email address, username and password for each email account.
Finally, If you need to check out the inbox for above created accounts, WorkMail provides a cool web client for it.
Here is the WorkMail web client documentation from AWS
It says this:
The web client URL looks like this: https://alias.awsapps.com/mail. Replace alias with the alias you received from your site administrator.
Here, alias is configured by you when you create your organization in WorkMail console.
The reason why SES requires to verify domain is something like ID verification of email sender, and verification of 3rd party email addresses gives us a flexibility to work with any other email addresses not registered in SES, also allow development and test before registration of domain in sandbox mode.
Cheers
The email address you want to verify must have existing mail service, before you can validate the address in SES.
From AWS docs, about receiving email
https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email.html
When you receive email, Amazon SES processes it according to instructions you provide. For example, Amazon SES can deliver incoming mail to an Amazon S3 bucket, publish it to an Amazon SNS topic, or send it to Amazon WorkMail.
If you need an inbox service, use Amazon WorkMail.
Creating a IAM user doesn't create an inbox. And SES has no inbox capability at all. The point of validation is to allow sending in behalf of the service. In certain use cases, you can process inbound email via Lambda, store attachments on S3 etc. but there is no POP3/IMAP inbox-like service included in the SES.
Creating an IAM user is not required to validate your email. That is only for authentication purposes for accessing AWS account services.
AWS SES can receive emails and mostly this is used for automated email processing.
If you have verified in identity that you own the domain(by adding txt record in your domain DNS table) then by default you have verified all emails that fall in that domain.
You don't have to follow the steps to verify individual emails by clicking the link received on the emails.
https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-domains.html
From your example: since the domain examaple.com is verified, you don't have to again verify emails(user#example.com) that fall under same domain.
Individual email verification is for scenarios where you cant verify domain by placing dns records. Here you will not be able to receive emails, but if you still want to send emails from an address then you can verify it by clicking the link you receive on your inbox. This can be done with gmail or other mail providers.

How to send AWS SES email to same domain that is verified

I have setup Amazon Simple Email Service account on one my my domains. Lets say it example.com
I am not able to send emails to that same domain I have verified.
meaning sending email from noreply#example.com to myemail#example.com is not happening.
I even tried in AWS console's send test email but couldn't send the email.
I couldn't find in AWS SES documentation saying we can't send emails to same domain.
Can we send emails to same domain in AWS SES? If not is it documented in AWS SES?
If yes how can I send them?
I don't see in AWS SES documentation that it doesn't support sending to the same domain name.
I finally got to know that the domain I'm using is configured with Office 365 email provider, the admin have configured Spam filters such a way that it doesn't even enter user's inbox if they recognized it to be sending automated emails from same domain.
Conclusion: its not an issue from Amazon AWS SES but in-house spam filtering.

AWS SES email receiving - 550 mailbox not found

I've been trying to set up AWS Simple Email Service as a way to forward emails received to my custom domain on to my Gmail account, without any email hosting service required.
I have set up and verified my custom domain (mycustomdomain.com) as well as verified the email address they'll be forwarded to (myemail#gmail.com) as I'm still in Sandbox mode.
Under Email Receiving -> Rule Sets, I have an active / enabled rule set (forward-to-myemail-gmail) which is enabled, doesn't require TLS and has spam/virus scanning on.
There are no recipients specified, which I believe should allow this rule to be triggered for ALL recipients under my custom domain.
I have a single SNS action specified, which is to publish to the SNS topic (sns-forward-to-myemail-gmail) using base64 encoding
I have also set up my SNS topic as above and associated subscription, and have tested sending a notification to this topic manually using the console, so have confirmed it works.
However if I try sending an email to, for example, test#mycustomdomain.com, I get a bounce message back saying:
Address not found
Your message wasn't delivered to test#mycustomdomain.com because the address couldn't be found or is unable to receive email.
The response was:
550 Mailbox does not exist!
I've also confirmed that the MX records have been set up correctly using mxtoolbox.com, which says the domain records point to feedback-smtp.us-west-2.amazonses.com
Any suggestions for what I'm doing wrong? Many thanks!
Ok I figured it out... User error, as expected!
I had two MX records, one for the "mail" subdomain and another for "#" meaning the base domain. Both were set to the feedback endpoint, which was the problem. I think I was misunderstanding the two MX records.
The "mail from" configuration that used the SES feedback endpoint needed to be set for the sending subdomain (mail.mycustomdomain.com) while the SES inbound SMTP endpoint should have been used for the receiving domain (#, which means mycustomdomain.com).
Before when I was setting both to the same value I found either get a verified MAIL FROM or received email but not both. Obvious in hindsight! Hope this helps someone else.
For anyone else that had some trouble understanding ChrisC's answer, here is more detail on what I needed to do. I setup my domain using Route53, but other domain providers is similar.
TL;DR
Create a custom MAIL FROM domain
Add the following records to Route53 or your DNS provider:
Record name
Type
Value/Route traffic to
mail.customdomain.com
MX
10 feedback-smtp.[region].amazonaws.com
customdomain.com
TXT
"v=spf1 include:amazonses.com ~all"
customdomain.com
MX
10 inbound-smtp.[region].amazonaws.com
Outbound mail
Go to the Amazon SES AWS console. Under "Configuration," go to "Verified Identities." Under "Custom MAIL FROM domain," provide a custom subdomain (e.g., mail.customdomain.com). Select the option to add the DNS records (an MX record and a TXT record) to Route53 (or just add them manually). See this page in the AWS docs regarding custom MAIL FROM domains.
Inbound mail
Go to the Route53 AWS console. Under "Hosted zones," click on the domain you want to enable for receiving emails. Add an MX record for the base domain (e.g., customdomain.com) with the following value [priority] inbound-smtp.[region].amazonaws.com, where [region] can be us-east-1, us-west-2, or eu-west 1 (see this page for full details). Do NOT use email-smtp.[region].amazonaws.com for receiving inbound mail. I received a 530 Authentication required error in the bounce email when attempting to do so.
See this page in the AWS docs regarding publishing an MX record for receiving SES email.
Thanks for the answers above. For anyone else working through this, in my case the feedback value (for the mail.xxx.com had to be:
10 feedback-smtp.[region].amazonses.com
While the root domain value had to be:
10 inbound-smtp.[region].amazonaws.com
note that the feedback domain is AMAZONSES while the inbound domain is AMAZONAWS.

How to receive email for domain registered with Amazon Route53

I registered a domain iqxxxx.io on Route53 which will be hosting web service. A hosted zone is generated automatically after the registration is complete. I created a record set which points to an Elastic Beanstalk environment.
In order to enable HTTPS, I tried to request a SSL certificate via AWS Certificate Manager for domain *.iqxxxx.io. I chose "email validation" which means an email will be sent to the domain owner with following emails:
administrator#iqxxxx.io
admin#iqxxxx.io
hostmaster#iqxxxx.io
webmaster#iqxxxx.io
postmaster#iqxxxx.io
When I registered the domain, my own email address is listed for all "Registrant contact", "Administrative contact", "Technical contact", although only "Registrant contact" is shown as verified.
How am I supposed to get all the verification email that was sent to these iqxxxx.io emails? Is that because Administrative contact and Technical contact have not been verified yet? What do I need to do to get these verified?
You can now configure ACM to validate the cert via DNS, which sounds like it would be a much easier solution.
But if you want to do it via email, you will need to create an MX record for your domain, and point it to the appropriate SES endpoint for incoming email.
Then set up a default rule set, and point it to an SNS topic. You can then set up your actual email, confirm your subscription, and then when you try to use email validation for the domain you should receive the 5 emails that get sent (admin#, hostmaster#, etc)
The email body will be in JSON, but you can pull out the confirmation link easily enough.
Answer
You must have an email from one of these emails,
administrator#iqxxxx.io
admin#iqxxxx.io
hostmaster#iqxxxx.io
webmaster#iqxxxx.io
postmaster#iqxxxx.io
AWS will send most of admin#iqxxxx.ie.

AWS SES handle doesn't exist mailbox with Lambda

I try to use AWS SES for handle some app data on get email.
I've verified mydomain.com with AWS SES. I want handle dynamic email to addresses 1#mydomain.com 2#mydoamin.com, where 1,2 id from database.
I want handle it with AWS lambda, but I can not do it because I get:
550 5.1.1 Requested action not taken: mailbox unavailable
Is there any way to bypass the creation of mailboxes?
How can I change to email address via SES, for send all emails to one pre existed mailbox?
Make sure your MX records are correctly setup and propagated.
To check, navigate to your domain's Hosted zone in Route 53, and you should have the MX records like:
10 inbound-smtp.us-east-1.amazonaws.com
20 inbound-smtp.eu-west-1.amazonaws.com
30 inbound-smtp.us-west-2.amazonaws.com
See also: Amazon WorkMail account failing to receive email
First of all, you need to make sure you have your email domain verified under Identity Management - Domains in AWS Console.
After that, you have to verify your RuleSet is active. This means under Email Receiving - Rule Sets - View Active Rule Set you have to see your rule using the defined domain.
In your particular case:
Verify domain mydoamin.com
Check if the Active Rule Set really contains the SES rules for 1#mydoamin.com and .2#mydoamin.com
The error
550 5.1.1 Requested action not taken: mailbox unavailable
is not an AWS Lambda or AWS SES issue. It is an issue on the receiving end of the email. The problem is that there is no one on the receiving end of 1#mydomain.com to receive the email.
Lambda and SES cannot avoid the issue. To handle the issue, you must resolve it on the receiving end by:
creating an inbox, or
setting up aliases, or
wild-card the emails to a default inbox
The technical steps to accomplish this will depend on your receiving-end mail server.
I ran into this problem while setting up email forwarding from one address to another, and ultimately realised that when the SES rule set instructions asked for a 'recipient' email address, it was not the address I was forwarding emails to, but actually the initial email address that was receiving the email.
I was getting same error.
My problem was RuleSets.
SES>Email receiving>Rules Sets.
There should be rules here that allows your mail ID or any mail to your domain.
Encountered the same problem. While my domain was verified with SES I needed to create an SES identity. After creating the identity everything on https://aws.amazon.com/premiumsupport/knowledge-center/ses-receive-inbound-emails/ worked as expected.