mardi 11 février 2014

Sauvegarder ses méls "au cas où"

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 !

Getmail est un super outil :)
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 :
$ chmod 700 ~/.getmail

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


Aucun commentaire:

Enregistrer un commentaire