Set Up Inbound Emails With AWS SES

  1. First you have to add the domain or subdomain to SES Identity Configuration. Therefore, go to SES -> Configuration -> Identities

  2. Create Identity -> Select identity type as domain and type your domain or sub domain. You can keep default values for the other values and hit Create identity

  3. Next, you have add 3 CNAME records and a TXT record to your DNS Registrar. If you have purchased your domain from AWS Route53, you can use Push DNS records to Route53 option.

  4. After that you have to wait until you get your identity record verified. If you have purchased your domain from AWS Route53, it will be few minutes, otherwise it may take longer time.

  5. Add a MX record to your DNS Registrar. The value is
    10 inbound-smtp.region.amazonaws.com
    Here, region must be replaced with the correct region value.
    For my case, it's us-east-1

  6. Next, go to, SES -> Configuration -> Email receiving

  7. Then, create a rule set, adding a name. Then, enable the result set

  8. Then, create a rule, adding a name, keep the default values on the step 2. In the step 3, select Deliver to S3

  9. Next, create a new S3 bucket using Create S3 bucket option given here or select an existing bucket. You can keep the other values as it is and hit Next. If you select an existing S3 bucket, you may have to update the bucket policies.

    Example Bucket Policy

    {
    "Version": "2012-10-17",
    "Statement": [
    {
    "Sid": "AllowSESPuts-1721471495367",
    "Effect": "Allow",
    "Principal": {
    "Service": "ses.amazonaws.com"
    },
    "Action": "s3:PutObject", "Resource":
    "arn:aws:s3:::bucket-name/*",
    "Condition": {
    "StringEquals": { "AWS:SourceAccount": "your-aws-accout-id" }, "StringLike": { "AWS:SourceArn": "arn:aws:ses:" }
    }
    } ]
    }

  10. Next, review and hit Create rule

  11. Next, go to the S3 bucket and see. I should have an object as shown

  12. Now send an email for your personal email setting to email as test@yourdomain

    In my case, it's . Then there should be another record on your S3 bucket. If not, refresh and see.

  13. After receiving it to the S3 bucket, you can process the file and do anything that you want to do, according to your requirement