SES Sandbox Mode: Por Que Você Só Consegue Enviar E-mails para Si Mesmo e Como Sair Disso
Você configurou o Amazon SES, verificou seu domínio, testou o envio para o seu próprio endereço e tudo funcionou perfeitamente — mas quando tentou disparar e-mails para os seus clientes reais, a requisição foi bloqueada. Isso é o SES Sandbox Mode, uma restrição padrão que toda conta AWS nova enfrenta antes de solicitar acesso à produção.
TL;DR — SES Sandbox Mode
| Aspecto | Sandbox | Produção |
|---|---|---|
| Destinatários permitidos | Somente endereços verificados | Qualquer endereço |
| Limite de envio diário | 200 e-mails/dia | Conforme solicitado |
| Taxa máxima de envio | 1 e-mail/segundo | Conforme solicitado |
| Como sair | — | Solicitar via Service Quotas ou console SES |
Limites exatos podem variar. Sempre consulte a documentação oficial do SES.
Como o SES Sandbox Funciona na Prática
O Amazon SES coloca todas as contas novas em modo Sandbox automaticamente. A lógica é simples: a AWS precisa proteger a reputação dos IPs compartilhados do serviço contra spammers que criam contas novas para disparar campanhas abusivas. Enquanto você está no Sandbox, o SES age como um filtro rígido — qualquer tentativa de enviar para um endereço não verificado retorna um erro imediato.
por padrão"] B --> C["Verificar Identidade
Domínio ou E-mail"] C --> D{"Destinatário
verificado?"} D -- Sim --> E["Envio permitido
no Sandbox"] D -- Não --> F["MessageRejected
erro retornado"] C --> G["Configurar Bounce
e Complaint via SNS"] G --> H["Solicitar Acesso
à Produção"] H --> I{"AWS aprova?"} I -- Sim --> J["Produção Liberada
Qualquer destinatário"] I -- Não --> K["Responder ticket
com mais detalhes"] K --> H
- Conta nova criada: toda conta AWS começa no Sandbox automaticamente, sem exceção.
- Verificação de identidade: você precisa verificar o domínio remetente ou o endereço de e-mail antes de qualquer envio.
- Sandbox — envio restrito: apenas destinatários previamente verificados na sua conta aceitam e-mails.
- Solicitação de produção: você submete um caso de suporte com justificativa de uso.
- Produção liberada: após aprovação, os limites de envio aumentam e qualquer destinatário é permitido.
Pense no Sandbox como um ambiente de quarentena de reputação. A AWS não sabe nada sobre você ainda — se vai enviar newsletters legítimas ou spam em massa. O Sandbox é o período de observação antes de confiar a você acesso irrestrito à infraestrutura de e-mail deles.
Pré-requisitos: Verificar Identidade Remetente no SES
Antes de qualquer envio — mesmo no Sandbox — você precisa verificar a identidade do remetente. O SES suporta verificação de domínio completo (recomendado para produção) ou de endereço de e-mail individual. A verificação de domínio via DKIM é o caminho correto para ambientes produtivos porque cobre todos os endereços daquele domínio e melhora a entregabilidade.
Verificar um Domínio com DKIM
# Criar identidade de domínio e obter registros DKIM para publicar no DNS
aws sesv2 create-email-identity \
--email-identity exemplo.com.br \
--dkim-signing-attributes SigningAttributesOrigin=AWS_SES \
--region us-east-1
O retorno inclui os três registros CNAME que você precisa publicar no DNS do domínio. O SES verifica automaticamente a presença desses registros e ativa a identidade quando encontrá-los.
Verificar um Endereço de E-mail Individual
# Verificar um endereço de e-mail específico (útil para testes no Sandbox)
aws sesv2 create-email-identity \
--email-identity contato@exemplo.com.br \
--region us-east-1
O SES envia um e-mail de confirmação para o endereço informado. O destinatário precisa clicar no link para completar a verificação. No Sandbox, tanto o remetente quanto o destinatário precisam ser identidades verificadas na sua conta.
Confirmar Status da Verificação
aws sesv2 get-email-identity \
--email-identity exemplo.com.br \
--region us-east-1
Configurar Notificações de Bounce e Complaint — Obrigatório Antes de Solicitar Produção
A AWS avalia a maturidade operacional da sua configuração antes de aprovar a saída do Sandbox. Uma conta que não monitora bounces e complaints sinaliza risco — se você não sabe quando e-mails estão falhando ou sendo marcados como spam, não tem como manter a reputação do remetente. Configurar essas notificações via SNS é o passo que separa uma solicitação aprovada de uma rejeitada.
Criar Tópico SNS para Notificações
aws sns create-topic \
--name ses-notifications \
--region us-east-1
Criar Configuration Set
O configuration set é o mecanismo que associa eventos de envio (bounce, complaint, delivery) a destinos de notificação.
aws sesv2 create-configuration-set \
--configuration-set-name default \
--region us-east-1
Associar SNS ao Configuration Set
aws sesv2 create-configuration-set-event-destination \
--configuration-set-name default \
--event-destination-name bounce-complaint-destination \
--event-destination '{"Enabled": true, "MatchingEventTypes": ["BOUNCE", "COMPLAINT", "DELIVERY"], "SnsDestination": {"TopicArn": "arn:aws:sns:us-east-1:123456789012:ses-notifications"}}' \
--region us-east-1
Desativar Encaminhamento de E-mail para Feedback (Recomendado)
Por padrão, o SES encaminha notificações de bounce e complaint por e-mail. Quando você tem o SNS configurado, esse encaminhamento é redundante e pode gerar ruído. Desative-o explicitamente:
aws sesv2 put-email-identity-feedback-attributes \
--email-identity exemplo.com.br \
--no-email-forwarding-enabled \
--region us-east-1
Política IAM Necessária para Essa Configuração
🔽 Clique para expandir a política IAM
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "SESIdentityManagement",
"Effect": "Allow",
"Action": [
"sesv2:CreateEmailIdentity",
"sesv2:GetEmailIdentity",
"sesv2:PutEmailIdentityFeedbackAttributes",
"sesv2:PutEmailIdentityDkimAttributes",
"sesv2:CreateConfigurationSet",
"sesv2:CreateConfigurationSetEventDestination",
"sesv2:SendEmail"
],
"Resource": "*"
},
{
"Sid": "SNSTopicManagement",
"Effect": "Allow",
"Action": [
"sns:CreateTopic",
"sns:SetTopicAttributes",
"sns:AddPermission",
"sns:GetTopicAttributes"
],
"Resource": "arn:aws:sns:us-east-1:123456789012:ses-notifications"
}
]
}
Como Solicitar a Saída do SES Sandbox — Passo a Passo
A solicitação de saída do Sandbox é feita via AWS Service Quotas ou diretamente pelo console do SES. O caminho pelo Service Quotas é o mais direto e permite acompanhar o status da solicitação programaticamente.
Opção 1: Via Console do SES (Recomendado para Primeira Solicitação)
- Acesse o console do Amazon SES na região onde você opera.
- No menu lateral, clique em Account dashboard.
- Localize o painel Sending limits e clique em Request production access.
- Preencha o formulário com: tipo de e-mail (transacional ou marketing), URL do site, processo de opt-in, e como você lida com bounces e complaints.
- Submeta. O tempo de resposta típico é de 24 horas, mas pode variar.
Opção 2: Via AWS Service Quotas (CLI)
aws service-quotas request-service-quota-increase \
--service-code ses \
--quota-code L-804C8AE8 \
--desired-value 50000 \
--region us-east-1
O código de quota L-804C8AE8 corresponde ao limite de envio diário do SES. Verifique os códigos disponíveis para sua região em Manage sending quotas.
O Que Escrever no Formulário de Solicitação
A AWS rejeita solicitações vagas. A equipe de revisão quer entender o seu caso de uso concreto. Uma solicitação bem escrita responde diretamente a três perguntas:
- Quem são os destinatários? — Clientes que se cadastraram voluntariamente na sua plataforma via formulário de opt-in explícito.
- Que tipo de e-mail você envia? — E-mails transacionais (confirmações de pedido, redefinição de senha) ou campanhas de marketing com link de descadastro.
- Como você trata bounces e complaints? — Notificações via SNS configuradas, supressão automática de endereços com bounce permanente, monitoramento de taxa de complaint.
Submetida"] --> B["Revisão AWS
24-48h típico"] B --> C{"Decisão"} C -- Aprovado --> D["Produção Ativa
Limites aumentados"] C -- Rejeitado --> E["Perguntas adicionais
no ticket"] E --> F["Responder com
detalhes do caso de uso"] F --> B
- Solicitação submetida: você envia o formulário com justificativa de uso.
- Revisão AWS: a equipe avalia o caso de uso, configuração de feedback e histórico da conta.
- Aprovado: limites aumentados, qualquer destinatário liberado — fluxo normal de produção.
- Rejeitado: a AWS retorna com perguntas adicionais ou solicita ajustes. Responda diretamente no ticket com informações complementares e resubmeta.
Monitoramento de Reputação Após Sair do Sandbox
Sair do Sandbox não é o fim do processo — é o começo da responsabilidade. A AWS pode colocar sua conta em probation ou suspender o envio se as taxas de bounce e complaint ultrapassarem os limites aceitáveis. Monitorar essas métricas continuamente é o que mantém sua conta em produção.
As métricas de reputação estão disponíveis em dois lugares:
- Console do SES → Reputation metrics: exibe as taxas de bounce e complaint calculadas pelo SES para a sua conta, com indicadores visuais de saúde.
- Amazon CloudWatch, namespace
AWS/SES: métricas comoReputation.BounceRateeReputation.ComplaintRateestão disponíveis para criação de alarmes automatizados.
Criar Alarme de Taxa de Complaint no CloudWatch
aws cloudwatch put-metric-alarm \
--alarm-name ses-complaint-rate-high \
--alarm-description 'Taxa de complaint SES acima do limite seguro' \
--metric-name Reputation.ComplaintRate \
--namespace AWS/SES \
--statistic Average \
--period 86400 \
--threshold 0.001 \
--comparison-operator GreaterThanOrEqualToThreshold \
--evaluation-periods 1 \
--alarm-actions arn:aws:sns:us-east-1:123456789012:ses-notifications \
--region us-east-1
Diagnóstico: Erro Comum ao Tentar Enviar Fora do Sandbox
O erro que você vê quando tenta enviar para um destinatário não verificado enquanto ainda está no Sandbox é direto:
An error occurred (MessageRejected) when calling the SendEmail operation:
Email address is not verified. The following identities failed the check in region US-EAST-1:
destinatario@cliente.com
A primeira reação de muitos engenheiros é verificar a configuração DKIM ou a política IAM — ambas estão corretas. O problema não é de permissão nem de autenticação. É de restrição de ambiente. Enquanto a conta estiver no Sandbox, o SES rejeita qualquer destinatário que não seja uma identidade verificada naquela conta, independentemente de qualquer outra configuração.
Para confirmar que sua conta ainda está no Sandbox:
aws sesv2 get-account \
--region us-east-1
Procure o campo ProductionAccessEnabled no retorno. Se o valor for false, você ainda está no Sandbox.
Próximos Passos e Recursos Adicionais
Com a conta fora do Sandbox e as notificações de bounce e complaint configuradas, o próximo passo operacional é implementar uma lista de supressão para evitar reenvios para endereços com bounce permanente — o SES mantém uma lista de supressão no nível da conta que pode ser gerenciada via sesv2 put-suppressed-destination. Para campanhas de marketing, considere também configurar um IP dedicado se o volume de envio justificar o custo de isolamento de reputação.
- Documentação oficial: Request production access
- Gerenciar cotas de envio do SES
- Monitorar envios com notificações SNS
Glossário — Termos-Chave do SES Sandbox
| Termo | Definição |
|---|---|
| Sandbox Mode | Estado padrão de contas SES novas. Restringe envios a identidades verificadas e aplica limites baixos de volume. |
| Identidade Verificada | Domínio ou endereço de e-mail confirmado pelo SES via DNS (DKIM/DMARC) ou link de verificação. |
| Bounce Rate | Percentual de e-mails enviados que não foram entregues. Taxas altas indicam listas de e-mail de baixa qualidade. |
| Complaint Rate | Percentual de destinatários que marcaram o e-mail como spam. Métrica crítica para manutenção da conta em produção. |
| Configuration Set | Conjunto de regras do SES que define para onde eventos de envio (bounce, delivery, complaint) são roteados. |
Comentários
Postar um comentário