Das Symptom
Der Anbieter meldet seit Tagen, das Postfach sei voll, und weist neue Nachrichten
ab. Man hat daraufhin gründlich aufgeräumt: mehrere hundert alte Mails markiert,
gelöscht, den Papierkorb geleert. Die Anzeige im Mailprogramm zeigt einen deutlich
kürzeren Posteingang. Die Speicheranzeige des Anbieters zeigt exakt dieselbe Zahl
wie vorher.
Manchmal kommt eine zweite Merkwürdigkeit dazu: Die gelöschten Nachrichten stehen
weiter in der Liste, nur durchgestrichen oder ausgegraut. Ein anderes Gerät zeigt
sie sogar wieder ganz normal an, als wäre nichts geschehen.
Die „Layer 8“-Wahrheit
Löschen ist bei IMAP kein Vorgang, sondern zunächst eine Meinungsäußerung. Das
Protokoll kennt für jede Nachricht eine Liste benannter Markierungen, und eine davon
heißt \Deleted. Ihre Bedeutung steht im Standard so knapp, dass man sie zweimal
lesen muss, um den Haken zu bemerken: Die Nachricht gilt als gelöscht — zur
Entfernung durch ein späteres EXPUNGE. Das Wort „später“ trägt hier die ganze Last.
Bis dieses EXPUNGE kommt, liegt jedes Byte noch da, wo es lag, und der Anbieter
rechnet es selbstverständlich mit.
Das ist kein Versehen im Entwurf, sondern Absicht. Die Trennung zwischen Markieren
und Entfernen ist die einzige Gelegenheit, eine Löschung zurückzunehmen, bevor sie
unwiderruflich wird — und weil mehrere Geräte gleichzeitig auf dasselbe Postfach
sehen, wäre ein sofortiges Entfernen auch praktisch schwer beherrschbar. Der Preis
dafür ist die Verwirrung, um die es hier geht: Zwischen „gelöscht“ und „weg“ liegt
ein Schritt, den kein Mailprogramm dem Benutzer je erklärt.
Erschwerend kommt hinzu, dass jedes Programm diesen Schritt anders versteckt und
anders benennt. Thunderbird nennt ihn Komprimieren, was klingt, als würde etwas
zusammengedrückt statt gelöscht. Apple Mail spricht von gelöschten Objekten, Outlook
vom endgültigen Löschen. Und dann gibt es noch die zweite Bauweise: Statt die
Markierung zu setzen, verschieben viele Programme gelöschte Nachrichten in einen
Papierkorbordner. Der Standard erlaubt beides ausdrücklich — er beschreibt den
Papierkorb einmal als virtuelles Postfach über alle markierten Nachrichten und einmal
als bloßen Vorschlag für Clients, die das Markierungsmodell gar nicht benutzen wollen.
Wer also den Papierkorb leert und danach immer noch Platzmangel hat, hat womöglich
schlicht die andere Hälfte des Postfachs nicht angesehen.
Der zweite blinde Fleck ist der Ordner mit den gesendeten Nachrichten. Er wächst
still, jahrelang, und enthält jede Präsentation, jedes Foto und jedes PDF, das man je
verschickt hat — in voller Größe, denn eine gesendete Mail enthält den Anhang, nicht
einen Verweis darauf. In vielen vollen Postfächern ist er der mit Abstand
größte Ordner, und in fast jedem Aufräumversuch wird er übersehen, weil man beim Wort
Postfach an den Posteingang denkt.
Ein Postfach ist also nicht voll, weil der Anbieter geizig ist. Es ist voll, weil
gelöscht nicht entfernt bedeutet, weil der Papierkorb je nach Programm etwas ganz
anderes ist, und weil der Ordner, der den meisten Platz belegt, nicht der ist, in dem
man aufräumt.
Die echte, verifizierte Lösung
1000 % faktenbasiert. Jeder Befehl ist real, jeder Pfad existiert. Schritt für Schritt:
1.Erst zählen, was wirklich im Postfach liegt
Bevor irgendetwas entfernt wird, gehört gemessen. Der Befehl baut eine verschlüsselte Verbindung zum Posteingangsserver auf — nach RFC 9051, Abschnitt 2.1, lauscht ein IMAP-Server auf Port 143 unverschlüsselt oder auf Port 993 mit sofort beginnender Verschlüsselung. Danach die Zeilen darunter tippen; der Tag am Zeilenanfang gehört zum Protokoll. Die Antwort auf a2 nennt Gesamtzahl, Zahl der nur markierten Nachrichten und die belegten Oktetts. Weicht DELETED deutlich von null ab, ist die Frage bereits beantwortet.
openssl s_client -connect imap.example.com:993 -crlf -quiet
a1 LOGIN benutzer@example.com geheim
a2 STATUS INBOX (MESSAGES DELETED SIZE)
a3 LOGOUT
2.Herausfinden, wo Ihr Mailprogramm den Papierkorb vermutet
Der zweite häufige Grund ist, dass die Nachrichten sehr wohl aus dem Posteingang verschwunden, aber nur in einen anderen Ordner desselben Postfachs gewandert sind. Der Befehl listet alle Ordner samt Sonderzweck-Merkmalen auf; Ordner mit dem Merkmal \Trash, \Junk oder \Sent sind die üblichen Verdächtigen. Die Anführungszeichen gehören zum Befehl. Kennt der Server das Merkmal nicht, hilft die zweite Zeile: Sie listet schlicht alle Ordner auf, und der Papierkorb steht unter irgendeinem Namen dabei — je nach Anbieter Trash, Papierkorb, Gelöschte Elemente oder Deleted Items.
a4 LIST (SPECIAL-USE) "" "*"
a5 LIST "" "*"
3.Jeden Ordner einzeln nach seiner Größe fragen
Speicherplatz wird selten nur vom Posteingang belegt. Der Ordner mit gesendeten Nachrichten ist bei Menschen, die viel mit Anhängen arbeiten, regelmäßig der größte im ganzen Postfach — er wird aber nie aufgeräumt, weil ihn niemand als Speicherfresser wahrnimmt. Die Befehle fragen die drei üblichen Kandidaten ab. Die Ordnernamen aus der Liste des vorigen Schritts einsetzen; antwortet der Server auf SIZE mit BAD, ist es ein älterer Server nach RFC 3501, und die Angabe entfällt ersatzlos.
a6 STATUS "Trash" (MESSAGES DELETED SIZE)
a7 STATUS "Sent" (MESSAGES DELETED SIZE)
a8 STATUS "Junk" (MESSAGES DELETED SIZE)
4.Die markierten Nachrichten ansehen, bevor sie verschwinden
Vorsicht: Der nächste Schritt ist endgültig, es gibt kein Zurück und keinen Papierkorb hinter dem Papierkorb. Deshalb erst nachsehen, was betroffen wäre. SELECT wählt das Postfach aus, SEARCH DELETED liefert die laufenden Nummern aller Nachrichten mit gesetzter \Deleted-Markierung — RFC 9051 beschreibt diesen Suchbegriff schlicht als Nachrichten, bei denen die \Deleted-Markierung gesetzt ist. Kommt eine lange Liste zurück, ruhig zuerst eine einzelne Nachricht mit FETCH ansehen und sicherstellen, dass wirklich nur Müll dabei ist.
a9 SELECT INBOX
a10 SEARCH DELETED
a11 FETCH 1 (ENVELOPE)
5.Endgültig entfernen — im Mailprogramm oder direkt
Der bequeme Weg führt über das Mailprogramm: Thunderbird nennt die Funktion Komprimieren, Apple Mail Gelöschte Objekte löschen, Outlook Ordner endgültig löschen. Alle drei senden im Hintergrund dasselbe EXPUNGE. Wer es direkt tun will, benutzt die Zeilen darunter. Die erste setzt die Markierung an einem Bereich von Nachrichten — die Schreibweise mit dem Doppelpunkt bezeichnet eine Spanne —, die zweite entfernt anschließend alle markierten Nachrichten des ausgewählten Postfachs dauerhaft. Achtung: Dieser Schritt ist unwiderruflich; der Server bestätigt jede entfernte Nachricht mit einer eigenen EXPUNGE-Zeile.
a12 STORE 1:20 +FLAGS (\Deleted)
a13 EXPUNGE
6.Die Einstellung finden, die das Aufräumen dauerhaft übernimmt
Ein einmaliges Aufräumen löst das Problem für vier Wochen. Danach steht es wieder da, weil die Ursache eine Voreinstellung ist. In den Kontoeinstellungen jedes Mailprogramms gibt es zwei Stellschrauben: erstens, ob gelöschte Nachrichten in den Papierkorb verschoben oder nur markiert werden, und zweitens, ob und wann der Papierkorb automatisch geleert wird — üblich ist beim Beenden des Programms oder nach einer festen Zahl von Tagen. Beides einmal bewusst einstellen, statt sich auf die Voreinstellung des Herstellers zu verlassen. RFC 9051 kennt übrigens noch eine elegantere Variante: Der Befehl CLOSE entfernt laut Abschnitt 6.4.1 beim Verlassen eines Postfachs alle markierten Nachrichten dauerhaft, und zwar ohne die vielen Rückmeldezeilen — deshalb ist er bei großen Aufräumaktionen deutlich schneller als EXPUNGE.
7.Prüfen, ob es überhaupt am Postfach liegt
Wenn nach alldem noch Platzmangel gemeldet wird, ist möglicherweise gar nicht das Mailpostfach voll, sondern der gemeinsame Speicher des Kontos — viele Anbieter rechnen Postfach, Dateiablage und Fotos in einen einzigen Topf. Das steht in der Weboberfläche des Anbieters, nicht im Mailprogramm. Der zweite Verdächtige ist der lokale Zwischenspeicher: Bei einem IMAP-Konto legt das Mailprogramm eine Kopie auf der Festplatte an, und die schrumpft nicht automatisch mit. Der Befehl zeigt, wie viel Platz das Thunderbird-Profil örtlich belegt — ist der lokale Datenträger das eigentliche Problem, hilft dort ebenfalls das Komprimieren der Ordner.
du -sh ~/.thunderbird/*/ImapMail 2>/dev/null