A brand-new AWS account cannot email arbitrary recipients through Amazon SES. What is the SES sandbox, exactly what does it restrict, and how do you get production access?
answer
- default state of a new account
- per Region, not per account
- recipients must be verified too
- 200 per day, 1 per second
- request production access for that Region
basics
~20 sThe SES sandbox is the default restricted state of every new SES account, per Region. In it you may only send to identities you have verified (plus the SES mailbox simulator), at a low daily cap and send rate. You leave it by requesting production access for that Region.
solid answer
~50 sEvery AWS account starts in the Amazon SES sandbox, and the sandbox is **per Region**, not per account. While sandboxed you can only send *to* addresses or domains you have verified yourself, plus the SES mailbox simulator addresses such as `[email protected]`; your daily cap and per-second send rate are also tiny (200 messages per 24 hours and 1 message per second as of 2025). Sending to an unverified recipient fails at the API call, not silently at delivery. To get out you request production access for that Region from the SES console (SESv2 exposes it as `PutAccountDetails`), describing your use case, how recipients opted in, and how you will process bounces and complaints. The classic production incident is a team that escaped the sandbox in `us-east-1` months ago, deploys to a second Region, and discovers that Region is still sandboxed.
code
bash · 9 lines# Where do we actually stand: sandbox status and current quota, per Region
aws sesv2 get-account --region eu-west-1 \
--query '{Sandbox:ProductionAccessEnabled,Quota:SendQuota}'
# Safe smoke test that works even inside the sandbox
aws sesv2 send-email --region eu-west-1 \
--from-email-address [email protected] \
--destination [email protected] \
--content '{"Simple":{"Subject":{"Data":"ping"},"Body":{"Text":{"Data":"hello"}}}}'go deeper
Be able to say plainly that a new SES account is sandboxed: you can only send to addresses you verified, at a very small daily cap, and you must request production access to email real customers.
Explain that the sandbox, identity verification and quotas are all per Region, that an unverified recipient fails the API call rather than bouncing later, and that the mailbox simulator lets you test without real recipients.
Show that you treat production access and quota headroom as a pre-launch checklist item across every Region you send from, and that you can answer AWS's consent and bounce-handling questions with a real automated suppression path.
Own the policy: which Regions send mail at all, whether marketing and transactional mail share an account, and how sending reputation is governed so one team's campaign cannot put another team's password-reset mail at risk.
## What the sandbox is Amazon SES is a shared sending platform: mail leaving it carries the reputation of AWS IP space, so AWS does not let an unvetted account start blasting strangers. Every new account therefore begins in the **SES sandbox**, a deliberately crippled mode that lets you build and test end to end without being able to reach anyone who has not agreed to hear from you. The sandbox is scoped to **one account in one Region**. SES identities, quotas, suppression state and sandbox status all live per Region, which is the single most commonly missed fact about it. ## The three restrictions 1. **Recipients must be verified.** In the sandbox, the *destination* must itself be a verified identity — a verified email address, or an address inside a verified domain. Outside the sandbox only the *sender* identity has to be verified. Sending to anything else returns an error from the `SendEmail` call itself (`MessageRejected` with a message about the address not being verified); it is a synchronous API failure, not a delivery failure you find later in a bounce feed. 2. **A small 24-hour cap.** As of 2025 the sandbox allows 200 messages per rolling 24-hour period. This is `Max24HourSend` in the quota returned by the SESv2 `GetAccount` call. 3. **A low maximum send rate.** As of 2025, 1 message per second (`MaxSendRate`). Exceed it and calls are throttled rather than queued. The **mailbox simulator** is the escape hatch for testing: addresses at `simulator.amazonses.com` — `success@`, `bounce@`, `complaint@`, `ooto@`, `suppressionlist@` — are always accepted, even in the sandbox, and never leave AWS. They still count against your quota, and they let you exercise your bounce and complaint handling before you have any real recipients. ## Getting production access You request production access from the SES console for the Region you want (the SESv2 API models the same thing as `PutAccountDetails`). AWS asks a small number of pointed questions, and the quality of your answers decides the outcome: - **What kind of mail is this?** Transactional (password resets, receipts) is approved far more readily than marketing. - **How did recipients consent?** "We bought a list" is a rejection. - **How do you handle bounces and complaints?** You are expected to have an automated path that stops sending to a hard-bounced or complaining address, not a human reading a mailbox. - **How do people unsubscribe?** Approval is usually quick (commonly within a day), and it comes with a starting quota — production access does not mean unlimited sending. SES raises `Max24HourSend` and `MaxSendRate` over time as you send clean volume, and you can request a specific increase through Service Quotas or a support case when you know a launch is coming. ## Why interviewers ask this Because it is the classic launch-day outage, and it is entirely predictable. The pattern is always the same: everything works in staging because the five test addresses are verified; the feature ships; every real signup email is rejected at the API. Or: the service is deployed to a new Region for latency or DR and mail stops, because identities and sandbox status did not travel with the deployment. The correct habit is to treat "production access + verified sending identity + a quota that covers projected volume, in every Region we send from" as a launch checklist item that is done weeks early, not on the day. ## Practical notes - Identity verification is also per Region. A domain verified in `eu-west-1` is not verified in `us-east-1`; you publish the DNS records once but complete verification in each Region you send from. - Reading your live position is one call: the SESv2 `GetAccount` operation returns `SendQuota` with `Max24HourSend`, `MaxSendRate` and `SentLast24Hours`, plus whether the account is in the sandbox. Alarm on `SentLast24Hours` approaching the cap rather than discovering it during a campaign. - Leaving the sandbox does not relax anything about *sender* verification: you must still send from a verified identity, always.
- You escaped the sandbox six months ago, but a new deployment in another Region cannot email customers. What happened?Sandbox status, identity verification and sending quotas are all per Region. The new Region is still sandboxed and probably has no verified sending identity, so sends to real recipients are rejected at the API. Fix it by verifying the identity there and requesting production access for that Region — and add both to the deployment checklist for every Region you send from.
- How would you test bounce and complaint handling before you have any real recipients?Use the SES mailbox simulator: send to `[email protected]`, `[email protected]` or `[email protected]`. They are accepted even in the sandbox, never deliver to a real person, and generate genuine bounce and complaint events so you can prove your handling path works end to end.
- Does production access mean you can send as much as you want?No. Production access only removes the verified-recipient restriction and raises you off the sandbox floor; you still have a `Max24HourSend` cap and a `MaxSendRate`. SES raises them over time as you send clean traffic, and you can request a specific increase ahead of a known launch rather than discovering the ceiling mid-campaign.
saying these in an interview costs you the question
- Thinks the sandbox is account-wide, not per Region
- Believes only the sender needs verifying in the sandbox
- Assumes production access means unlimited sending
- Plans to request production access on launch day
- Cannot name the mailbox simulator for safe testing