alle Anleitungen

// 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-1 gilt nicht für eu-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