The most recent open source version of Zimbra Collaboration 8.8 has no official backup module. But with the help of scripting it is still possible to backup a mailbox.
The following situation is assumed:
- Up-to-date Zimbra Collaboration 8.8
- A file is available (emailaccounts.txt) containing all email addresses for the backup
- A NFS server is available to store the backup externally
- A local directory (/nfs-mount) is available to connect to the NFS server
- The script has to be run as root because of NFS (maybe there are other ways to do this, but it works.)
- A local partition is available (/backup) from where the backup is copied to the NFS server
#!/bin/bash # # Functies # function backup_loop() { # In het bestand emailaccounts.txt moet handmatig het emailaccount worden toegevoegd, wil het meegenomen worden in de backup. for i in $(cat /home/maarten/emailaccounts.txt); # De content van de gehele mailbox (dus ook agenda etc.) wordt dmv een API opgevraagd en opgeslagen in de map /backup/zimbra/ do backup_folder_check # Controleer of de map bestaat backup_cleanup # Verwijder bestanden ouder dan geconfigureerde dagen export_mailbox # Exporteer de mailbox backup_to_nas # Zet een kopie op de nas via de NFS-koppeling # Echo welke emailadressen in de backup zijn verwerkt echo $i; # Klaar met exporteren done; } function backup_folder_check() { # Controleer of de map bestaat voor deze gebruiker. Is dit niet het geval, maak alsnog de map aan. if [ ! -d /backup/zimbra/$i ]; then mkdir -p /backup/zimbra/$i; chown zimbra:zimbra /backup/zimbra/$i fi } function export_mailbox() { zmmailbox -z -m $i getRestURL "//?fmt=tgz" > /backup/zimbra/$i/$(date +%Y-%m-%d).tgz; } function backup_cleanup() { /usr/bin/find /backup/zimbra/$i/ -type f -mtime +4 -delete; # Verwijder bestanden ouder dan 4 dagen } function backup_to_nas() { cp -Rf /backup/zimbra/$i /nfs-mount/zimbra/$i # Kopieer bestanden naar de nas via /nfs-mount/ } function mount_nfs() { /sbin/mount.nfs4 NAS:/volume2/Backups /nfs-mount/ -w -o rsize=8192,wsize=8192 # Koppel de nas aan /nfs-mount/ } function unmount_nfs() { /sbin/umount.nfs4 /nfs-mount/ # Ontkoppel de /nfs-mount/ } # # Volgorde uit te voeren werkzaamheden # mount_nfs # Maak de NAS wakker en maak een NFS-koppeling --> kan alleen als root backup_loop # Start de loop - controleer of mappen bestaan en exporteer vervolgens de mailbox naar de betreffende map backup_cleanup # Zorg dat de lokale backup maximaal 4 dagen oud is unmount_nfs # Ontkoppel /nfs-mount/ zodat de NAS kan slapen --> kan alleen als root