// come risolvere
Amazon SES "Throttling: Maximum sending rate exceeded" (454): come risolvere
Amazon SES restituisce "Maximum sending rate exceeded" o "Daily message quota exceeded". Controlla le quote, rallenta gli invii e chiedi un aumento.
Cosa significa
Ogni account Amazon SES ha due quote di invio per Region AWS: una velocità di invio (email al secondo) e una quota di invio (email nelle ultime 24 ore, su una finestra mobile). Quando ne superi una, SES rifiuta il messaggio. Via SMTP le risposte sono:
454 Throttling failure: Maximum sending rate exceeded 454 Throttling failure: Daily message quota exceeded
Tramite l'API o un SDK ricevi un errore Throttling con il messaggio "Maximum sending rate exceeded" o "Daily message quota exceeded". Un codice 4xx è temporaneo: il messaggio non è stato inviato, ma può esserlo più tardi. Un messaggio rifiutato non viene fatturato.
Perché succede
- Sei ancora nella sandbox. Gli account nella sandbox sono limitati per impostazione predefinita a 1 messaggio al secondo e 200 messaggi ogni 24 ore. Consulta come uscire dalla sandbox.
- Picchi di invio. La tua applicazione invia un'intera lista in un ciclo con molti worker in parallelo. SES tollera brevi picchi, non un eccesso prolungato.
- Le quote contano i destinatari, non i messaggi. Un'email con 10 destinatari conta come 10.
- Region sbagliata. Le quote sono per Region. Una quota più alta concessa in
us-east-1non vale pereu-west-1. - Vecchie credenziali SMTP. "Maximum SigV2 SMTP sending rate exceeded" significa che le tue credenziali SMTP sono state create prima del 10 gennaio 2019. Sostituiscile con credenziali nuove.
- Se il testo del throttling non corrisponde a nessuna delle due quote, AWS suggerisce di controllare l'AWS Health Dashboard per un eventuale problema del servizio.
Come verificare
Visualizza le tue quote attuali e l'utilizzo con la CLI (o nell'Account dashboard della console):
aws sesv2 get-account --region eu-west-1
"SendQuota": {
"Max24HourSend": 50000.0,
"MaxSendRate": 14.0,
"SentLast24Hours": 48211.0
}Confronta MaxSendRate con il numero di messaggi che il tuo codice invia davvero al secondo, e SentLast24Hours con Max24HourSend. I tuoi log mostrano l'ora degli errori 454: picchi all'inizio di una campagna indicano un problema di velocità; errori a fine giornata indicano la quota giornaliera.
Come risolvere
Rallenta e riprova
Invia alla tua MaxSendRate o al di sotto, e riprova gli errori 454 con attese crescenti (AWS suggerisce per esempio 5 s, 10 s, 30 s, poi una pausa più lunga). Gli SDK AWS ripetono automaticamente le chiamate API, ma la tua coda deve comunque rispettare la velocità. Con nodemailer, un transport in pool può limitare la velocità:
const transporter = nodemailer.createTransport({
host: 'email-smtp.eu-west-1.amazonaws.com', port: 587,
auth: { user: process.env.SES_SMTP_USER, pass: process.env.SES_SMTP_PASS },
pool: true,
maxConnections: 2,
rateDelta: 1000, // per second
rateLimit: 10, // at most 10 messages per rateDelta
});Con Postfix che inoltra a SES, riduci le consegne in parallelo verso il relay, per esempio smtp_destination_concurrency_limit = 2 e smtp_destination_rate_delay = 1s in main.cf (il ritardo si applica per destinazione, qui il relay SES). Postfix tiene in coda i messaggi con errore 4xx e li riprova automaticamente.
Quota giornaliera raggiunta
Aspetta: la quota è una finestra mobile di 24 ore, quindi la capacità torna man mano che gli invii più vecchi escono dalla finestra. Distribuisci le grandi campagne su più giorni e invia un destinatario per chiamata API anziché lunghe liste di destinatari.
Richiedi quote più alte
Apri la console Service Quotas, seleziona la Region giusta, scegli AWS services, poi Amazon Simple Email Service (SES), e richiedi un aumento di Sending quota o Sending rate. AWS dichiara di gestire queste richieste entro circa 24 ore, e può anche alzare le quote automaticamente quando invii email di buona qualità vicino al tuo limite con bassi tassi di bounce e reclami.
Anche con quote alte, non passare da qualche centinaio a decine di migliaia di email al giorno: i provider di posta reagiscono ai picchi improvvisi con il loro throttling (consulta SMTP 421 too many connections). Aumenta gradualmente come spiegato in riscaldare un nuovo dominio o IP.
Verifica che sia risolto
Rilancia il tuo processo di invio e osserva i log: non dovrebbero più esserci errori 454 e SentLast24Hours dovrebbe restare sotto Max24HourSend. Invia un messaggio al tuo indirizzo unico nella home page di Delivmail per confermare che contenuto e autenticazione sono ancora a posto dopo le modifiche, poi invia di nuovo i messaggi che erano stati rifiutati.
Verifica che sia risolto
Una modifica DNS può richiedere da pochi minuti a qualche ora. Poi invia una nuova email di test o scansiona di nuovo il tuo dominio.
Guide correlate
- Amazon SES "Email address is not verified": sandbox e identità, come risolvereAmazon SES rifiuta la tua email perché un'identità del mittente o del destinatario non è verificata. Verifica le identità, esci dalla sandbox e invia in sicurezza.
- Verifica DKIM di Amazon SES "Pending" o "Failed": come risolvereIl tuo dominio Amazon SES resta "Pending" o mostra DKIM "Failed". Controlla i tre record CNAME, gli errori DNS più comuni e come riavviare la verifica.
- Dominio MAIL FROM personalizzato su Amazon SES: allineamento SPF per DMARCAmazon SES usa un dominio di bounce amazonses.com, quindi SPF non è allineato per DMARC. Configura un sottodominio MAIL FROM con i record MX e SPF giusti.
- Account Amazon SES sotto revisione o sospeso: tasso di bounce e di reclamiIl tuo account Amazon SES è sotto revisione o l'invio è sospeso per bounce o reclami. Scopri le soglie, trova la causa e rispondi ad AWS.
- Amazon SES SMTP "535 Authentication Credentials Invalid": come risolvereAmazon SES rifiuta il tuo login SMTP con 535 Authentication Credentials Invalid. Usa vere credenziali SMTP, la Region e l'endpoint giusti, e provale.