Contexte :
Une petite pme (~15 boites mail) avec un serveur de mail basé sur postfix (mail) et dovecot (stockage imap).
Le serveur est une VM qui tourne sous l'environnement Proxmox (OpenVZ/KVM).
Les boites sont créées d'abord chez un hébergeur, et sur le serveur interne on créé les boites identiques.
Le serveur de mail utilisent fetchmail pour alimenter les boites (internes du serveur) depuis les boites chez l'hébergeur.
Volumétrie : ~25 G (soit 1,6 G par boites en moyenne)
Idées / Objections :
* Sauvegarder le serveur :
Sous Proxmox, on peut faire un stop serveur puis un vzdump, restera à copier sur disque (usb) l'image ainsi créé.
+ : rapide (si VM stoppée),
- : adapté à rupture totale, restauration en un tout et à la date de sauvegarde, procédure dépendante de l'outil de virtualisation
* Copie arborescence stockage :
La racine de stockage IMAP est connu (/home/vmail dans mon cas).
Il suffit de faire un rsync de cette arborescence sur un disque ou un espace de stockage.
+ : très rapide (sauf la première fois), remontée d'un utilisateur possible simplement
- : pensez à arrêter fetchmail !, peu adapté en panne totale (remontée d'un serveur puis restauration arborescence)
* Deuxième serveur + synchro imap :
On peut créer un deuxième serveur de mail (sur le même serveur ou un autre).
Il suffit ensuite de synchroniser ensuite les imap avec un outil tel imapsync (debian 5)
+ : rapidité de reprise (chg @ip du second serveur),
- : synchro imap lente, pensez à arrêter fetchmail !
* Deuxième serveur + copie automatique de mail :
A partir d'une deuxième serveur, une config astucieuse de Postfix permet une copie instantanée des mails !
+ : sauvegarde continue, rapidité de reprise (chg @ip du second serveur)
- : nécessite de faire des synchro imap de temps en temps
Détail de l'astuce de copie de mail :
Cette astuce est basé sur postfix.
L'idée est d'utiliser la fonction de bcc (blind copy carbon = copie invisible) : chaque mail envoyé à martin@domaine.com sera copié vers martin@domaine.backup.
Ensuite on configure un "transport" spécifique vers le 2ième serveur, lequel n'a plus qu'à ré-écrire l'adresse et stocker le mail.
Serveur à backuper :
1- blind copy carbon
On ajoute à main.cf la ligne
- Code : Tout sélectionner
recipient_bcc_maps = pcre:/etc/postfix/backup_bcc.pcre
- Code : Tout sélectionner
/^(.*)@domaine\.com$/ $1@domaine.backup
2- transport
On ajoute à main.cf la ligne
- Code : Tout sélectionner
transport_maps = hash:/etc/postfix/backup_transport
- Code : Tout sélectionner
domaine.backup smtp:[@ip serveur backup]
3- reload
On redémarre postfix par "postfix reload".
Serveur de backup :
0- déclaration des boites
On veille à déclarer les mêmes boites mail que le serveur à backuper !
1- réception des mails
On valide le domaine par la ligne dans main.cf
- Code : Tout sélectionner
mydestination = domaine.backup
2- ré-écriture des adresses
On ajoute à main.cf la ligne
- Code : Tout sélectionner
canonical_maps = pcre:/etc/postfix/backup_rewrite.pcre
- Code : Tout sélectionner
/^(.*)@domaine\.backup$/ $1@domaine.com
3- reload
On redémarre postfix par "postfix reload".
Attention, on commence d'abord par la config du serveur de backup.
Et on vérifie le fonctionnement par des "tail -f /var/log/mail.log" sur les 2 serveurs.
Il est clair qu'il faut de temps en temps faire une "synchro imap" car les utilisateurs déplacent ou supprime des mails.
Mais l'intérêt est la sauvegarde continue et la facilité de reprise presqu'immédiate.