Direkt zum Seiteninhalt springen
b13 GmbH

Hauptstätter Str. 59
70178 Stuttgart
Germany
+49 (0) 711 460 589 70 [email protected]

Schluss mit verlorenen TYPO3-Mails, wenn der Mailserver ausfällt

Lächelnder Mann mit kurzen Haaren und einem Bart, der ein rotes T-Shirt trägt, steht in einem gut beleuchteten Innenraum mit verschwommenem Hintergrund. David Steeb
Drei Symbole mit einem Umschlag und einem kreisförmigen Pfeil, die das Weiterleiten oder Umleiten von E-Mails symbolisieren, vor einem Farbverlauf-Hintergrund.

Kurz gesagt: In einem Standard-TYPO3 ist eine Mail, deren Versand fehlschlägt, endgültig weg — ohne zweiten Versuch, ohne Eintrag und ohne Warnung. Mail Queue (mail_queue) verschickt jede Mail wie gewohnt sofort, fängt nur die gescheiterten auf, versucht sie rund zweieinhalb Tage lang automatisch erneut zu verschicken und zeigt jede Mail im TYPO3-Backend. Die Extension läuft auf TYPO3 v13.4.23 oder neuer und auf v14.

Du kennst den Anruf: Ein Nutzer hat die Passwort-Mail nie bekommen, oder die Bestellbestätigung. Der Support macht ein Ticket auf, jemand wühlt sich durch Logs, und da steht nichts Brauchbares. Als Agentur hast du den Fehler oft nicht mal selbst verursacht — SMTP (Simple Mail Transfer Protocol, das Standardverfahren, mit dem Server E-Mails untereinander weitergeben) hat auf der Gegenseite gezickt —, aber das Ticket landet trotzdem bei dir, und der Kunde fängt an, an der ganzen Website zu zweifeln.

In einem Standard-TYPO3 ist diese Mail schlicht weg. In diesem Beitrag erklären wir, warum das passiert und wie Mail Queue das verhindert, ohne den normalen Versand zu bremsen.

Warum gehen TYPO3-Mails verloren?

Meistens ist mit deinem Mailserver alles gut. Ab und zu zickt er aber: ein vorübergehender SMTP-Fehler wie Googles 421 4.7.0 Try again later (die Antwort des Servers für „gerade beschäftigt, versuch es später noch mal“), ein kurzes Wartungsfenster oder ein Rate-Limit (eine Obergrenze, wie viele Mails ein Server in einer bestimmten Zeit annimmt) mitten im Newsletter-Versand.

Schlägt die Zustellung fehl, schickt ein Standard-TYPO3 die Mail ab und vergisst sie. Es gibt keinen zweiten Versuch, keinen Eintrag und keine Warnung — du merkst es erst, wenn jemand fragt, wo die Mail geblieben ist.

Genau das ist bei der Technischen Akademie Esslingen (TAE) passiert, einem Weiterbildungsanbieter mit 800 bis 1.000 Veranstaltungen pro Jahr auf TYPO3. Ein externer Mailserver fiel immer wieder aus, und zuerst hat es niemand gemerkt:

Wir haben es erst gemerkt, wenn sich die Anmeldung gemeldet hat: Heute kam irgendwie noch keine Anmeldung rein.
Niklas Pahl, Referent Marketing & Kommunikation, TAE Lies die Mail Queue Erfolgsgeschichte

Das Ärgerliche daran: Der Aussetzer ist vorübergehend. Ein zweiter Versuch eine Minute später hätte oft gereicht, stattdessen verschwindet die Mail beim ersten Stolpern.

Wiederholt mein Mail-Dienstleister das nicht für mich?

Nur auf halber Strecke. Ein Dienstleister (ein E-Mail-Versanddienst wie Postmark oder SendGrid) wiederholt die zweite Hälfte — von sich zum Empfänger, nachdem er deine Mail angenommen hat.

Erreicht deine Instanz (deine TYPO3-Installation) ihn gar nicht erst, wurde die Mail nie angenommen und existiert nirgends. Das passiert zum Beispiel bei einem Netzwerkfehler, einem API-Timeout (die Programmierschnittstelle des Dienstleisters hat nicht rechtzeitig geantwortet), einem HTTP-429-Fehler („zu viele Anfragen“) oder einer Störung beim Dienstleister. Mail Queue ist deshalb kein Ersatz für deinen Dienstleister, sondern die fehlende Hälfte davor.

Warum die üblichen Behelfslösungen nicht reichen

Teams behelfen sich meist mit einer von drei Notlösungen, und jede hat ihren Haken:

  • Der eingebaute Spool von TYPO3 (ein Zwischenspeicher für ausgehende Mails) tut nicht das, was die meisten annehmen. Die Voreinstellung wiederholt einen gescheiterten Versand dreimal im selben Request (im selben Seitenaufruf oder Formularversand) und verwirft ihn dann. Es gibt keinen Versuchszähler und keine Unterscheidung zwischen vorübergehendem und dauerhaftem Fehler. Am Ende bleibt nur eine Logzeile — ohne Empfänger, ohne Inhalt und ohne Möglichkeit, die Mail erneut zu verschicken.
  • Zusätzliche Infrastruktur wie ein eigenes Mail-Relay (ein Server, der Mails nur weiterleitet) oder ein Mailcatcher-Container (ein separat betriebenes Tool, das Mails auffängt, statt sie zu verschicken) auf dem Staging (der Testkopie der Live-Website) heißt mehr bewegliche Teile, die du betreiben, absichern und dem Kunden erklären musst.
  • Sich selbst ins BCC setzen ist der Klassiker unter Entwicklern. Wenn eine Registrierungsstrecke kaputt aussieht und du beweisen willst, dass die Mail das System verlassen hat, setzt du deine eigene Adresse ins BCC (Blindkopie: eine unsichtbare Kopie an eine weitere Adresse) und wartest. Einmal funktioniert das, als Gewohnheit macht es aber Probleme: Du änderst Versandcode nur zum Debuggen (Fehlersuchen), fremde Mails landen in irgendeinem Postfach (schon für sich ein Problem nach der DSGVO, der Datenschutz-Grundverordnung), auf dem Live-Server vergisst du leicht, es wieder abzuschalten, und über die Mails, die gescheitert sind, lernst du trotzdem nichts.

Die eigentliche Lücke ist einfacher: TYPO3 bietet keine eingebaute Möglichkeit zu sehen, ob eine Mail rausging und was drinstand.

Was wir stattdessen wollten: Mails im Normalfall sofort zustellen, nie eine einfach so verlieren und den ganzen Ablauf sichtbar machen — ohne neue Infrastruktur und ohne Eingriffe in den Code.

So funktioniert Mail Queue: erst senden, bei einem Fehler in die Warteschlange

Mail Queue macht bewusst nur eine Sache: dafür sorgen, dass eine Mail, die rausgehen kann, es auch tut.

Mails gehen sofort raus. Nur die, die scheitern, werden aufgefangen, kommen in die Warteschlange und werden erneut verschickt, bis sie zugestellt sind.

Diagramm 1: Mail Queue verschickt Mails direkt und stellt nur gescheiterte für den automatischen erneuten Versand in die Warteschlange.

Im Normalfall steht nichts zwischen deinem Request und SMTP. Es gibt keine zusätzliche Verzögerung und kein Warten auf einen Scheduler (das TYPO3-Werkzeug, das Aufgaben zu festen Zeiten ausführt). Nur eine gescheiterte Zustellung wird aufgefangen. Dann landet die Mail in einer Warteschlange in der Datenbank und wird in wachsenden Abständen erneut verschickt:

  1. nach 1 Minute
  2. nach 5 Minuten
  3. nach 15 Minuten
  4. nach 60 Minuten
  5. danach alle 4 Stunden, bis zu 20 Versuche insgesamt

Ist die Mail nach rund 61 Stunden (etwa zweieinhalb Tagen) immer noch nicht draußen, gibt Mail Queue auf, und die Mail erscheint rot im Dashboard und im Backend-Modul.

Vorübergehende Fehler werden wiederholt, dauerhafte nicht: Ein wirklich unbekannter Empfänger wird nicht tagelang angeschrieben, sondern sofort festgehalten, samt Inhalt. So kannst du die Mail prüfen und von Hand erneut verschicken. Auch Anhänge überleben: Sie werden einmal gespeichert und bei jedem Versuch wiederverwendet, damit die Datenbank nicht aufgebläht wird.

Welche Mails deckt Mail Queue ab?

Alle. Mail Queue setzt am Mailtransport von TYPO3 an (dem Teil von TYPO3, der Mails an den Mailserver übergibt) und nicht am Anwendungscode — core-nah, so wie wir gerne arbeiten. Dadurch deckt es jede Mail der Instanz ab: deine eigenen Extensions, das Form Framework (das eingebaute Formular-Tool von TYPO3) und die Passwort-Mails aus felogin (dem Frontend-Login von TYPO3).

Am aufrufenden Code musst du nichts ändern. Prüfen musst du nur, ob eine Extension tatsächlich den TYPO3-Mailer nutzt — fast jede gepflegte Extension tut das.

Wenn du mehrere Sites aus einer TYPO3-Instanz betreibst, kann jede über ihren eigenen Mailserver senden. Mail Queue merkt sich, zu welchem Konto eine Mail gehört, und verschickt sie immer über genau dieses Konto. Eine wartende Mail geht also nie unter dem falschen Absender raus. Bei einer Installation mit nur einer Site gibt es nichts extra einzurichten, weil die Extension dort deinen normalen Transport nutzt.

Wie richte ich Mail Queue ein?

Die Einrichtung hat drei Schritte:

  1. Composer-Paket installieren (Composer ist das Standard-Werkzeug, um PHP-Software zu installieren).
  2. Eine Zeile Konfiguration ergänzen.
  3. Zwei wiederkehrende Jobs einrichten, entweder im TYPO3-Scheduler oder als Cronjob (eine zeitgesteuerte Aufgabe auf dem Server).

Solange diese Konfigurationszeile fehlt, wird nichts abgefangen und nichts in die Warteschlange gelegt. Du kannst die Extension also jetzt installieren und einschalten, wenn du so weit bist. Sie läuft auf TYPO3 v13.4.23 oder neuer und auf v14.

Der Status der Mailwarteschlange zeigt 2 wartende E-Mails an, die älteste E-Mail ist 7 Minuten alt, mit einem Alarmgrenzwert von 30 Minuten.
Widget Mail Queue Status im TYPO3-Dashboard mit oranger Warnung.

Sieh, was deine Mails machen

Zuverlässigkeit ist nur die halbe Miete. Du musst auch sehen, was deine Mails machen.

Nutzt du das TYPO3-Dashboard (die Startseite mit Widgets im TYPO3-Backend), zeigt dir das Widget „Mail Queue Status“ eine Ampel:

  • Grün: Alles ging direkt raus.
  • Orange: Mails warten und werden erneut verschickt.
  • Rot: Etwas steckt zu lange fest oder wurde aufgegeben.

Ein Blick reicht, du musst nicht in Logs suchen.

Genau diese Aufgabe übernimmt Mail Queue bei der TAE:

Die Mail Queue erfüllt auch eine Frühwarnsystem-Funktion.
Niklas Pahl, TAE Hole dir Mail Queue

Das Backend-Modul (ein Bereich im Verwaltungsbereich von TYPO3) unter Site Management geht tiefer. Es listet jeden Eintrag mit Statusfilter und Suche. Klick auf einen Betreff, und du siehst die vollständige Mail: Header (Absender, Empfänger, Betreff und technische Angaben), Text-Body, den HTML-Body (die formatierte Version der Mail) sicher in einem abgeschotteten iframe (einem isolierten Fenster, damit nichts aus der Mail TYPO3 beeinflussen kann) gerendert und die Liste der Anhänge. Das ersetzt den BCC-Trick durch einen echten Beleg, was verschickt wurde — für jede Mail und ohne den Versandcode anzufassen.

Backend-Modul Mail Queue in TYPO3 mit Liste der ausgehenden Mails, Statusfilter und Suche.
Unsere Webseite ist sehr komplex, da arbeiten verschiedene Systeme, Agenturen und Dienstleister zusammen. Das in einer Art Dashboard sichtbar zu machen, ist unheimlich praktisch.
Niklas Pahl, TAE Lies die Mail Queue Erfolgsgeschichte

Das Modul gibt es auf Deutsch und Englisch, und jede Beschriftung lässt sich pro Installation überschreiben. So liest jeder, der die Warteschlange bedient, sie in seiner Sprache, ohne dass jemand den Code forken (eine eigene, veränderte Kopie anlegen) muss.

Können Redakteure Mail Queue ohne Admin-Rechte nutzen?

Ja, und genau das ist für Agenturen nützlich. Das Modul bleibt unsichtbar, bis du es freigibst, und die Rechte sind fein abgestuft. Ein Redakteur, dem du vertraust und der eine Site betreut, darf:

  • die Warteschlange beobachten,
  • eine steckengebliebene Mail erneut verschicken und
  • eine Mail mit Tippfehler in der Empfängeradresse an die korrigierte Adresse schicken.

Bei der TAE ist der letzte Punkt der wichtigste. Teilnehmer buchen ohne Kundenkonto, also sagt ihnen niemand, wenn sie sich bei der Adresse vertippen:

In drei von vier Fällen hängt es mit einem Tippfehler in der E-Mail zusammen.
Robin Renz, Leiter Marketing & Kommunikation, TAE Hol dir Mail Queue

Statt den Kunden rauszusuchen und eine neue Mail mit Bestätigungslink von Hand zu schreiben, korrigiert das Team die Adresse jetzt im Modul und verschickt die Mail neu.

Ich kann aus der Mail Queue direkt die E-Mail-Adresse korrigieren und die Mail neu versenden. Das ist ein Workflow, der deutlich einfacher ist.
Niklas Pahl, TAE Lies die Mail Queue Erfolgsgeschichte

Zwei weitere Rechte sind davon getrennt: einzelne Einträge löschen und den Versand der ganzen Instanz anhalten oder fortsetzen. So kannst du einen Redakteur seine eigenen Mails aufräumen lassen, ohne ihm den Schalter zu geben, der den Versand instanzweit stoppt — die eine Kontrolle, die du an der kurzen Leine halten willst.

Auf einer Multisite-Instanz (eine TYPO3-Installation, auf der mehrere Websites laufen) kannst du einen Redakteur auf seine eigene Site oder Sites einschränken, indem du die erlaubten Sites an seiner Backend-Gruppe auswählst. Er sieht dann nur die Mails dieser Site — in der Liste, in der Detailansicht und beim erneuten Verschicken —, und das prüft der Server. Anhalten und Fortsetzen bleibt instanzweit und braucht das eigene Verwaltungsrecht.

Das hält auch das Datenschutzrisiko in Schach. Das Modul zeigt echte Mailinhalte, inklusive Passwort-Mails und anderer personenbezogener Daten. Schränke einen Redakteur also auf seine Site ein, oder gib die uneingeschränkte Sicht nur Leuten, denen du instanzweit vertraust.

Wie bekomme ich eine Warnung, wenn Mails scheitern?

Fürs Monitoring in der Produktion empfehlen wir dringend einen Webhook (eine automatische Nachricht, die ein System übers Web an ein anderes schickt). Ist die Warteschlange rot, ist meist genau SMTP der kaputte Teil — eine Warnung per Mail käme also womöglich nie an.

Ein Webhook über HTTPS (eine verschlüsselte Web-Verbindung) ist die Warnung, die dich trotzdem erreicht. Er meldet sich bei Slack oder Teams einmal, wenn es rot wird, und einmal, wenn es sich wieder erholt hat, nicht jede Minute.

Mails lokal und auf dem Staging anhalten statt Mailcatcher betreiben

Im Alltag ist das Anhalten oft die Funktion, die Entwickler ständig nutzen. Schalt „alle Mails anhalten“ ein, und jede ausgehende Mail wird aufgefangen, statt verschickt zu werden. Du kannst jede davon im Backend öffnen und komplett lesen — Header, Text, gerendertes HTML und Anhänge —, direkt in TYPO3.

Wer Mailpit (oder früher MailHog), zwei verbreitete Mailcatcher-Tools, auf dem eigenen Rechner oder auf dem Staging betrieben hat, kennt den Nutzen: Mails auffangen, ansehen, aber nicht wirklich zustellen. Mail Queue macht dieselbe Aufgabe ohne den zusätzlichen Container (ein separat laufendes Software-Paket, etwa in Docker), den du betreiben, hosten und erklären musst. Die Mails tauchen in dem TYPO3-Backend auf, das du und dein Kunde ohnehin kennen.

Detailansicht einer angehaltenen Mail im TYPO3-Backend mit Header, Textteil, gerendertem HTML und Anhängen.

Lokal siehst du genau, was dein Code erzeugt hat. Auf dem Staging können Kunden ihre eigenen Mails testen, indem sie das Formular ausfüllen oder die Bestellung auslösen und danach die aufgefangene Mail lesen. Willst du die echte Zustellung für eine bestimmte Nachricht prüfen, verschickst du genau diese eine. Eine zweite Lizenz brauchst du dafür nicht, denn eine Lizenz für eine Produktivinstanz deckt Staging, Review (eine Vorschau-Umgebung, um Änderungen zu prüfen) und lokal bereits ab.

Warum forceHold auf dem Staging sicherer ist

Für lokale, Staging- und Testumgebungen gibt es eine verlässlichere Absicherung. Ein von Hand gesetztes Anhalten liegt in der Datenbank, was in der Produktion in Ordnung ist. Der Haken: Das Staging importiert regelmäßig die Produktionsdatenbank, und dieser Import bringt den Zustand „weiter senden“ aus der Produktion mit. Ein von Hand gesetztes Anhalten auf dem Staging wird vom nächsten Dump (einer Kopie der Datenbank) überschrieben, und die Mails fließen wieder.

Die Einstellung forceHold liegt stattdessen in der Deployment-Konfiguration (den Konfigurationsdateien, die mit jeder Umgebung ausgeliefert werden), sodass ein Datenbank-Import sie nicht aufheben kann. Ist sie an, verschickt die Umgebung schlicht nie etwas, und auch kein Administrator hebt das aus Versehen auf.

Ein praktischer Hinweis: Angehaltene Mails stapeln sich. Setz auf dem Staging deshalb eine Aufbewahrungsfrist, damit die tägliche Bereinigung Tabelle und Speicher im Griff behält. Ein einzelner Befehl leert die Warteschlange vor einer Demo oder nach einem Lasttest (einem Test, der viel Traffic simuliert).

Dasselbe Anhalten ist auch in der Produktion nützlich. Du kannst zum Beispiel eine Charge während einer geplanten Mailserver-Migration pausieren, danach fortsetzen, und alles geht mit dem nächsten Lauf raus.

Archivmodus: der Beleg, was verschickt wurde

Der Archivmodus schließt die letzte Lücke. Er behält jede verschickte Mail samt Inhalt, bis die Aufbewahrungsfrist abläuft, die du festlegst — mit einem Modul, das du auf die Leute beschränkst, die es sehen sollen.

Damit hast du eine echte Antwort auf den BCC-Trick: den Beleg, dass die Lizenzmail, die Rechnung oder die Passwort-Mail rausging, und genau, was drinstand. Das gilt für jede Mail, ohne Codeänderung, und jede davon kannst du per Klick aus dem Modul erneut verschicken.

Warum das zählt

In unseren Projekten ist Mail eins der Dinge, die erst Aufmerksamkeit bekommen, wenn sie ausfallen. Mail Queue macht die Zustellung zu etwas, dem du vertrauen und das du im Zweifel belegen kannst. Du bekommst weniger „Wo ist meine Mail?“-Tickets, eine klare Spur, wenn jemand fragt, und die Möglichkeit, den separaten Mailcatcher auf dem Staging zu streichen. Redakteure können das Tagesgeschäft in der Warteschlange übernehmen (auf Multisite beschränkt auf ihre eigene Site), Administratoren behalten die kritischen Schalter, und jede Site nutzt weiterhin ihren eigenen Mailserver.

Bevor es die Mail Queue gab, wurde so ein Problem gar nicht sichtbar. So haben wir jetzt den vollen Überblick, wenn wieder so ein technisches Problem auftritt.
Robin Renz, Leiter Marketing & Kommunikation, TAE Read success story

Kostenlose Extensions können eine Mail protokollieren und dir einen Knopf zum erneuten Verschicken geben. Der echte Unterschied liegt in allem, was nach einem Fehler kommt: erneut verschicken, bis die Mail wirklich ankommt, eine Warnung, die dich auch bei totem Mailserver erreicht, und das eigene Absenderkonto je Mandant (je Kunde oder Website in einer Installation), das auch beim erneuten Versuch das richtige bleibt.

Mail Queue ist für den Produktivbetrieb gebaut: mit einer Checkliste für den Livegang, mit Umgebungseinstellungen, die ein Datenbank-Import nicht aushebelt, und mit einer End-to-End-Testsuite (automatisierten Tests, die den ganzen Versand von Anfang bis Ende prüfen). Wir setzen die Extension außerdem da ein, wo es zuerst uns selbst wehtun würde: Mail Queue verschickt die Lizenzmails des b13 Marketplace, also die Mails mit den Composer-Zugangsdaten (den Logins zum Herunterladen kostenpflichtiger Pakete) unserer Kunden. Ginge eine davon verloren, hätte jemand bezahlt und nichts bekommen. Auch die Buchungsmails der Technischen Akademie Esslingen auf tae.de laufen über Mail Queue.

Häufige Fragen

Warum kommt meine TYPO3-Mail nicht an?

Oft, weil der Mailserver oder der Mail-Dienstleister beim Versand gerade ein vorübergehendes Problem hatte. Ein Standard-TYPO3 versucht es nicht erneut, deshalb ist die Mail spurlos weg.

Bremst Mail Queue den Versand?

Nein. Mails gehen wie gewohnt sofort raus. Mail Queue greift nur ein, wenn ein Versand fehlschlägt.

Wie lange versucht Mail Queue es erneut?

Bis zu 20 Versuche in rund 61 Stunden: nach 1, 5, 15 und 60 Minuten, danach alle 4 Stunden.

Welche TYPO3-Versionen unterstützt Mail Queue?

TYPO3 v13.4.23 LTS oder neuer und v14.

Kann Mail Queue Mailpit auf dem Staging ersetzen?

Ja. Der Anhalte-Modus fängt jede ausgehende Mail auf, damit du sie im TYPO3-Backend lesen kannst, und forceHold sorgt dafür, dass das Staging nie echte Mails verschickt.

Was kostet Mail Queue?

Mail Queue ist eine Jahreslizenz pro Produktivinstanz. Sie deckt alle Umgebungen dieser Instanz ab, inklusive Staging, Review und lokal. Die aktuellen Preise stehen auf der Produktseite.

Wie stehst du dazu?

Schon mal so einen Anruf wegen einer verlorenen Mail bekommen? Mail Queue erspart dir die schlaflosen Nächte.

Geschrieben von:

Lächelnder Mann mit kurzen Haaren und einem Bart, der ein rotes T-Shirt trägt, steht in einem gut beleuchteten Innenraum mit verschwommenem Hintergrund.

Als b13-Gründer und CEO is David derjenige, mit dem Du es zu tun haben wirst, wenn Du mit uns zusammenarbeiten möchtest. Er eignet sich ständig neue Fähigkeiten an und bestimmt maßgeblich unsere hochmodernen Ansätze in der Frontend-Entwicklung.

David Steeb CEO
mehr von David Steeb