SES verification email not received - email

I have a verified Domain in Amazon SES with a single email address. This address works fine and I can send and receive mails no problem.
I want to add a second email address to the domain, so I have copied the original account settings. There is a Rule Set for the new address that send to a S3 bucket and to WorkMail via an SNS topic. I can send mails from this new address. However the status is pending so I cannot reveive.
When I try to resend the verification email, the mail get sresent successfully, but I never receive the mail, neither in the S3 bucket nor in WorkMail.
What am I doing wrong?

You need to verify the email address by logging into the email client that you used to create that email address, and then clicking on the link that you get. So if you are using Workmail as your email client, just as an example, you need to create the email address there, and then add it to your list of addresses in Amazon SES and verify it. Summarized in 3 steps:
Create an address in whatever email client you use
Go to Amazon SES and add it to your list of email address identities in Amazon SES
Send the verification email
Go back to your email client (Workmail or whatever you're using to check your emails), open verification email, and click on the link
Now your rule sets should work.

I spend some time there... AWS has a trick there. Create AWS Work email(same you want to verify) first. Follow youtube videos-pretty easy. Then go to Amazon Ses and create email to you want to verify. The email will come to Amazon Work email. You will verify it from the web page mail application. After you need to ask Amazon to move your from Sand Box environment to Production. You will find links in SES. You fill simple form and Amazon will make it work for you. Then go back and delete Work mail or keep it(only costs 4USD per user)

Related

ASW SES not sending emails with no-reply#my.domain

I have a verified domain configured in SES. When I send an email with no-reply#my.domain, SES is not sending the email. If I use a valid email address from that domain, SES delivers them.
Does anyone know why this is happening? If my memory doesn't fail me, this used to work just fine as I've had this setup for years. Did something change recently in the AWS SES service?
I have looked for any mention regarding this and all I found is that the domain needs to be verified which it is.
Any help/insight would be greatly appreciated.
According to AWS SES documentation, such emails are hight not recommended
Avoid using a no-reply address, such as no-reply#example.com, as your
"From" or "Reply-to" address. Using a no-reply# email address sends
your recipients a clear message: that you aren't offering them a way
to contact you, and that you're not interested in their feedback.
https://docs.aws.amazon.com/ses/latest/DeveloperGuide/tips-and-best-practices.html
In addition to the domain being verified, the sender email address that you want to use should be verified too. AWS will send you a mail to this address to confirm that it exists. If it doesn't exist, you can create a email receiving rule that will save the email into S3. You can then dig the verification link from there.

How does an SMTP server resolve ambiguity?

Suppose I own an email 'demo#gmail.com'. Now, I create a new Microsoft account using my existing email. Thus I get another email 'demo#gmail.com', but this one is served by Microsoft.
So the situation is: one email and two providers.
If I send a hello email to 'demo#gmail.com' using my personal SMTP server, to which of the above will it send: will it send to the one hosted by Microsoft or the one hosted by Google?
How does it solve such an ambiguity? What are the factors that influence this?
This is a very common problem because many providers are giving us an option to create a new account using our existing email.
My observations:
I saw the emails inside the inboxes of both the services. I found that they had completely different emails.
There was no email which was common to both the inboxes. So there must be some mechanism to deal with it.
Let us look at the problem the other way round: If I had an email 'demo#outlook.com' initially and I created a new Google Account with this email address, then:
An email sent to this email address from another gmail account goes to the Google's server. An email sent to this email address from an Outlook also goes to the Google's servers.
There are two different ways of looking up an email. The 'normal' way:
You send an email to an server, in this example gmail.com.
Your mail delivery agent looks for mx record of gmail.comand send it to the ip-address of gmail.com.
If an email is delivered locally by the domain outlook.com it perhaps doesn't lookup the mx record, but lookups in a local database if the email-address exist there, and sends it to the ip-address of the outlook.com.
I think in the inbox of outlook.com are only microsoft emails.
More details can be found at https://www.socketlabs.com/blog/smtp-email-delivery/

Can we send and receive email via Amazon SES?

I have set up Amazon SES for sending emails from my Java application. I also need to receive emails. I see that there is an option to receive emails using SES. But the docs are bit confusing. If I understand them correct, we can only receive emails from the domains that we own using SES.
The following doc says the same:
SES Doc
I just want to know if SES will help me to receive emails from or to various domains including Gmail or only from the domains I own.
You can receive emails from any email address/domain using AWS SES.
Edit: The process of verifying the domain is to prove that you own/control it (the domain), but once you verify it you can send email to any domain, and receive email from any domain. The verification has to do with allowing you to receive email for that domain, or send email via that domain - it has nothing to do with the domain of the people that send you an email.
Before you can receive email for a domain using Amazon SES, you must
prove that you own the domain by verifying it with Amazon SES.
Although Amazon SES enables you to verify single email addresses, you
must verify a domain if you want to use Amazon SES for email
receiving. You can verify and receive email with Amazon SES for any
domain that you own, but it is easier to set up a domain that you have
registered with Amazon Route 53.
http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-getting-started-verify.html
Currently Amazon do additional restriction. When you create new SES account, you are in sandbox.
However, when your account is in the sandbox, we apply the following restrictions to your account:
You can only send mail to verified email addresses and domains, or to the Amazon SES mailbox simulator.
You can only send mail from verified email addresses and domains.
You can send a maximum of 200 messages per 24-hour period.
You can send a maximum of 1 message per second.
To be able to send emails to different domain you should Moving Out of the Amazon SES Sandbox
To be able to receive emails, you must forward them to services like S3 or WorkMail for example
See also

Can I set up a rule so that all bounced emails still show up in my bucket for Amazon SES?

Edit: To clarify what I was trying to do, I want all received emails to my SES domains to be saved a bucket, even if there is no email inbox to receive the email, instead of sending a bounce message to the sender. Answered below.
I've created an Amazon SES account, verified my domain name and I have set it up to forward emails to an S3 bucket. I am able to send emails from my domain and they appear just fine, but when I receive emails, they do not appear in my S3 bucket. Instead I get bounce saying the mail is undeliverable:
Delivery to the following recipient failed permanently:
test#XX.XXXXX.com
Technical details of permanent failure:
Google tried to deliver your message, but it was rejected by the server for the recipient domain XXXX.XXXX.com by feedback-smtp.us-west-2.amazonses.com. [54.240.249.182].
The error that the other server returned was:
550 Mailbox does not exist!
I would like all emails that are received (whether or not the mailbox exists) to go to my S3 bucket, and not send bounce messages. Is this possible? It sounds like I may need to set up an inbox, but does SES allow me to create one that is a global/wildcard mailbox that just receives all emails? I'm going to parse the responses myself so I don't need or want a mail client to handle parsing the emails.
Edit : To clarify : XXXX.com is my domain name, not an external domain. So I am sending an email from gmail to a verified domain name that I control, with MX records pointing to SES. I realize that of course if I send an email to a non existent email address at another domain it will bounce; the question is why it is bouncing off of an SES domain under my control.
Edit2: I found a workaround. If I remove the domain name from my ruleset so that ALL domains go to the same S3 bucket, it works as expected: The email goes to the S3 bucket, and no bounce email is sent.
Per suggestion in the comments, I'm answering the question with my own solution. If you create a receipt rule with a blank domain (so it covers all domains) that goes to an S3 bucket, the emails show up as expected. The rulesets are documented here:
http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-getting-started-receipt-rule.html

JavaMail to send email out which server?

Here is my issue, I'm creating a website with a little login and resetting password. It's basic stuff, when user forget the password they can click the link and my application will send an email with a link to reset the password. Now, I'm using Google App to send/receive email so I created a new alias like noreply#company.com.
And I just got a confirm email from Google that I'm not allowed to use Google Server to send out email by JavaMail, because they do not support JavaMail as a mail client, the issue that I'm having is I'm getting AuthenticationException back from smtp.google.com.
Moreover, I'm using Amazon EC2 to host the application as well, and amazon provides SES service to send out emails. So, the question would be can I use Google App to host our company email for every employee, but can I still use Amazon SES to send out emails by JavaMail within the same domain name as we are using with Google Apps?. So, the emails that we'll be sending out would be noreply#company.com but will be from Amazon SES.
I'm not sure if I'm making this clear enough, my concern would be we redirect email MX Record to Google App already, I think we cannot redirect to Google and Amazon at the same time?
The application we are writing is based on Grails, so the email would be from Spring Email
Cheers,
Based on my usage of Amazon SES, you should be able to use the configuration you are suggesting without any issues. You do not need to add/change any MX record when using SES, because SES does not allow you to receive emails. It is only a service for sending (relaying) email messages, i.e., as far as I understood your needs, it will serve you perfectly, and your source email address will be the same as you use today.
When you sign up for SES and want to start sending test messages, you need to verify your source and destination email addresses before actually sending emails. You can achieve this verification through either scripting (ses-verify-email-address.pl) or API (VerifyEmailAddress on AWS SDK). After sending the verification request, you should receive an email address on the verified account. Just follow the message instructions and you can safely send some test messages.
When you are satisfied with your testing, you should request production access, and after this step, you no longer need to perform verification on destination e-mail addresses.
In order to call the API, I think you can use the AWS SDK for Java without problems in your application.
See more on:
http://aws.amazon.com/ses/
http://aws.amazon.com/sdkforjava/