Amazon Simple Email Service (SES) is a bulk and transactional email-sending service built on Amazon’s infrastructure used for years to send targeted emails to millions of customers. One of the main tasks it tries to accomplish is providing a service that can deliver large amounts of emails that are not rejected by destination ISPs which enforce filtering meant to deal with spam, as emphasized by Chris Wheeler, Technical Program Manager for Amazon SES:
You must get your house in order before sending your first piece of mail. Otherwise, your mail will end up in the spam folder, may not be delivered at all, or you may be blocked from sending any more mail.
To avoid spammers sending emails from SES, Amazon uses several tactics. Each email is programmatically scanned before being sent in an attempt to establish if the message is spam or not, and if includes malware. Messages tagged as spam by Amazon’s filters are not delivered and are reported back to users so they can change the content. The user is also informed if a message passes Amazon’s filters but is rejected by the destination ISP for spamming reasons. This helps Amazon have an idea about the quality of the emails sent by a certain user, talking the liberty to suspend an account that seems to be spamming until further investigation is carried on.
Then, a company wanting to use the service starts with a “sandbox”, a limited SES account allowing them to send maximum 200 messages/day, each one of them to a verified address. This helps with developing and testing the application sending emails, and to gain a good reputation by sending emails passing through filters. The next step is using the production account which allows sending emails to unverified addresses, but with a limit of 1,000 messages/day. This quota is gradually raised based on user’s need and a combination of several factors: “the amount of email that you send, the number of rejections and bounces that occur, and the number of complaints that it generates.” When all conditions are met, the quota is raised to 10,000 emails/day after 3 days, and 1M emails/days after 2 weeks. There is also a limit regarding the number of emails sent per second, starting with 1/sec, then 10/sec, the highest being 90/sec. More emails per day or per second can be sent after contacting Amazon and getting special approval. The entire process is designed to ensure users are not using SES to send spam.
SES can be programmatically accessed via an API containing methods for verifying addresses, sending emails, and getting send statistics. A command line can also be used, or by routing the Mail Transfer Agent through SES.
Amazon SES is free for 2,000 emails/day for users of the EC2 service. Those who need more will have to pay $0.10 per 1,000 emails sent. Additional fees apply for the total amount of data delivered in/out of Amazon.