Verifique primeiro o sandbox, pois ele determina se isso funcionará. Toda nova conta do SES começa no sandbox em cada Region e, enquanto estiver nele, o SES entrega apenas para endereços verificados, domínios verificados e seu próprio simulador de caixa de correio. Além disso, há um limite de 200 mensagens a cada 24 horas e uma mensagem por segundo.
Verificar um endereço do Email Spam Tester não contorna essa restrição. O SES verifica um destinatário enviando um e-mail com um link e, como nossos endereços aceitam exatamente uma mensagem antes de serem encerrados, o e-mail de verificação consumiria esse único recebimento. Portanto, na prática, você precisa de acesso à produção na Region de onde envia. A AWS promete uma resposta inicial a essa solicitação em até 96 horas.
Como o status do sandbox é específico de cada Region, uma conta que esteja em produção em eu-west-1 ainda pode estar no sandbox em us-east-1. As identidades também são específicas de cada Region, e cada uma tem seus próprios registros DKIM.
Obtenha um endereço e envie uma mensagem
Abra email-spam-tester.com e copie o endereço exibido. Ele não exige conta nem chave de API e tem o formato test-, seguido de vinte caracteres, em t.email-spam-tester.com. Você tem uma hora e pode enviar uma mensagem, então prepare o comando de envio antes de obter o endereço.
O envio mais simples usa a CLI, adaptado do próprio exemplo da AWS na página de tenants do SES, sem os parâmetros de tenant e configuration set:
aws sesv2 send-email \
--from-email-address "sender@yourdomain.com" \
--destination "ToAddresses=test-xxxxxxxxxxxxxxxxxxxx@t.email-spam-tester.com" \
--content "Simple={Subject={Data='Test Subject',Charset=utf-8},Body={Text={Data='Test email body',Charset=utf-8}}}"
O endereço From deve ser uma identidade verificada, mesmo em produção. Um corpo somente em texto como este é suficiente para testar a autenticação e o IP, mas não informa quase nada sobre o conteúdo. Para obter um resultado real, envie a mensagem que sua aplicação realmente envia, incluindo a parte HTML e os cabeçalhos. Use também o mesmo fluxo de código, seja o send_email do boto3, uma biblioteca SMTP ou outra opção. Se os envios de produção usarem um configuration set, adicione também --configuration-set-name aqui, para que o teste passe pelas mesmas configurações.
O teste de entrega na caixa de entrada usa o mesmo comando. As caixas de entrada dos provedores são adicionadas a ToAddresses junto com o endereço de teste, e o marcador é adicionado aos dados de Subject. Assim, uma única chamada preenche dois relatórios. O segundo mostra a pasta em que a mensagem chegou no Gmail, Outlook, Yahoo e em outros provedores. Essas caixas de entrada também não são verificadas, então isso também exige acesso de produção.
Também é possível usar o console. Abra Configuration > Identities, clique na identidade e escolha Send test email. Selecione Raw se quiser colar uma mensagem MIME completa com seus próprios cabeçalhos. A AWS descreve o console como uma ferramenta normalmente usada apenas para e-mails de teste, e a documentação não descreve nenhum prefixo de teste nem outra alteração na mensagem. No sandbox, o campo Custom recipient exige um endereço verificado, o que leva você de volta ao problema acima.
Como uma identidade SES recém-criada aparece no relatório
Do relatório · Autenticação
- SPFaprovadonão alinhadoO MAIL FROM é um subdomínio de amazonses.com, não do seu domínio.
- DKIMaprovadoalinhadoEasy DKIM assina todas as mensagens com uma chave de 2048 bits no seu domínio.
- DMARCaprovadoPassa com base na assinatura DKIM alinhada depois que você publica um registro DMARC.
Uma identidade SES padrão: SPF passa, mas para amazonses.com. Um MAIL FROM personalizado é o que faz o alinhamento.
DKIM. Easy DKIM é o padrão para identidades de domínio e assina todas as mensagens com uma chave de 2048 bits. A configuração consiste em três registros CNAME chamados token._domainkey.yourdomain.com que apontam para token.dkim.<region>.amazonses.com. Se a verificação de DKIM falhar, verifique primeiro duas coisas: se o DNS já foi propagado (a AWS informa que isso pode levar até 72 horas) e se o seu provedor de DNS anexou o domínio ao nome e criou token._domainkey.yourdomain.com.yourdomain.com. Com BYODKIM, você publica um registro TXT no seu próprio seletor. Durante a migração entre os dois, o SES pode enviar mensagens sem nenhuma assinatura, e o relatório sinaliza isso como DKIM ausente. O verificador de DKIM usa o token como seletor.
SPF e o caminho de retorno. Por padrão, o SES usa um subdomínio de amazonses.com como MAIL FROM. SPF passa, mas para amazonses.com, então o relatório mostra SPF como não alinhado com seu From. Quando DKIM está alinhado, isso tem pouco impacto (2 pontos na escala de 100 pontos, em vez de 5), e DMARC ainda passa com base em DKIM. Para também alinhar SPF, configure um subdomínio MAIL FROM personalizado com exatamente um registro MX, 10 feedback-smtp.<region>.amazonses.com, e um registro TXT v=spf1 include:amazonses.com ~all. Não escolha um subdomínio que receba e-mails e não inclua aspf=s no seu registro DMARC, pois a AWS informa que o alinhamento de SPF com SES não funciona com uma política SPF estrita.
DMARC. O SES não publica um registro para você. O exemplo da AWS é v=DMARC1;p=quarantine;rua=mailto:my_dmarc_report@example.com. Se ninguém ainda lê seus relatórios DMARC, comece com p=none e torne a política mais rígida depois. O verificador de DMARC mostra o que você tem, e DMARC fail aborda os problemas mais comuns.
Valores de exemplo. Copie os valores reais da sua conta.
| Nome | Tipo | Valor | Para que serve | Copiar |
|---|---|---|---|---|
| token. | CNAME | token. | Easy DKIM. Três registros desse tipo, um por token. | |
| mail. | MX | 10 feedback-smtp. | MAIL FROM personalizado. Exatamente um registro MX, em um subdomínio que não recebe e-mails. | |
| mail. | TXT | v= | SPF para o MAIL FROM personalizado, para que SPF fique alinhado com seu From. | |
| _dmarc. | TXT | v= | DMARC, exemplo da AWS. Comece com p=none se ninguém ainda lê os relatórios e não inclua aspf=s. |
List-Unsubscribe. O SES adiciona List-Unsubscribe e List-Unsubscribe-Post somente quando você envia com ListManagementOptions apontando para uma lista de contatos e um tópico. Mesmo assim, isso ocorre apenas em mensagens com um único destinatário e somente com Easy DKIM, e o SES substitui todos os cabeçalhos de cancelamento de inscrição que você definir. Todo o restante é enviado sem nenhum cabeçalho de cancelamento de inscrição. Para uma newsletter, isso significa falha na verificação de List-Unsubscribe e na verificação de cancelamento com um clique, a menos que você mesmo adicione esses cabeçalhos. Desde março de 2024, a API v2 aceita cabeçalhos personalizados sem MIME bruto. Adaptados da publicação da AWS sobre cancelamento com um clique, os dois cabeçalhos são assim:
"Headers": [
{ "Name": "List-Unsubscribe",
"Value": "<https://yourdomain.com/unsub?address=x&topic=x>, <mailto:unsubscribe@yourdomain.com>" },
{ "Name": "List-Unsubscribe-Post",
"Value": "List-Unsubscribe=One-Click" }
]
Seu endpoint precisa então processar o POST. Redefinições de senha e recibos sem cabeçalhos de lista são um caso diferente, e para eles o relatório marca o grupo de remetente em massa como ignorado. Veja mais sobre o cabeçalho em nossa página sobre List-Unsubscribe.
IPs e listas de bloqueio
Contas novas enviam por IPs compartilhados com outros usuários do SES, e a AWS recomenda continuar usando esses IPs, a menos que seu volume seja grande e regular. O relatório consulta 21 listas de bloqueio para o IP de envio e, em endereços compartilhados, uma ocorrência pertence ao pool. Os IPs dedicados estão disponíveis como Standard, cujo aquecimento você faz manualmente, ou Managed, em que o SES cuida do aquecimento. Nesse caso, uma inclusão em lista está vinculada aos seus próprios envios. Você pode inserir qualquer IP encontrado na aba Cabeçalhos diretamente no verificador de listas de bloqueio.
A AWS também monitora sua conta. As perguntas frequentes sobre aplicação de políticas recomendam fazer testes com endereços reais que possam receber e-mails ou com o simulador, para que destinatários inventados não aumentem a taxa de rejeição. A AWS coloca uma conta em análise quando a taxa de rejeição chega a 5% ou a taxa de reclamação chega a 0,1%.
O plano de correção no final lista até oito alterações, cada uma com o registro DNS a ser copiado quando aplicável. Os pontos ao lado de cada correção são as penalidades atuais das verificações afetadas. O modelo seleciona e explica as correções. Ele não define o custo delas. Se o nome de uma verificação não fizer sentido para você, a documentação explica cada uma das 42 verificações.
Referências da AWS
Acesso ao sandbox e à produçãodocs.aws.amazon.com ↗Easy DKIMdocs.aws.amazon.com ↗MAIL FROM personalizadodocs.aws.amazon.com ↗DMARC com SESdocs.aws.amazon.com ↗Gerenciamento de assinaturasdocs.aws.amazon.com ↗sesv2 send-emaildocs.aws.amazon.com ↗Perguntas
Posso testar a partir do sandbox do SES?
Não com nosso endereço. No sandbox, o SES só entrega a destinatários verificados, e verificar nosso endereço consumiria a única mensagem que ele aceita. Solicite acesso à produção para a Região e, enquanto isso, verifique seus registros com as ferramentas gratuitas de verificação de DKIM, SPF e DMARC.
O simulador de caixa postal do SES fornece as mesmas informações?
Não. Ele informa como o SES processa uma rejeição, uma reclamação ou uma entrega, e a cobrança é a mesma de um envio normal. Ele não analisa seus cabeçalhos, sua autenticação nem seu conteúdo.
Devo incluir o SES no registro SPF do meu domínio raiz?
Os destinatários verificam o SPF em relação ao domínio MAIL FROM, que, por padrão, é um subdomínio de amazonses.com ou seu subdomínio MAIL FROM personalizado. O registro SPF do SES deve ficar nesse subdomínio e, conforme a página sobre MAIL FROM, nada é exigido no domínio raiz.