Amazon EC2/SES SMTP Timeout
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.
Amazon EC2 and Amazon Simple Email Service (SES) are two integral components of AWS's vast cloud service offerings. EC2 provides scalable computing power, while SES is a flexible and cost-effective email sending service. One common challenge faced by developers and system administrators is SMTP timeout issues when integrating these two services. This article explores the causes and solutions related to SMTP timeouts between Amazon EC2 and SES.
Understanding SMTP Timeout
SMTP (Simple Mail Transfer Protocol) is a protocol used to send emails over the internet. An SMTP timeout occurs when a connection attempt or an operation exceeds a specified time limit, leading to a failure in sending emails. This can be particularly disruptive when configuring EC2 instances to send emails via SES.
Common Causes of SMTP Timeouts
- Network Configurations
- Security Groups and NACLs: EC2 instances use security groups and Network Access Control Lists (NACLs) to manage inbound and outbound traffic. Improper configurations can inadvertently block SMTP traffic, leading to timeouts.
- VPC Peering or Endpoint Issues: If EC2 and SES are in different VPCs, improper configurations in VPC peering or endpoints can cause delays or blockages in email traffic.
- Email Sending Limits and Restrictions
- SES Throttling: SES enforces rate limits on email dispatch. If these limits are exceeded, additional email attempts may time out. Prior to moving out of the SES sandbox environment, strict sending limits can cause frequent timeouts.
- DNS Configuration
- Resolver Configuration: Incorrect DNS resolver settings can cause delays in domain resolution during SMTP transactions, leading to timeouts. EC2 instances should use AWS-provided DNS servers to ensure efficient domain lookups.
Diagnosing SMTP Timeout Issues
- Review Security GroupsEnsure that the security group attached to the EC2 instance allows outbound traffic on port 25 (SMTP), port 465 (SMTPS), or port 587 (submission) as required.
- Verify VPC peering connections and route tables.
- Use a VPC endpoint for SES if needed, particularly in restricted networking environments.
- Regularly review and update security group and network ACL rules.
- Opt for VPC endpoints and hybrid connectivity solutions where applicable.
- Implement logging and monitoring using AWS CloudWatch metrics and logs.
- Set up alerts for SES sending metrics like bounce and complaint rates.
- Configure retry logic in the application code to handle temporary SES throttling.
- Use AWS SDKs or direct SES API calls with exponential backoff techniques for email retries.
Related reading
- Amazon Elastic Beanstalk - Change Timezone
- Amazon Elastic Beanstalk node and npm non-standard install locations
- Amazon ELB for EC2 instances in private subnet in VPC
- Amazon ELB in VPC
- Amazon MWS - request signature calculated does not match the signature provided
- Amazon S3 - How to fix 'The request signature we calculated does not match the signature' error?
- Amazon Kinesis AWS Lambda Retries
- Amazon Kinesis Integration Tests

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.