Migration mdbox abgeschlossen

Unser Server der die Mailboxen unserer 4future.email Nutzer hält, unterstützt mehrere Mailbox Formate. Ich habe jetzt entschieden, das Mailboxformat umzustellen.

Dovecot Mailbox-Formate

1. Maildir

Das klassische Format.

Aufbau

Jede E-Mail ist eine eigene Datei.

Maildir/
├── cur/
│ ├── 12345.abc
│ ├── 12346.def
│ └── …
├── new/
└── tmp/

Vorteile

  • Sehr robust
  • Einfach zu verstehen
  • Einfach zu sichern
  • Einzelne Mails können leicht wiederhergestellt werden
  • Keine Datenbank notwendig

Nachteile

Bei großen Mailboxen:

  • Zehntausende bis Millionen Dateien
  • Sehr viele Metadaten-Operationen
  • Viele Verzeichniszugriffe
  • Hohe Belastung für Filesysteme

Eine Mailbox mit 35.000 Mails erzeugt etwa:

35.000 Dateien
35.000 Inodes
35.000 Metadata-Zugriffe

Bei 10.000 Benutzern werden daraus schnell:

350 Millionen Dateien
Für lokale SSDs oft noch ok.
Für verteilte Filesysteme wie CephFS das wir betreiben um mehrere Mailserver gleichzeitig betreibe zu können - gelinde gesagt eher ungünstig.

2. mbox

Das historische Unix-Format.

Aufbau

Alle Mails eines Ordners in einer Datei.

Inbox
Sent
Drafts

Beispiel:

Inbox = 8 GB Datei

Vorteile

  • Wenige Dateien
  • Einfaches Layout

Nachteile

  • Locking-Probleme
  • Korruption betrifft ganze Mailbox
  • Schlechte Parallelität (mehrere Mailserver, mehrere Client Zugriffe)

Heute praktisch nicht mehr empfehlenswert.

3. sdbox

Eine Zwischenlösung von Dovecot.

Aufbau

Jede Mail weiterhin eigene Datei.

Aber andere interne Struktur.

sdbox/
├── storage/
├── index/

Vorteile

  • Dovecot optimiert

Nachteile

  • Immer noch viele Dateien

Deshalb selten genutzt.

4. mdbox

Das moderne Dovecot-Format.

Aufbau

Viele Mails werden in Containerdateien gespeichert.

mdbox/
├── storage/
│ ├── m.1
│ ├── m.2
│ ├── m.3
│ └── …
├── dovecot.map.index
├── dovecot.index

Eine Containerdatei enthält z.B.

500
1000
2000
Mails

statt

2000 einzelner Dateien

Vorteile von mdbox

1. Deutlich weniger Dateien

Statt:

35.000 Dateien

hat man vielleicht:

20 Dateien
für dieselbe Mailbox.

2. Weniger CephFS-Metadaten

CephFS liebt:

große Dateien

CephFS hasst:

Millionen kleiner Dateien (Übrigens bei Windows NTFS ist das genauso. NTFS hasst viele kleine Dateien und wird extrem langsam)

Jede Maildir-Mail im alten Format erzeugt MDS (Metadaten Service) -Last.
mdbox reduziert diese massiv.


3. Schnellere Backups

Weniger Dateien
→ weniger Stat-Aufrufe
→ weniger Inodes
→ weniger Metadata-Lookups


4. Bessere Cache-Nutzung

Der Linux-Pagecache arbeitet effizienter.

Statt:

35.000 Open/Close Operationen

liest er größere zusammenhängende Bereiche.

5. Höhere IMAP-Performance

Besonders bei:

  • großen Postfächern
  • vielen Clients
  • Outlook
  • Thunderbird
  • mobilen Geräten

Es wurden nun alle existierenden Postfächer auf das mdbox Format im laufenden Betrieb migriert. Neue Mailboxen werden nur noch im neuen Format angelegt.

1 „Gefällt mir“

Dovecot hat mich geleimt. Die Migration auf mdbox hat nicht funktioniert, obwohl doveadm anzeigt dass die Mailbox auf mdbox Format ist - ist sie tatsächlich noch immer am alten maildir Format.

Grund dafür sind die grundlegenden Änderungen bei der neuen Release Dovecot 2.4 - die ich vor kurzem auch eingeführt habe beim Upgrade auf Debian „Trixie“. Dovecot 2.4 hat sich grundlegend geändert - vor allem die gesamte Konfiguration - und scheinbar sind auch die Tools noch nicht 100% nachgezogen und zeigen falschen Informationen basierend auf der 2.3 Config an.

Ich bin gestern draufgekommen. Ich muss also die Migration nochmals durchführen. Ich halte Euch am laufenden.

1 „Gefällt mir“

Ok. Nach einem weiteren Arbeitstag funktioniert die Umstellung von mdir auf mdbox nun mit einem kleinen Script (nur 208 Zeilen :slight_smile: ). Einziges Problem: Alle Mails sind danach ungelesen. Die gelesen Flags gehen durch Migration verloren. Ich weiß noch nicht ob ich dafür eine Lösung finden kann.

1 „Gefällt mir“

Maildir - mdir - wäre ja am schönsten … Apple benutzt dies lokal, die Verzeichnis Struktur selbst ist aber undurchschaubar. Steckt sicherlich eine Datenbank dahinter.
TB versteift sich auf mbox. Hab noch nicht gefunden wie man das default auf mdir umstellen könnte.
eM Client eine Art Datenbank, Mails liegen trotzdem in Dateien ähnlich mbox - aber unlesbar.

maildir hat ein problem: 75.000 Files in einem Directory - das mag eigentlich kein Filesystem und ein gesharetes im Cluster noch viel weniger. Du siehst als Benutzer ja nichts davon, weil Du ohnehin nur über IMAP mit dem Server sprichst. Ich habe oben auch schon erklärt dass mdbox nicht mbox ist - das sind zwei verschiedene Konzepte. Aber vermutlich hast Du das übersehen?

Darum erstellt Apple bei der Mail.app viele einzelne Verzeichnisse, die haben nichts mit der Struktur zu tun die man im Programm sieht. Vermutlich ist die Zugehörigkeit in einer Datenbank abgebildet - .emlx Dateien sind lesbar.
Damit umgeht Apple Probleme. Klar bei einem großen Mailserver sind es in Summe eine große Zahl an einzelnen Mails - und eine große Zahl an Verzeichnissen.