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