From 68b5fc111b9884d5b9ca571e3ec4fa763f585cc4 Mon Sep 17 00:00:00 2001 From: Niklas Meyer Date: Wed, 6 Nov 2024 11:34:16 +0100 Subject: [PATCH] Feat/dovecot-lazy-expunge (#784) * added docs about lazy-expunge plugin * fix: two corrections of unsupported stuff * Corrected mailcow Version Tag --- .../Dovecot/u_e-dovecot-lazy_expunge.de.md | 52 +++++++++++++++++++ .../Dovecot/u_e-dovecot-lazy_expunge.en.md | 51 ++++++++++++++++++ mkdocs.yml | 2 + 3 files changed, 105 insertions(+) create mode 100644 docs/manual-guides/Dovecot/u_e-dovecot-lazy_expunge.de.md create mode 100644 docs/manual-guides/Dovecot/u_e-dovecot-lazy_expunge.en.md diff --git a/docs/manual-guides/Dovecot/u_e-dovecot-lazy_expunge.de.md b/docs/manual-guides/Dovecot/u_e-dovecot-lazy_expunge.de.md new file mode 100644 index 000000000..745e09003 --- /dev/null +++ b/docs/manual-guides/Dovecot/u_e-dovecot-lazy_expunge.de.md @@ -0,0 +1,52 @@ +!!! danger "Vorsicht" + Diese Anleitung befindet sich noch in Arbeit, Fehler können passieren! Nutzen Sie diese Funktion mit Bedacht! + +!!! info "Hinweis" + Diese Funktion ist ab mailcow-Versionen 2024-11 kompatibel. Ältere Versionen sind theoretisch ebenfalls in der Lage, die Funktion zu nutzen. Aufgrund interner Änderungen ist die Implementierung jedoch schwieriger und wird hier nicht weiter beschrieben, da nicht unterstüzt. + +## Vorwort +Dovecot unterstützt seit [geraumer Zeit](https://doc.dovecot.org/2.3/configuration_manual/lazy_expunge_plugin/) eine Funktion namens *Lazy Expunge*, welche es dem Serveradministrator ermöglicht, gelöschte E-Mails eines Benutzerkontos nach der eigentlichen Löschung zurückzuhalten. + +mailcow besitzt eine ähnliche Funktion, die jedoch für Benutzer nicht so leicht zugänglich ist (siehe [Versehentlich gelöschte Daten wiederherstellen (Mail)](../../backup_restore/b_n_r-accidental_deletion.de.md#mail)) und eher als Fallback-Methode für Administratoren dient. + +Mit der Dovecot-Option können Benutzer selbst als gelöscht markierte E-Mails einsehen und wiederherstellen, bevor diese dann automatisch vom Dovecot-Server gelöscht werden. + +## Einrichtung + +1. Bearbeiten Sie die `extra.conf` im Dovecot-Konfigurationsordner (in der Regel unter `MAILCOW_ROOT/data/conf/dovecot`) mit folgendem Inhalt: + ```bash + plugin { + # Kopiere alle gelöschten Mails in die .EXPUNGED Mailbox + lazy_expunge = .EXPUNGED + + # Als gelöscht markierte Mails von der Quota ausschließen + quota_rule = .EXPUNGED:ignore + } + + # Definiert die .EXPUNGED Mailbox + namespace inbox { + mailbox .EXPUNGED { + # Definiert, wie lange Mails in diesem Ordner bleiben sollen, bevor sie gelöscht werden. + # Zeit wird definiert nach: https://doc.dovecot.org/2.3/settings/types/#time + autoexpunge = 7days + # Definiert, wie viele Mails maximal in der EXPUNGED Mailbox gehalten werden sollen, bevor diese geleert wird + autoexpunge_max_mails = 100000 + } + } + ``` + +2. Starten Sie den Dovecot-Container neu: + + === "docker compose (Plugin)" + + ```bash + docker compose restart dovecot-mailcow + ``` + + === "docker-compose (Standalone)" + + ```bash + docker-compose restart dovecot-mailcow + ``` + +3. Nun sollte, wenn der Papierkorb geleert wird, ein neuer Ordner mit dem Namen `.EXPUNGED` erscheinen. In diesem Ordner sind die E-Mails enthalten, die gemäß der in Schritt 1 definierten Regeln nach einer gewissen Zeit automatisch vom Server gelöscht werden. \ No newline at end of file diff --git a/docs/manual-guides/Dovecot/u_e-dovecot-lazy_expunge.en.md b/docs/manual-guides/Dovecot/u_e-dovecot-lazy_expunge.en.md new file mode 100644 index 000000000..905e6356a --- /dev/null +++ b/docs/manual-guides/Dovecot/u_e-dovecot-lazy_expunge.en.md @@ -0,0 +1,51 @@ +!!! danger + This guide is still a work in progress, and errors may occur! Use this feature with caution! + +!!! info + This feature is compatible with mailcow versions starting from 2024-11. Older versions are theoretically capable of using it as well, but due to internal changes, the implementation is more complicated, so it won't be stated here as unsupported. + +## Introduction +Dovecot has supported a feature called *Lazy Expunge* for [quite some time](https://doc.dovecot.org/2.3/configuration_manual/lazy_expunge_plugin/), which allows server administrators to temporarily retain deleted emails from a user account even after they have been deleted. + +mailcow also has a similar feature, but it is not easily accessible to users (see [Recover accidentally deleted data (Mail)](../../backup_restore/b_n_r-accidental_deletion.en.md#mail)) and serves more as a fallback method for administrators. + +With the Dovecot option, users can view and restore emails that have been marked as deleted before they are automatically purged by the Dovecot server. + +## Setup + +1. Edit the `extra.conf` file in the Dovecot configuration folder (usually located at `MAILCOW_ROOT/data/conf/dovecot`) with the following content: + ```bash + plugin { + # Copy all deleted emails to the .EXPUNGED mailbox + lazy_expunge = .EXPUNGED + + # Exclude marked-as-deleted emails from the quota + quota_rule = .EXPUNGED:ignore + } + + # Define the .EXPUNGED mailbox + namespace inbox { + mailbox .EXPUNGED { + # Define how long emails will stay in this folder before they are deleted. Time is defined according to: https://doc.dovecot.org/2.3/settings/types/#time + autoexpunge = 7days + # Define how many emails can be kept in the EXPUNGED folder before it is cleared + autoexpunge_max_mails = 100000 + } + } + ``` + +2. Restart the Dovecot container: + + === "docker compose (Plugin)" + + ```bash + docker compose restart dovecot-mailcow + ``` + + === "docker-compose (Standalone)" + + ```bash + docker-compose restart dovecot-mailcow + ``` + +3. Once the trash is emptied, a new folder named `.EXPUNGED` should appear. This folder will contain emails that, according to the rules defined in step 1, will be automatically deleted from the server after a certain period. \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index a4306ae67..9ebbf8f6f 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -154,6 +154,7 @@ nav: - 'Full-Text Search': 'manual-guides/Dovecot/u_e-dovecot-fts.md' - 'Hardening Ciphers': 'manual-guides/Dovecot/u_e-dovecot-harden_ciphers.md' - 'IMAP IDLE interval': 'manual-guides/Dovecot/u_e-dovecot-idle_interval.md' + - 'Lazy Expunge (Dovecot Plugin)': 'manual-guides/Dovecot/u_e-dovecot-lazy_expunge.md' - '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' @@ -301,6 +302,7 @@ plugins: 'Expunge a Users mails': 'Löschen der Mails eines Benutzers' 'Full-Text Search': 'Volltext Suche (FTS)' 'IMAP IDLE interval': 'IMAP IDLE-Intervall' + 'Lazy Expunge (Dovecot Plugin)': 'Verzögertes Löschen (Dovecot Plugin)' 'More Examples with DOVEADM': 'Weitere Beispiele mit DOVEADM' 'Move Maildir (vmail)': 'Maildir verschieben (vmail)' 'Public folders': 'Öffentliche Ordner'