diff --git a/docs/b_n_r_accidental_deletion.md b/docs/b_n_r_accidental_deletion.md new file mode 100644 index 000000000..43b731f21 --- /dev/null +++ b/docs/b_n_r_accidental_deletion.md @@ -0,0 +1,40 @@ +So you deleted a mailbox and have no backups, he? + +If you noticed your mistake within a few hours, you can probably recover the users data. + +### SOGo + +We automatically create daily backups (24h interval starting from running up -d) in `/var/lib/docker/volumes/mailcowdockerized_sogo-userdata-backup-vol-1/_data/`. + +**Make sure the user you want to restore exists in your mailcow**. Re-create them if they are missing. + +Copy the file named after the user you want to restore to `__MAILCOW_DIRECTORY__/data/conf/sogo`. + +1\. Copy the backup: `cp /var/lib/docker/volumes/mailcowdockerized_sogo-userdata-backup-vol-1/_data/restoreme@example.org __MAILCOW_DIRECTORY__/data/conf/sogo` + +2\. Run `docker-compose exec -u sogo sogo-mailcow sogo-tool restore -F ALL /etc/sogo restoreme@example.org` + +Run `sogo-tool` without parameters to check for possible restore options. + +3\. Delete the copied backup by running `rm __MAILCOW_DIRECTORY__/data/conf/sogo` + +4\. Restart SOGo and Memcached: `docker-compose restart sogo-mailcow memcached-mailcow` + +### Mail + +In case of an accidental deletion of a mailbox, you will be able to recover for (by default) 5 days. This depends on the `MAILDIR_GC_TIME` parameter in `mailcow.conf`. + +A deleted mailbox is copied in its encrypted form to `/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/_garbage`. + +The folder inside _garbage follows the structure `[timestamp]_[domain_sanitized][user_sanitized]`, for example `1629109708_exampleorgtest in case of test@example.org deleted on 1629109708. + +To restore make sure you are actually restoring to the same mailcow it was deleted from or you use the same encryption keys in `crypt-vol-1`. + +**Make sure the user you want to restore exists in your mailcow**. Re-create them if they are missing. + +Copy the folders from `/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/_garbage/[timestamp]_[domain_sanitized][user_sanitized]` back to `/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/[domain]/[user]` and resync the folder and recalc the quota: + +``` +docker-compose exec dovecot-mailcow doveadm force-resync -u restoreme@example.net '*' +docker-compose exec dovecot-mailcow doveadm quota recalc -u restoreme@example.net +``` diff --git a/mkdocs.yml b/mkdocs.yml index 65a3b113a..045cec693 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -62,6 +62,8 @@ nav: - 'Manually': - 'Maildir': 'u_e-backup_restore-maildir.md' - 'MySQL': 'u_e-backup_restore-mysql.md' + - 'Automatic backups' + - 'Recover accidentally deleted data': 'b_n_r_accidental_deletion.md' - 'Manual/Guides/Examples': - 'mailcow UI': - 'Configuration': 'u_e-mailcow_ui-config.md'