getmail est un script en python écrit par Charles Cazabon qui permet de rapatrier les courriers d’une ou plusieurs boites aux lettres d’une façon simple (mais efficace). Selon les mots de son auteur, getmail est conçu pour être sécurisé, flexible, fiable et facile d’utilisation. Il est un remplaçant potentiel de fetchmail.
Ce petit tutoriel est fait sur une distribution CentOS et c’est la procèdure de sauvegarde que j’utilise pour mon compte Gmail (Google Apps). La boite aux lettres de destination est de type Maildir, c’est-à-dire que chaque courrier est dans un fichier unique contrairement à Mbox qui place tous les courriers dans un fichier unique.
Installation de getmail
Choisissez votre gestionnaire de paquets préféré, pour les habitués des distributions à base de Red Hat, ce sera yum :
# yum install getmail
Création des répertoires
Le script ne crée pas par lui-même les répertoires et fichiers nécessaires au bon fonctionnement de getmail, il faut donc les ajouter à la main. On commence par l’arborescence de type Maildir qui accueillera les emails :
$ mkdir -p ~/Maildir/{new,tmp,cur}
Je ne m’attarde pas sur les trois répertoires cur, tmp et new, c’est l’arborescence de fonctionnement de Maildir. Ensuite, il faut créer le répertoire qui contiendra le fichier de configuration et les logs de getmail :
$ mkdir ~/.getmail
$ vim ~/.getmail/gmailrc
$ chmod -R 700 ~/.getmail
Configuration
Voici mon fichier de configuration pour sauvegarder un compte Google Apps en utilisant IMAP :
[retriever]
type = SimpleIMAPSSLRetriever
server = imap.gmail.com
mailboxes = ("[Gmail]/All Mail",)
username = nom@domaine.net
password = mot_de_passe
[destination]
type = Maildir
path = ~/Maildir/
[options]
# Mode verbeux
# 0 : n'affiche que les warnings et les erreurs
# 1 : affiche les notifications de récupération et de suppression de messages
# 2 : toutes les actions
verbose = 2
message_log = ~/.getmail/gmail.log
# ne récupére que les nouveaux messages
# idéal pour de la sauvegarde régulière
read_all = false
# n'altère pas les messages
delivered_to = false
received = false
Lancement du script
$ getmail -r ~/.getmail/gmailrc
Le script commence le rapatriement des messages et les place dans l’arborescence Maildir.
Note : Google n’autorise le transfert que d’un nombre limité de messages à la fois, si votre boite aux lettres est assez importante il faut relancer cette commande plusieurs fois, car seuls les nouveaux messages sont récupérés, ou alors le faire de façon automatisée (voir ci-dessous).
Automatisation
Afin d’automatiser cette sauvegarde, un job peut être ajouté dans le cron. L’option -q rend l’opération silentieuse, sauf pour les erreurs :
# Le script est lancé à la 7ème minute de chaque heure ^.^
7 * * * * /usr/bin/getmail -q -r /home/fabien/.getmail/getmailrc