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.
