From d15ea4478f51a9b572a9d587836327c3d83c8e7c Mon Sep 17 00:00:00 2001 From: DerLinkman Date: Wed, 3 May 2023 12:19:46 +0200 Subject: [PATCH] Add Documtentation about maildir_very_dirty_syncs (by: @Daniel15) --- .../Dovecot/u_e-dovecot-performance.de.md | 16 ++++++++++++++++ .../Dovecot/u_e-dovecot-performance.en.md | 16 ++++++++++++++++ mkdocs.yml | 2 ++ 3 files changed, 34 insertions(+) create mode 100644 docs/manual-guides/Dovecot/u_e-dovecot-performance.de.md create mode 100644 docs/manual-guides/Dovecot/u_e-dovecot-performance.en.md diff --git a/docs/manual-guides/Dovecot/u_e-dovecot-performance.de.md b/docs/manual-guides/Dovecot/u_e-dovecot-performance.de.md new file mode 100644 index 000000000..09b7a508e --- /dev/null +++ b/docs/manual-guides/Dovecot/u_e-dovecot-performance.de.md @@ -0,0 +1,16 @@ +## maildir_very_dirty_syncs + +Dovecot's [`maildir_very_dirty_syncs`](https://wiki.dovecot.org/MailLocation/Maildir#Optimizations) Option ist seit mailcow Release 2023-05 standardmäßig aktiviert. Diese Option kann die Leistung von Postfächern, die sehr große Ordner (über 100.000 E-Mails) enthalten, erheblich verbessern. + +Mit dieser Option wird vermieden, dass beim Laden einer E-Mail das gesamte `cur`-Verzeichnis erneut durchsucht wird. Wenn diese Option deaktiviert ist, geht Dovecot auf Nummer sicher und durchsucht das **gesamte** `cur`-Verzeichnis (vergleichbar mit dem Ausführen eines `ls`), um zu prüfen, ob diese bestimmte E-Mail berührt (umbenannt, etc.) wurde, indem es nach allen Dateien sucht, deren Namen die richtige ID enthalten. Dies ist sehr langsam, wenn das Verzeichnis groß ist, selbst auf Dateisystemen, die für solche Anwendungsfälle optimiert sind (wie ext4 mit aktiviertem `dir_index`) auf schnellen SSD-Laufwerken. + +Diese Option ist sicher, solange Sie Dateien unter `cur` nicht manuell anfassen (da Dovecot die Änderungen dann möglicherweise nicht bemerkt). Auch wenn diese Option aktiviert ist, wird Dovecot Änderungen bemerken, wenn die mtime (last modified time) der Datei geändert wurde, aber ansonsten wird das Verzeichnis nicht gescannt und es wird einfach angenommen, dass der Index aktuell ist. Dies entspricht im Wesentlichen dem, was sdbox/mdbox tun, und mit dieser Option können Sie einen Teil der Leistungssteigerung erhalten, die mit sdbox/mdbox einhergehen würde, während Sie weiterhin maildir verwenden. + +Diese Option ist bei einer Standard-mailcow-Installation sicher zu verwenden. Wenn Sie jedoch Tools von Drittanbietern verwenden, die manuell Dateien direkt im Maildir modifizieren (anstatt über IMAP), möchten Sie diese Option vielleicht deaktivieren. Um diese Option zu deaktivieren, [erstellen Sie eine data/conf/dovecot/extra.conf Datei](./u_e-dovecot-extra_conf.de.md) und fügen Sie diese Einstellung hinzu: + +```ini +maildir_very_dirty_syncs=no +``` + +!!! warning "Achtung" + Bitte nutzen Sie für eigene Anpassungen **IMMER**, die oben erwähnte [`extra.conf`](./u_e-dovecot-extra_conf.de.md), da Änderungen, welche in der normalen `dovecot.conf` geändert werden möglicherweise _nach einem Update vom GitHub Quellcode_ überschrieben werden. \ No newline at end of file diff --git a/docs/manual-guides/Dovecot/u_e-dovecot-performance.en.md b/docs/manual-guides/Dovecot/u_e-dovecot-performance.en.md new file mode 100644 index 000000000..018f5628b --- /dev/null +++ b/docs/manual-guides/Dovecot/u_e-dovecot-performance.en.md @@ -0,0 +1,16 @@ +## maildir_very_dirty_syncs + +Dovecot's [`maildir_very_dirty_syncs` option](https://wiki.dovecot.org/MailLocation/Maildir#Optimizations) is enabled by default since mailcow Release 2023-05. This option can significantly improve the performance of mailboxes that contain very large folders (over 100,000 emails). + +What this option does is it avoids rescanning the entire `cur` directory whenever loading an email. With this option disabled, Dovecot takes it safe and scans the **entire** `cur` directory (comparable with running an `ls`) to check if that particular email was touched (renamed, etc), by looking for all files whose names contain the correct ID. This is very slow if the directory is large, even on filesystems optimized for such use cases (such as ext4 with `dir_index` enabled) on fast SSD drives. + +This option is safe to use as long as you do not manually touch files under `cur` (as then Dovecot may not notice the changes). Even with this option enabled, Dovecot will still notice changes if the file's mtime (last modified time) is changed, but otherwise it will not scan the directory and just assumes the index is up-to-date. This is essentially the same as what sdbox/mdbox do, and with this option you can get some of the performance increase that would come with sdbox/mdbox while still using maildir. + +This option is safe to use on a standard Mailcow installation. However, if you use any third-party tools that manually modify files directly in the maildir (rather than via IMAP), you may wish to disable it. To disable this option, [create a data/conf/dovecot/extra.conf file](./u_e-dovecot-extra_conf.en.md) and add this setting to it: + +```ini +maildir_very_dirty_syncs=no +``` + +!!! warning + Please **ALWAYS** use the above mentioned [`extra.conf`](./u_e-dovecot-extra_conf.en.md) for your own customizations, as changes made in the normal `dovecot.conf` might be overwritten _after an update from GitHub source code_. \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 011911e3b..1d51e18ce 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -128,6 +128,7 @@ nav: - 'Mail crypt': 'manual-guides/Dovecot/u_e-dovecot-mail-crypt.md' - 'More Examples with DOVEADM': 'manual-guides/Dovecot/u_e-dovecot-more.md' - 'Move Maildir (vmail)': 'manual-guides/Dovecot/u_e-dovecot-vmail-volume.md' + - 'Performance Optimizations': 'manual-guides/Dovecot/u_e-dovecot-performance.md' - 'Public folders': 'manual-guides/Dovecot/u_e-dovecot-public_folder.md' - 'Static master user': 'manual-guides/Dovecot/u_e-dovecot-static_master.md' - 'Vacation replies for catchall addresses': 'manual-guides/Dovecot/u_e-dovecot-catchall_vacation.md' @@ -246,6 +247,7 @@ plugins: 'More Examples with DOVEADM': 'Weitere Beispiele mit DOVEADM' 'Move Maildir (vmail)': 'Maildir verschieben (vmail)' 'Public folders': 'Öffentliche Ordner' + 'Performance Optimizations': 'Performance Optimierungen' 'Static master user': 'Statischer Hauptbenutzer' 'Vacation replies for catchall addresses': 'Urlaubsantworten für Catchall-Adressen' ### Nginx Subsection