Zurück zum Blog SMS-Betrieb

Ablauf und Bereinigung von A2P-SMS-Warteschlangen: So vermeiden Sie verspätete Zustellungen

Ein praxisnaher Leitfaden zur Unterscheidung zwischen dem Ablauf der eigenen Warteschlange, der beim Anbieter angeforderten Gültigkeitsdauer und der funktionalen Gültigkeit einer Nachricht – mit Kontrollen für OTPs, Benachrichtigungen und nachvollziehbare Bereinigungen.

Operatives Diagramm zum Lebenszyklus von A2P-SMS und zum Ablauf von Warteschlangen

Drei unterschiedliche Grenzen: Nutzbarkeit, interne Warteschlange und Ablauf beim Anbieter

Der Ablauf von A2P-SMS wird nicht durch einen einzigen Timer bestimmt. Es empfiehlt sich, drei Kontrollen voneinander zu trennen: die funktionale Frist, die angibt, bis wann der Inhalt für den Empfänger noch sinnvoll ist; die Ablaufrichtlinie der internen Warteschlange oder des Brokers; und die Gültigkeitsdauer, die beim Anbieter oder Servicecenter angefordert wird.

Der von 3GPP definierte TP-Validity-Period gibt an, wie lange das Servicecenter die Nachricht aufbewahrt, bevor die Zustellung abgeschlossen ist. Er ist nicht mit dem TTL der Anwendungswarteschlange gleichzusetzen. Außerdem unterscheiden sich Implementierung und Geltungsbereich einer Ablaufoption je nach Anbieter.

Twilio dokumentiert beispielsweise eine Gültigkeitsdauer für die Zeit, die eine Nachricht in der ausgehenden Warteschlange verbleibt. Die Dokumentation weist ausdrücklich darauf hin, dass die Nachricht nach der Übergabe an das Carrier-Netz weiterhin dort in einer Warteschlange liegen und später zugestellt werden kann. Dieser Parameter ist daher keine Garantie, dass die Nachricht vor einer bestimmten Frist zugestellt wird.

  • Funktionale Frist: Bis wann wäre es für den Empfänger noch sinnvoll, diese Nachricht zu erhalten?
  • Internes TTL: Wie lange darf der Broker die Nachricht zur Verarbeitung bereithalten?
  • Gültigkeit beim Anbieter: Welche Phase deckt der für diese Verbindung dokumentierte Parameter ab?
  • Lassen Sie Bedeutung, Grenzen und Verhalten jedes Parameters in der einschlägigen technischen Dokumentation eindeutig bestätigen.
Drei unterschiedliche Grenzen: Nutzbarkeit, interne Warteschlange und Ablauf beim Anbieter

Warum eine wiederhergestellte Route veraltete Nachrichten freigeben kann

Ist die Kapazität einer Verbindung begrenzt, stellen manche Plattformen Anfragen in eine Warteschlange, um sie später zu senden. Wird die Route wieder verfügbar, kann die Verarbeitung dieser Nachrichten fortgesetzt werden. Ein Rückstau macht den Inhalt für sich genommen weder ungültig noch garantiert er, dass der Anbieter ihn verwirft.

Prüfen Sie vor dem Versand eines zurückgehaltenen Elements seine funktionale Frist. Ist sie bereits abgelaufen, darf die Nachricht nicht allein deshalb erneut gesendet werden, weil die Verbindung wieder Kapazität hat. Ein Ablauf des Brokers kann helfen, seine Anwendung hängt jedoch vom Produkt und vom Nachrichtenstatus ab. Azure Service Bus dokumentiert beispielsweise Besonderheiten bei abgelaufenen Nachrichten und Nachrichten, die bereits gesperrt sind. Diese dürfen nicht auf andere Broker übertragen werden.

  • Prüfen Sie die funktionale Gültigkeit unmittelbar vor dem Versand, nicht nur beim Einreihen.
  • Stellen Sie nach Wiederherstellung einer Route zuerst die Ablaufprüfung sicher und wählen Sie erst danach die versandfähigen Nachrichten aus.
  • Messen und überwachen Sie das Alter der Warteschlange; die beobachtete Latenz ersetzt keine Ablaufregel.
  • Prüfen Sie, wie Ihr Broker abgelaufene und gesperrte Nachrichten sowie Dead-Letter-Einträge behandelt.
Warum eine wiederhergestellte Route veraltete Nachrichten freigeben kann

Richtlinien für die verschiedenen Nachrichtenklassen festlegen

Eine einheitliche Dauer eignet sich nicht für alle Fälle. Die Regel sollte sich aus der zeitlichen Nutzbarkeit der Nachricht und den geltenden Anforderungen ableiten lassen und in eine überprüfbare Frist übersetzt werden. Soweit es die Architektur ermöglicht, müssen der Ablauf beim Anbieter und der interne Ablauf getrennt konfiguriert werden.

Für OTPs legt NIST SP 800-63B-4 fest, dass eine Out-of-Band-Authentifizierung als ungültig gelten muss, wenn sie nicht innerhalb von 10 Minuten abgeschlossen wird, und dass das Geheimnis nur einmal angenommen werden darf. OWASP empfiehlt außerdem ein kurzes TTL, die einmalige Verwendung, Begrenzungen für Versuche und die Ungültigmachung nach erfolgreicher Verifizierung. Diese Authentifizierungsfrist ist weder eine universelle Warteschlangendauer noch eine Empfehlung für andere Nachrichtenklassen.

Für Transaktionsbenachrichtigungen und nicht dringende Nachrichten sind eigene Regeln erforderlich. Legen Sie deren Ablauf anhand des gemeldeten Vorgangs, der Erwartungen der Nutzer und der geltenden Pflichten fest. Können Sie eine konkrete Dauer nicht begründen, stellen Sie sie nicht als Standard dar: Dokumentieren Sie die Entscheidungsgrundlage und prüfen Sie das Verhalten.

  • OTP: Das Authentifizierungssystem muss einen abgelaufenen Code zurückweisen und seine Wiederverwendung verhindern, auch wenn die SMS später eintrifft.
  • Transaktionsbenachrichtigungen: Legen Sie fest, welches Ereignis sie gegenstandslos macht und wie eine verspätete Benachrichtigung verhindert wird, die dem aktuellen Status widerspricht.
  • Nicht dringende Nachrichten: Definieren Sie ein funktionales Zeitfenster passend zum Zweck; übernehmen Sie nicht automatisch die OTP-Einstellungen.
  • Für alle Kategorien gilt: Berücksichtigen Sie die einschlägigen Einwilligungs- und Compliance-Anforderungen und versenden Sie Werbenachrichten nicht erneut, wenn die entsprechende Berechtigung dafür fehlt.

Den Lebenszyklus gestalten und mit unklaren Status sorgfältig umgehen

Modellieren Sie den Ablauf mit expliziten Status: eingereiht, versandfähig, an den Anbieter gesendet, vom Carrier angenommen, abgelaufen, abgebrochen und mit unklarem Ergebnis abgeschlossen. Die konkreten Bezeichnungen unterscheiden sich. Orientieren Sie sich am Vertrag Ihrer Plattform und halten Sie die Zuordnung zu deren Status aufrecht.

Die Annahme einer Anfrage bedeutet nicht, dass die SMS bereits zugestellt wurde. In der Dokumentation von Twilio bedeutet „sent“ beispielsweise, dass der Upstream-Carrier die Nachricht angenommen hat; „delivered“ hängt dagegen von einer späteren Bestätigung ab. Ein DLR oder Callback ist ein Signal des jeweiligen Systems, aber kein unabhängiger Nachweis für den Empfang durch einen Menschen und keine universelle Garantie für eine Bestätigung durch das Gerät.

Liegt kein eindeutiges Ergebnis vor, behalten Sie den Status als unklar bei, bis ein späteres Ereignis eintritt oder die Abstimmung gemäß einer dokumentierten Richtlinie abgeschlossen ist. Vermeiden Sie automatische Wiederholungen, die Nachrichten duplizieren können, ohne zuvor das Risiko abzuwägen.

  • Speichern Sie die funktionale Frist zusammen mit der Nachrichten-ID und prüfen Sie sie bei jedem Verarbeitungsschritt.
  • Unterscheiden Sie zwischen angenommener Anfrage, Übergabe an den Upstream-Carrier und gemeldeter Zustellung; fassen Sie diese nicht zu einem einzigen Erfolgsstatus zusammen.
  • Legen Sie fest, welches Ereignis einen Vorgang abschließt und wie Fälle ohne DLR oder mit widersprüchlichen Status abgeglichen werden.
  • Schützen Sie OTPs: Protokollieren Sie deren Werte nicht im Klartext im üblichen Auditprotokoll.

Route wechseln oder Warteschlange bereinigen: Was mit Nachrichten im Versand geschieht

Eine interne Bereinigung kann verhindern, dass Nachrichten verarbeitet werden, die noch unter der Kontrolle Ihres Systems stehen. Sie darf jedoch nicht als Möglichkeit verstanden werden, eine SMS zurückzurufen, die bereits ins Netz gelangt ist. Ob eine Stornierung möglich ist, hängt vom Anbieter und vom Status ab. Die Dokumentation von Twilio beschreibt beispielsweise die Stornierung bestimmter geplanter Nachrichten vor deren Versandzeitpunkt. Daraus lässt sich keine allgemeine Stornierungsmöglichkeit nach der Übergabe an den Carrier ableiten.

Trennen Sie beim Routenwechsel die Elemente, die sich noch in Ihrer Warteschlange befinden, von denen, die der Anbieter bereits angenommen hat. Prüfen Sie für Erstere die funktionale Frist und entscheiden Sie gemäß den dokumentierten Regeln, ob sie zurückgehalten, verworfen oder umgeleitet werden. Prüfen Sie für Letztere Status und Zustellberichte, machen Sie aber die Grenzen Ihrer Kontrolle deutlich: Die Nachricht kann weitergeleitet werden, obwohl Ihre lokale Warteschlange bereits bereinigt wurde.

Legen Sie bei einer umfassenden Bereinigung den Umfang anhand einer Nachrichten-ID, Nachrichtenklasse, Route, Zeitspanne oder eines anderen überprüfbaren betrieblichen Kriteriums fest. Verwenden Sie, sofern verfügbar, zunächst eine Vorschau- oder Prüffunktion und löschen Sie keine Elemente unterschiedslos, deren Status unklar ist.

  • Stoppen oder begrenzen Sie den Versand vor einer Änderung der Regeln, sofern es das Betriebsdesign zulässt.
  • Klassifizieren Sie Nachrichten als noch intern, an den Anbieter übergeben oder mit unklarem Ergebnis.
  • Stornieren Sie Nachrichten aus der Ferne nur dann, wenn der Anbieter diese Aktion für den konkreten Status dokumentiert.
  • Behaupten Sie nicht, eine Bereinigung verhindere die Zustellung von Nachrichten, die das Netz bereits angenommen hat.

Die Bereinigung nachvollziehbar und abgleichbar gestalten

Ein betrieblicher Bereinigungsvorgang muss sich rekonstruieren lassen: Was wurde entfernt, warum, in welchem Umfang und wer hat die Aktion genehmigt? Speichern Sie Zeitstempel und die erforderlichen IDs, um die lokale Entscheidung mit den Statusmeldungen des Anbieters und späteren Zustellberichten zu verknüpfen.

Ein Auditprotokoll muss den SMS-Inhalt nicht speichern, um nützlich zu sein. Vermeiden Sie insbesondere, OTPs im Klartext zu protokollieren. Bietet der Broker Dead-Lettering für abgelaufene Nachrichten, kann dies der Prüfung und Abstimmung dienen. Diese Funktion muss jedoch ausdrücklich aktiviert und konfiguriert werden; das Verhalten hängt vom Broker ab.

  • Protokollieren Sie den Grund, den Umfang der Bereinigung, den autorisierenden Nutzer oder Prozess sowie Zeitstempel.
  • Bewahren Sie Korrelations-IDs sowie den vorherigen und den nachfolgenden Status auf und beschränken Sie den Zugriff.
  • Nehmen Sie sensible Inhalte und Authentifizierungsgeheimnisse nicht routinemäßig in Protokolle auf.
  • Dokumentieren Sie Aufbewahrungsfristen, Berechtigungen für Bereinigungen und das Verfahren zum Abgleich abgelaufener Nachrichten oder solcher mit unklarem Status.

Jede Verbindung und jede Phase testen, bevor Sie sich auf den Ablauf verlassen

Ein Parameter mit derselben Bezeichnung kann bei verschiedenen Anbietern einen unterschiedlichen Geltungsbereich haben. Prüfen Sie die Dokumentation der konkreten Verbindung und führen Sie kontrollierte Tests in einer geeigneten Umgebung und mit autorisierten Empfängern durch. Machen Sie aus einem einzelnen Testergebnis keine Garantie für andere Betreiber, Routen oder Netzzustände.

Beobachten Sie den Ablauf der internen Warteschlange, die angeforderte Ablaufzeit beim Anbieter, die Annahmestatus und die Zustellberichte getrennt. Protokollieren Sie, was mit eingereihten, gesendeten und Nachrichten mit unklarem Ergebnis geschieht. Wiederholen Sie die Tests bei relevanten Änderungen an Konfiguration oder Verbindung und halten Sie dabei die Grenzen und Bedingungen des Anbieters ein.

  • Bestätigen Sie Einheiten, zulässigen Wertebereich, Standardwert und die Phase, für die der jeweilige Parameter gilt.
  • Testen Sie Nachrichten, die vor dem Versand ablaufen, sowie Nachrichten, deren Status sich während des Tests ändert.
  • Vergleichen Sie den lokalen Status mit Callbacks oder Zustellberichten und dokumentieren Sie Fälle ohne eindeutige Bestätigung.
  • Prüfen Sie die Besonderheiten von Broker und Anbieter; verallgemeinern Sie keine Ergebnisse einer einzelnen Plattform.

Betriebliche Checkliste

Prüfen Sie vor der Aktivierung oder Änderung einer Richtlinie, ob das Team abgelaufene Nachrichten erkennen, sie von Nachrichten im Versand unterscheiden und erläutern kann, welche Nachweise es zu jeder Phase erhält. Die Prüfung sollte auch Berechtigungen, Warnmeldungen und die Kommunikation zwischen Betrieb, Engineering und Produkt umfassen.

Für jede Nachrichtenklasse ist ein funktionales Ablaufkriterium dokumentiert.

Der Nachrichtenverarbeiter prüft die Frist vor dem Versand – auch nach der Wiederherstellung einer Route.

Das TTL des Brokers und der Ablauf beim Anbieter sind als getrennte Kontrollen dokumentiert.

Status für Annahme, Versand, gemeldete Zustellung und unklaren Ausgang werden nicht miteinander verwechselt.

  • Die Bereinigung hat einen festgelegten Umfang und Grund, eine Genehmigung, Zeitstempel und IDs für den Abgleich.
  • Es gibt Warnmeldungen zum Alter der Warteschlange, zu Rückstaus, Abläufen und fehlenden Bestätigungen, mit vom Team festgelegten Schwellenwerten.
  • Betriebliche Änderungen werden den betroffenen Teams mitgeteilt und verfügen über ein Rücksetzverfahren.
FAQ

Häufige Fragen

Garantiert der beim Anbieter angeforderte Ablauf, dass die SMS nicht verspätet eintrifft?

Nein. Der Geltungsbereich hängt vom Anbieter ab. Der Parameter kann lediglich die Zeit in der Warteschlange der Plattform begrenzen. Nach der Annahme kann das Mobilfunknetz die Nachricht weiterhin zwischenspeichern und später zustellen.

Entspricht das TTL meiner internen Warteschlange der Gültigkeitsdauer nach 3GPP?

Nein. Das interne TTL regelt die Warteschlange Ihrer Anwendung oder Ihres Brokers. Der TP-Validity-Period von 3GPP bezieht sich auf den Zeitraum, in dem das Servicecenter die SMS vor Abschluss der Zustellung aufbewahrt.

Kann ich eine Nachricht stornieren, nachdem der Carrier sie angenommen hat?

Gehen Sie nicht davon aus. Ob eine Stornierung möglich ist, hängt von der Plattform und dem Status ab; prüfen Sie die Dokumentation des Anbieters. Eine lokale Bereinigung belegt nicht, dass eine bereits an das Netz übergebene Nachricht zurückgezogen wurde.

Welche Ablaufzeit sollte ich für OTPs verwenden?

NIST SP 800-63B-4 legt fest, dass eine Out-of-Band-Authentifizierung als ungültig gelten muss, wenn sie nicht innerhalb von 10 Minuten abgeschlossen wird, und dass das Geheimnis nur einmal verwendet werden darf. Die Regel für Ihre Warteschlange und die des Anbieters sind separate Kontrollen. Berücksichtigen Sie außerdem die einschlägigen Sicherheits- und Compliance-Anforderungen.

Beweist der Status „sent“ oder ein DLR, dass der Empfänger die SMS gelesen hat?

Nein. Statusmeldungen hängen von der Plattform und den verfügbaren Zustellberichten ab. „Sent“ kann bedeuten, dass der Upstream-Carrier die Nachricht angenommen hat, während ein Zustellstatus eine spätere technische Bestätigung darstellt. Keiner der beiden Status beweist für sich genommen, dass eine Person die Nachricht gelesen hat.

Verwendete Quellen

  1. 3GPP TS 23.040 Release 18, vía ETSIETSI / 3GPP
  2. Messages resource APITwilio
  3. Messaging Services: validity periodTwilio
  4. Outbound Message Status in Status CallbacksTwilio
  5. Error 30036: Validity Period ExpiredTwilio
  6. Message expiration and TTL in Azure Service BusMicrosoft Learn
  7. Enable dead lettering on message expirationMicrosoft Learn
  8. NIST SP 800-63B-4, sección sobre autenticadores fuera de bandaNIST
  9. Multifactor Authentication Cheat SheetOWASP