// so behebst du es
Amazon SES „Throttling: Maximum sending rate exceeded“ (454): so behebst du es
Amazon SES meldet „Maximum sending rate exceeded“ oder „Daily message quota exceeded“. Prüfe deine Kontingente, sende langsamer und beantrage mehr.
Was das bedeutet
Jedes Amazon-SES-Konto hat pro AWS-Region zwei Sendekontingente: eine Senderate (E-Mails pro Sekunde) und ein Sendekontingent (E-Mails pro gleitendem 24-Stunden-Zeitraum). Überschreitest du eines davon, lehnt SES die Nachricht ab. Über SMTP lauten die Antworten:
454 Throttling failure: Maximum sending rate exceeded 454 Throttling failure: Daily message quota exceeded
Über die API oder ein SDK bekommst du einen Throttling-Fehler mit der Meldung „Maximum sending rate exceeded“ oder „Daily message quota exceeded“. Ein 4xx-Code ist vorübergehend: Die Nachricht wurde nicht gesendet, kann aber später gesendet werden. Eine abgelehnte Nachricht wird nicht berechnet.
Warum das passiert
- Noch in der Sandbox. Sandbox-Konten sind standardmäßig auf 1 Nachricht pro Sekunde und 200 Nachrichten pro 24 Stunden begrenzt. Siehe so verlässt du die Sandbox.
- Lastspitzen. Deine App versendet eine ganze Liste in einer Schleife mit vielen parallelen Workern. SES toleriert kurze Spitzen, aber keine dauerhafte Überschreitung.
- Kontingente zählen Empfänger, nicht Nachrichten. Eine E-Mail mit 10 Empfängern zählt als 10.
- Falsche Region. Kontingente gelten pro Region. Ein höheres Kontingent in
us-east-1gilt nicht füreu-west-1. - Alte SMTP-Zugangsdaten. „Maximum SigV2 SMTP sending rate exceeded“ bedeutet, dass deine SMTP-Zugangsdaten vor dem 10. Januar 2019 erstellt wurden. Ersetze sie durch neue.
- Passt der Throttling-Text zu keinem der beiden Kontingente, empfiehlt AWS, im AWS Health Dashboard nach einer Störung des Dienstes zu schauen.
So prüfst du es
Sieh dir deine aktuellen Kontingente und deinen Verbrauch mit der CLI an (oder im Account dashboard der Konsole):
aws sesv2 get-account --region eu-west-1
"SendQuota": {
"Max24HourSend": 50000.0,
"MaxSendRate": 14.0,
"SentLast24Hours": 48211.0
}Vergleiche MaxSendRate damit, wie viele Nachrichten dein Code wirklich pro Sekunde sendet, und SentLast24Hours mit Max24HourSend. Deine Logs zeigen die Uhrzeiten der 454-Fehler: Spitzen zu Beginn einer Kampagne deuten auf ein Problem mit der Rate hin, Fehler spät am Tag auf das Tageskontingent.
So behebst du es
Langsamer senden und erneut versuchen
Sende höchstens mit deiner MaxSendRate und wiederhole 454-Fehler mit wachsenden Wartezeiten (AWS schlägt zum Beispiel 5 s, 10 s, 30 s und dann eine längere Pause vor). AWS-SDKs wiederholen API-Aufrufe automatisch, deine eigene Warteschlange sollte die Rate aber trotzdem einhalten. Mit nodemailer kann ein Pool-Transport die Rate begrenzen:
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
});Leitet Postfix an SES weiter, reduziere die parallelen Zustellungen an das Relay, zum Beispiel mit smtp_destination_concurrency_limit = 2 und smtp_destination_rate_delay = 1s in main.cf (die Verzögerung gilt pro Ziel, hier das SES-Relay). Postfix behält 4xx-Nachrichten in seiner Warteschlange und versucht sie automatisch erneut.
Tageskontingent erreicht
Warte: Das Kontingent ist ein gleitendes 24-Stunden-Fenster, die Kapazität kommt also zurück, sobald ältere Sendungen herausfallen. Verteile große Kampagnen auf mehrere Tage und sende einen Empfänger pro API-Aufruf statt langer Empfängerlisten.
Höhere Kontingente beantragen
Öffne die Konsole Service Quotas, wähle die richtige Region, dann AWS services und Amazon Simple Email Service (SES), und beantrage eine Erhöhung von Sending quota oder Sending rate. AWS gibt an, solche Anträge in etwa 24 Stunden zu bearbeiten, und kann Kontingente auch automatisch erhöhen, wenn du nahe an deinem Limit hochwertige E-Mails mit niedriger Bounce- und Beschwerderate sendest.
Spring auch mit hohen Kontingenten nicht von ein paar hundert auf Zehntausende E-Mails pro Tag: Mailbox-Anbieter reagieren auf plötzliche Spitzen mit eigenem Throttling (siehe SMTP 421 too many connections). Steigere das Volumen schrittweise, wie in eine neue Domain oder IP aufwärmen erklärt.
Prüfe, ob es behoben ist
Starte deinen Versandjob erneut und beobachte deine Logs: Es sollte keine 454-Fehler mehr geben, und SentLast24Hours sollte unter Max24HourSend bleiben. Sende eine Nachricht an deine einmalige Adresse auf der Startseite von Delivmail, um zu bestätigen, dass Inhalt und Authentifizierung nach deinen Änderungen weiterhin sauber sind, und sende dann die abgelehnten Nachrichten erneut.
Prüfe, ob es behoben ist
DNS-Änderungen können ein paar Minuten bis einige Stunden dauern. Sende danach eine neue Test-E-Mail oder scanne deine Domain erneut.
Ähnliche Anleitungen
- Amazon SES „Email address is not verified“: Sandbox und Identitäten richtig einrichtenAmazon SES lehnt deine E-Mail ab, weil eine Absender- oder Empfänger-Identität nicht verifiziert ist. Verifiziere Identitäten und verlasse die Sandbox.
- Amazon SES DKIM-Verifizierung „Pending“ oder „Failed“: so behebst du esDeine Amazon-SES-Domain bleibt auf „Pending“ oder zeigt DKIM „Failed“. Prüfe die drei CNAME-Einträge, typische DNS-Fehler und starte die Verifizierung neu.
- Amazon SES eigene MAIL-FROM-Domain: SPF-Alignment für DMARCAmazon SES nutzt eine Bounce-Domain unter amazonses.com, daher ist SPF nicht auf DMARC ausgerichtet. Richte eine eigene MAIL-FROM-Subdomain mit MX und SPF ein.
- Amazon-SES-Konto „under review“ oder pausiert: Bounce- und BeschwerderateDein Amazon-SES-Konto wird überprüft oder der Versand ist pausiert, wegen Bounces oder Beschwerden. Kenne die Grenzwerte, finde die Ursache, antworte AWS.
- Amazon SES SMTP „535 Authentication Credentials Invalid“: so behebst du esAmazon SES lehnt deinen SMTP-Login mit 535 Authentication Credentials Invalid ab. Nutze echte SMTP-Zugangsdaten, die richtige Region und teste sie.