Hallo

Ich habe Postfix auf einem virtuellen Server laufen und habe heute morgen erfahren, dass das Dateisystem meines Servers gegen Mitternacht in den read-only-Modus geschalten wurde. (Warum konnte man mir nicht sagen). Erst kurz nach 9 Uhr morgens wurde mein Server dann rebootet, seitdem läuft er wieder normal.

Angeblich ist er in diesen 9 Stunden weitergelaufen, konnte aber nichts (weder empfangene E-Mails noch Log-Einträge noch sonst etwas) auf die Festplatte schreiben.

Nun frage ich mich, wie Postfix in so einem Fall auf eingehende E-Mails reagiert. Ich halte zwei Varianten für denkbar:

A)
Postfix erkennt noch vor Ende des SMTP-Dialogs, dass es keine E-Mails speichern kann und meldet dem Client einen temporären Fehler. Dann ist alles gut, der Client wird später nocheinmal versuchen die E-Mail zuzustellen, so lange bis es endlich klappt oder bis ein Timeout abläuft. In diesem Fall erhält der Absender vom Client eine Nachricht die ihn über die Unzustellbarkeit informiert.

B)
Postfix bemerkt das nicht vor Ende des SMTP-Dialogs.
Der Client baut eine TCP-Verbindung zu meinem Postfix auf, dieser meldet sich mit 220. Auf HELO usw. antwortet Postfix mit 250, dann sendet der Client DATA und Postfix antwortet mit 354. Jetzt sendet der Client die eigentliche E-Mail und Postfix empfängt die Daten und hält sie zumindest während des Empfangens im RAM-Speicher vor.
Und jetzt kommt die entscheidende Frage:
Schreibt Postfix die empfangenen Daten auf die Festplatte bevor es an den Client 250 (oder 4xx/5xx) sendet? Wenn nein, erhält nämlich der Client die Information, dass er die E-Mail erfolgreich zugestellt hat (250). Es folgen QUIT und 221, dann wird die TCP-Verbindung abgebaut und die Verbindung ist damit getrennt. Der Client kann die E-Mail aus seinem Speicher löschen, weil er ja von meinem Postfix die Meldung bekommen hat, dass die E-Mail empfangen worden ist. Aber Postfix wird scheitern wenn es versucht die E-Mail auf die schreibgeschützte Festplatte zu schrieben und hat keine Möglichkeit mehr, nachträglich den Client zu informieren. Die E-Mail wäre in diesem Fall verloren.

Ich vermute ja, dass Postfix erst die empfangenen Daten wirklich physisch in den Permanentspeicher schreibt und erst dann den Empfang der Nachricht bestätigt, aber das ist eben nur eine Vermutung.

Kann das jemand definitiv bestätigen?

Danke!

LG
Hubert Schölnast

Antwort per Email an