Backup Axigen mail server con Bacula o Bacula Enterprise
Axigen è un server di posta con funzionalità di grupware (calendario,rubrica,condivisione ecc), tutti gli archivi vengono tenuti in /var/opt/axigen/domains , si tratta di archivi binari in formato proprietario, non è quindi possibile effettuare backup incrementali/differenziali corretti salvando tale directory, ne effettuare il restore di specifiche caselle.
Per questo motivo axigen mette a disposizione un’interfaccia FTP con la quale è possibile accedere ai dati del dominio e delle caselle ed effettuare backup e restore delle singole caselle. Su Linux si può automatizzare l’accesso all’FTP tramite FUSE (filesystem in user space), quindi “montare” tale accesso ftp ed accederci come se fossero normali directory/file che quindi Bacula potrà facilmente salvare.
1) Abilita il servizio di backup FTP su axigen seguendo le indicazioni ufficiali:
http://www.axigen.com/knowledgebase/How-To-enable-the-FTP-Backup-service_116.html
2) Nel server axigen installa i pacchetti fuse ed expect (esempio per RedHat/Centos):
yum install fuse fuse-devel fuse-libs expect
3) Crea/modifica /etc/fuse.conf aggiungendo:
user_allow_other
4) Crea lo script di mount /etc/bacula/scripts/mount_axigen_storage:
#!/usr/bin/expect
set timeout 5
set exp_internal 1spawn telnet localhost 7000
expect “<login> ”
send “user admin\r”expect “<password> ”
send “ADMINPASSWORD\r”expect “<#> ”
send “config server\r”expect “<server#> ”
send “config ftp-backup\r”expect “<server-ftpBackup#> ”
send “FILESYSTEM mount /mnt/axigen domain MY.MAILSERVER.COM \r”expect “<server-ftpBackup#> ”
send “quit\r”interact
esegui:
mkdir /mnt/axigen
chmod 755 /etc/bacula/scripts/mount_axigen_storage
5) Crea lo script di umount /etc/bacula/scripts/umount_axigen_storage:
#!/bin/bash
umount /mnt/axigen/
esegui:
chmod 755 /etc/bacula/scripts/umount_axigen_storage
6) Modifica la configurazione di bacula aggiungendo il job specifico, esempio:
Job {
Name = “axigen”
Client = axigen-fd
JobDefs = “default”
FileSet = “axigen-filesystem”
Schedule = “myschedule”
Storage = DISK
# ftp mount
Client Run Before Job = “/etc/bacula/scripts/mount_axigen_storage”
# umount
Client Run After Job = “/etc/bacula/scripts/umount_axigen_storage”
}
7) modifica il fileset aggiungendo il backup di /mnt/axigen, ecco un esempio di fileset:
# axigen
FileSet {
Name = “axigen-fileset”
Include {
Options {
signature = MD5
compression = GZIP
onefs = no
}File = /etc
File = /boot
File = /home
File = /root
File = /opt
File = /var
File = /mnt/axigen
File = /var/opt/axigen/log
}
Exclude {
File = /var/opt
File = /var/log
File = /var/spool
File = /var/tmp
File = /var/cache
File = /var/lib/apt
File = /var/run
File = /var/lock
File = /var/mail
File = /var/games
File = /var/lib/bacula
File = /var/opt/axigen/domains
}
}
8) Infine ricarica bacula per applicare le modifiche.
# bconsole
* reload
9) esegui alcuni job di prova prima di mettere in produzione il tutto.
Davide Giunchi