Receiving Email is not working in Amazon SES
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.
Amazon Simple Email Service (Amazon SES) is a service provided by AWS that is often used for sending and receiving emails. It is renowned for its scalability, reliability, and cost-effectiveness. However, there can be instances where receiving emails doesn't work as expected. This issue could stem from various technical aspects of SES or configuration errors. Here is a detailed exploration of what might go wrong and how to address these issues.
Understanding Amazon SES Receiving Process
To comprehend the issues encountered while receiving emails with Amazon SES, it's crucial to understand the typical workflow:
- Domain Verification: Before Amazon SES can accept incoming emails on your behalf, you need to verify your domain.
- Setting up MX Records: Configure your Domain Name System (DNS) to publish the Mail Exchange (MX) records that route incoming email through Amazon SES.
- Rule Sets: Create a receipt rule set to define how incoming emails are processed. This may include storing the mail in an Amazon S3 bucket, triggering an AWS Lambda function, or sending the mail to Amazon SNS for notifications.
Common Issues and Solutions
1. Domain Verification Issues
Failure to verify your domain can lead to emails not being received.
- Problem: Domain is not verified or pending verification.
- Solution: Ensure that the verification process was correctly followed by adding the required verification token to your DNS records. Once done, re-initiate the verification within the SES console.
2. Incorrect MX Records
Misconfigured MX records can prevent emails from reaching Amazon SES.
- Problem: MX records are missing or incorrect.
- Solution: Update the MX records in your DNS settings to match those provided by Amazon SES. The general format is:
- Problem: No active rule set or rule conditions do not match incoming emails.
- Solution: Confirm that a receipt rule set is active. Then, verify that the rules are configured to handle the messages arriving at your domain. Here is a simple rule set that stores emails in S3:
- Problem: IAM role attached does not have necessary permissions.
- Solution: Ensure that IAM roles associated with SES, S3, Lambda, or the service you're using for actions have correct permissions. Here’s a sample policy for S3 actions:
- Problem: Incoming email exceeds size limits or SES receives too many emails.
- Solution: Break down large emails to meet SES size requirements. Monitor SES usage to ensure you stay below set quotas.
Related reading
- Recommended GCE service account authentication inside Docker container?
- Recommended way to manage credentials with multiple AWS accounts?
- Recursive Fetch All Items In DynamoDB Query using Node JS
- Recursive list s3 bucket contents with AWS CLI
- Receiving kAUGraphErr_CannotDoInCurrentContext when calling AUGraphStart for playback
- Reconnecting to Kafka with node-rdkafka is slow & inconsistent
- Redirect http// requests to https// on AWS API Gateway using Custom Domains
- Redirect non www to www using ALB Ingress Controller

System Design Fundamentals
Build a strong foundation in designing scalable, reliable distributed systems.
View the courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.