26janv. 2010
Sauvegarde des mails avec Offlineimap
Par Simon - Web et informatique - 7 commentaires
L’ IMAP c’est bien (synchronisation des messages envoyés et des dossiers entre les différents clients mails), mais les mails restent sur le serveur. Pour se mettre à l’abri d’un problème sur le serveur (comme celui qui a provoqué la perte des mails pour certains utilisateurs de Free), il est donc nécessaire de faire des sauvegardes. Pour cela, une solution est d’utiliser Offlineimap.
Offlineimap permet de synchroniser un serveur IMAP et une boîte au format Maildir. La synchronisation signifie qu’il est possible de modifier les mails localement (avec Mutt par exemple) et les renvoyer sur le serveur. Après l’avoir installé (un coup d’apt-get, yum ou pacman), on trouve des exemples de configuration minimale et détaillé dans /usr/share/offlineimap/ pour Archlinux, /usr/share/doc/offlineimap/ pour Debian. Voici un exemple de configuration avec deux comptes (free et gmail):
[general]
accounts = free,gmail
ui = Curses.Blinkenlights # interactif et en couleur, mais bug d'affichage
#ui = TTY.TTYUI # interactif simple
#ui = Noninteractive.Basic, Noninteractive.Quiet # pour les tâches cron
[Account free]
localrepository = free_local
remoterepository = free_remote
[Repository free_local]
type = Maildir
localfolders = ~/Mail/free.fr
[Repository free_remote]
type = IMAP
# ssl = yes # pas de ssl chez Free ...
remotehost = imap.free.fr
remoteuser = xxxxxxxxx
[Account gmail]
localrepository = gmail_local
remoterepository = gmail_remote
[Repository gmail_local]
type = Maildir
localfolders = ~/Mail/gmail.com
subscribedonly = no
[Repository gmail_remote]
type = Gmail
remoteuser = xxxxxxxxxx@gmail.com
realdelete = no
folderfilter = lambda foldername: foldername not in [ '[Gmail]/All Mail',
'[Gmail]/Starred',
'[Gmail]/Spam']
Quelques remarques:
- l’interface
Curses.Blinkenlightssouffre d’un bug qui pète l’affichage du terminal quand Offlineimap rend la main. Il suffit de taperreset(même si rien ne s’affiche) ou de lancer Offlineimap avec la commandeofflineimap ; reset - il y a un type de compte exprès pour Gmail
- il est possible de mettre les mots de passe dans ce fichier de config, si on veut automatiser les backups avec une tâche cron par exemple, mais dans ce cas il vaut mieux modifier les droits du fichier pour le rendre inaccessible aux autres utilisateurs du PC (
chmod 600 .offlineimaprc). - pour Gmail, j’ai mis un filtre (
folderfilter) pour ne pas récupérer les messages avec les labels All Mail (pour éviter de télécharger les mails en double, tous mes mails ayant déjà un label), Starred et Spam. - pour vérifier que tout a bien fonctioné, on peut ouvrir une boite mail avec mutt:
mutt -f ~/Mail/gmail.com/INBOX
Commentaires
Merci, c'est superbe. Je viens de tester, et ça marche beaucoup mieux que imapsync !
Yoshh !!! ça marche :)
Débutant en serveur de mail qui cherchait une solution pour récupérer tous mes mails depuis gmail, afin de pouvoir «dé-googeler» tranquillement (sans savoir taper le bon mot clef…) me voila bien content !
Patience et le bon article sera venu jusqu'à moi (merci le planète) il aura juste fallu le remarquer parmi mes flux RSS…
Merci donc à toi pour cet article !
Cependant je ne sais pourquoi ça voulait pas avec :
[Repository gmail_remote]
type = Gmail
remoteuser = xxxxxxxxxx@gmail.com
Alors j'ai remplacé par :
[Repository Remote]
type = IMAP
remotehost = imap.gmail.com
remoteuser = xxxxxxxxxx@gmail.com
ssl = yes
content que ce post vous soit utile :-)
MaKoTo, avais-tu bien configuré le nom du "Repository" ? "gmail_remote", ou "Remote" dans ton 2ème exemple, doit correspondre à ce qui est indiqué plus haut dans "remoterepository". Au passage j'ai découvert ton blog et ton serveur maison, superbe travail !
Quand tu supprimes tes courriels sur le serveur IMAP, ça ne les supprime pas dans ton dossier OfflineImap à la prochaine synchronisation ?
Parce que si c'est le cas, il vaut mieux mettre en plus un système de backup de ce dossier pour ne pas perdre ses courriels.
@Yannick: oui bien sûr, les mails supprimés sur le serveur seront supprimés lors de la synchronisation, donc il faut faire une archive du dossier ~/Mail et/ou le sauvegarder ailleurs (dans mon cas le dossier Mail est sauvegardé via mon script de backup du /home sur un dd externe).
@Simon :
Oui Oui, les noms correspondaient, je l'ai changé par la suite pour faire le truc à ma sauce et j'ai pas fait gaffe à l'adapter en le collant ici… j'aurais donc dû écrire :
[Repository gmail_remote]
type = IMAP
remotehost = imap.gmail.com
remoteuser = xxxxxxxxxx@gmail.com
ssl = yes
Merci ^^
Salut,
merci pour l'info je vais essayer de mettre cela en place pour sauvegarder un compte Yahoo!. Cela nécessite la modification du code, expliquée pour mutt et thunderbird ici. Je vais essayer de faire de même pour offlineimap ce qui me permettra d'effectuer la sauvegarde sur un serveur distant.
Pour l'instant je sauve le profil de mon thunderbird custom dans un dépôt git, en espérant qu'il n'explose pas trop vite en taille.