[TUTORIEL] Sauvegarde email

Toutes les questions concernant la sauvegarde des données non spécifique à une distribution particulière.

[TUTORIEL] Sauvegarde email

Message par jdh » 24 Déc 2011 12:15

Comment réaliser une sauvegarde d'email ?

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
On créé un fichier 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
On créé un fichier backup_transport (et on le compile avec postmap)
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
On créé un fichier 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.
L'intelligence artificielle n'est rien à côté de la stupidité naturelle.
jdh
 
Message(s) : 731
Inscription : 02 Nov 2011 00:36
Localisation : Nantes - Angers

Retour vers Sauvegardes

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 1 invité

cron