Mais "au cas où" quoi d'abord ?
Benh, au cas où vous auriez changé de crèmerie comme j'expliquais comment le faire simplement avec ImapCopy (voir
ce billet), mais qu'en plus de cela une petite sauvegarde locale ne ferait pas de mal.
C'est en particulier utile si votre nouvel hébergement mél ne permet pas de stocker tout votre historique (politique de quotas, et oui, le gratuit a toujours un prix qu'on paye à un moment ou à un autre !) et que vous avez du supprimer les plus grosses pièces lors de la migration...
Bref, attaquons le dur.
Get, get, get ... GetMail !
Il permet la récupération des méls depuis un ou plusieurs comptes quelquesoit le serveur distant, et quelle que soit le protocole : POP3, IMAP, et bien entendu le tout avec ou sans SSL ... même pas besoin de faire de jolis tunnels :)
Le paramétrage est carrément puissant, et en plus, ce petit programme a de la mémoire : il peut se souvenir ce qui a été sauvegardé, et recharger juste les nouveaux messages. Il peut aussi combiner filtrage, classification, ... De la balle atomique je vous dis ! En plus de ça, il peut soit déposer les méls récupérer dans un répertoire (maildir) ou dans une boite locale (mboxrd)... voir les deux !
Bref, installons cette "tuerie" :
$ sudo aptitude install getmail4
Les dépendances vont être tirées, en particulier vers python (c'est bon, mangez en).
Pour les pressés
Où ?
Créez le répertoire dans lequel vous allez sauvegarder vos méls, ainsi que 3 sous répertoires utilisés pour le transfert :
$ mkdir ~/Documents/mesmails/
$ cd ~/Documents/mesmails/$ mkdir cur new tmp
Quoi ?
Créer un fichier dans ~/.getmail (répertoire à créer) que vous nommerez comme bon vous semble, par exemple ~/.getmail/mylogin.
/!\ Ne pas oublier de faire un :
Bah wé, le fichier de config va contenir votre mot de passe de boite aux lettres.
Dans l'exemple qui suit on cherche à sauvegarder le répertoire de "Tous les messages" de la boite dont le login est "mylogin". C'est ça
Palace Google, ce label "custom" est assez utile pour rapidement sauvegarder tous les messages dans un seul répertoire :)
Concernant le type de destination (aka, comment ça va être stocké une fois récupéré), ça dépends ce qu'on veut faire. Dans mon cas, Maildir n'est pas forcément le plus à propos et j'aurais tendance à préférer le format MBox.
Nota MBox : c'est un fichier contenant tous les méls, importable avec un client de messagerie. Du moins avec Thunderbird, ce fichier mbox est "importable" dans le "Local Folder" avec l'extension de kaosmos (aussi éditeur de l'excellent
MoreFunctionsForAddressBook) que vous pourrez retrouver
ici.
Si vous voulez juger plus tard, vous pouvez faire aussi les deux :) voir section plus bas "version retenue".
En attendant, voici un exemple pour une sauvegarde "plain text" :
[retriever]
type = SimpleIMAPSSLRetrieverserver = imap.gmail.com
mailboxes = ("[Gmail]/Tous les messages")
username = mylogin@gmail.com
password = mypassw0rd
[destination]type = Maildir
path = ~/Documents/mesmails/
read_all = true
# do not alter messages
delivered_to = false
received = false
Ces deux derniers paramètres sont particulièrement essentiels, ils permettent de ne pas altérer les messages récupérés.
Maintenant !
Ceci étant fait, allez hop, on screen tout ça et on balance ;
$ getmail -rmylogin
[...]
msg 108/13619 (3283 bytes) msgid 123456789/12345 from <myx@some.where> delivered to MultiDestination (Mboxrd ~/Documents/mesmails.mbox, Maildir ~/Documents/mesmails/)
[...]
et voilà !
Pour les précis, sharp, pointus (c)
Options
La doc est plutôt bien foutue et claire <troll>pour de l'open source</troll>.
Grosso modo, il faut retenir :
- retriever > type : Simple(POP3|IMAP)(SSL)Retriever
- destination > type :
- Maildir : messages délivrés au format qmail, fichiers textes "à plat"
- Mboxrd : format fichier mboxrd
- Multidestination : exemple ci-dessous "version retenue"
- MultiSorter : utile pour se prendre la tête avec les regexp ;-) et ne récupérer que certains messages , exemple RTFM
# Deliver mail matching jeff@example.net to ~jeff/Maildir/
# Deliver mail matching alice@anything to ~alice/inbox
# Deliver all other mail to ~bob/Maildir/
[destination]
type = MultiSorter
default = [bob-default]
locals = (
('jeff@example.net', '[jeff]'),
('alice@', '[alice]')
)
[jeff]
type = Maildir
path = ~jeff/Maildir/
user = jeff
[alice]
type = Mboxrd
path = ~alice/inbox
user = alice
[bob-default]
type = Maildir
path = ~bob/Maildir/
user = bob
- et j'en passe et des meilleures, en particulier sur les filtres qui permettent de passer le mél à la moulinette d'un programme externe, et le tagger (Filter_classifier) selon le code retour voire carrément le modifier (Filter_external)
Ma version retenue !
Voila ma conf pour mon backup T0 post migration :)
/!\ pour la destination MBox, il suffit de créer un fichier vide (0 octets)
$ touch ~/Documents/mails/cacmoi.mbox
Je disais donc, la conf :
[retriever]
type = SimpleIMAPSSLRetriever
server = imap.gmail.com
mailboxes = ("[Gmail]/Tous les messages",)
username = cacmoi@gmail.com
password = 0wn3d
[destination]
type = MultiDestination
destinations = ('[versmbox]', '[versmaildir]')
[versmbox]
type = Mboxrd
path = ~/Documents/mails/cacmoi.mbox
[versmaildir]
type = Maildir
path = ~/Documents/mails/cacmoi/
[options]
verbose = 2
message_log = ~/.getmail/cacmoi.log
# re-download ALL messages every time!
read_all = true
# do not alter messages
delivered_to = false
received = false