Affichage des articles dont le libellé est mail. Afficher tous les articles
Affichage des articles dont le libellé est mail. Afficher tous les articles

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


dimanche 9 février 2014

Migrer ses méls avec Imapcopy !


Voila, il est l'heure de tourner la page. Prism, snowden, toussa, vous ont poussé à changer votre train-train et tourner la page. Vous avez déjà votre serveur de fichiers, votre owncloud, bref votre vrai cloud privé ? Reste les méls. Vous changez pour un autre serveur mél ? ça tombe bien moi aussi !

Comment faire ? se palucher la copie des méls avec thunderbird ? Non, ça c'est pour les esclaves : risques d'oublis, de désynchro, de plantage, bref, c'est pas le bon outil. Le bon outil, c'est imapcopy !

Mise en œuvre de Imapcopy

 

Facile, apt est ton ami !

sudo apt-get install imapcopy

Créez le fichier appelé imapcopy.cfg dans votre home.
Récupérez l'exemple ici : /usr/share/doc/imapcopy/examples/ImapCopy.cfg.
Paramétrez le à votre sauce : source, destination, comptes ; exemple :

SourceServer imap.foo.tld
SourcePort 143
DestServer imap.bar.tld
DestPort 143
# SourceUser SourcePassword DestinationUser DestinationPassword 
Copy    "user@foo.tld"         "nsa"       "user@bar.tld"           "sn0wd3n"

Votre serveur utilise du SSL ? C'est une bonne chose ! 143 çaïmal !
Mais imapcopy ne sait pas bosser avec SSL/TLS. Aucun problème, un petit tunnel SSL fera l'affaire !

Au cas où vous ne l'auriez pas :

apt-get install stunnel

Et hop on va se créer deux petits tunnels avec l'outil par excellence des adminsys, screen !

$ screen

et "dans ton screen"  DTS(c) :

$ stunnel -c -f -d 1143 -r imap.googlemail.com:993 -P
2014.02.09 10:13:12 LOG5[17648:140167730644800]: stunnel 4.53 on x86_64-pc-linux-gnu platform
2014.02.09 10:13:12 LOG5[17648:140167730644800]: Compiled with OpenSSL 1.0.1c 10 May 2012
2014.02.09 10:13:12 LOG5[17648:140167730644800]: Running  with OpenSSL 1.0.1e 11 Feb 2013
2014.02.09 10:13:12 LOG5[17648:140167730644800]: Update OpenSSL shared libraries or rebuild stunnel
2014.02.09 10:13:12 LOG5[17648:140167730644800]: Threading:PTHREAD SSL:+ENGINE+OCSP Auth:LIBWRAP Sockets:POLL+IPv6
2014.02.09 10:13:12 LOG5[17648:140167730644800]: Reading configuration from descriptor 3
2014.02.09 10:13:12 LOG5[17648:140167730644800]: Configuration successful


Ctrl + a S pour splitter horizontalement l'écran
Ctrl + tab pour changer de fenetre
Ctrl + a c pour créer une nouvelle fenêtre

$ stunnel -c -f -d 1144 -r imap.bar.tld:993 -P
2014.02.09 10:13:58 LOG5[17664:140534229604160]: stunnel 4.53 on x86_64-pc-linux-gnu platform
2014.02.09 10:13:58 LOG5[17664:140534229604160]: Compiled with OpenSSL 1.0.1c 10 May 2012
2014.02.09 10:13:58 LOG5[17664:140534229604160]: Running  with OpenSSL 1.0.1e 11 Feb 2013
2014.02.09 10:13:58 LOG5[17664:140534229604160]: Update OpenSSL shared libraries or rebuild stunnel
2014.02.09 10:13:58 LOG5[17664:140534229604160]: Threading:PTHREAD SSL:+ENGINE+OCSP Auth:LIBWRAP Sockets:POLL+IPv6
2014.02.09 10:13:58 LOG5[17664:140534229604160]: Reading configuration from descriptor 3
2014.02.09 10:13:58 LOG5[17664:140534229604160]: Configuration successful


On modifie alors ImapCopy.cfg pour utiliser :

SourceServer 127.0.0.1
SourcePort 1143
et
DestServer 127.0.0.1
DestPort 1144

Test !

 

$ imapcopy -i
[...]
Login on sourceserver as user@gmail.com OK
Login on destinationserver as user@bar.tld OK
Getting folderlist on sourceserver OK, found 12 folder
Sourceserver:
=============
Server-Info          : Gimap ready for requests from my.ip.ad.dr myid.nb
Capabilities         : IMAP4REV1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE ENABLE MOVE CONDSTORE ESEARCH
Personal Namespace   :
Folder sperator      : /
other Users Namespace:
Public Namespace     :
Folders to copy      : ALL
Skip this folders    : NONE

Destinationserver:
==================
Server-Info          : [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE AUTH=PLAIN] Dovecot ready.
Capabilities         : IMAP4REV1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS QUOTA
Personal Namespace   :
Folder sperator      : .
other Users Namespace:
Public Namespace     :
 


Pour les autres options, imapcopy -h est ton ami !

Et c'est partiiiii

 

Comment ? Benh tout simplement !

$ imapcopy -l

IMAPCopy 1.04 - 2009/07/18 [compiled with FreePascal]
written 2001-2009 by Armin Diehl
Running on Linux

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
MA 02110-1301, USA.
---------------------------------------------------------------------------
Login on sourceserver as user@gmail.com OK
Login on destinationserver as user@bar.tld OK
Getting folderlist on sourceserver OK, found 12 folder
Getting List of messages in "INBOX" OK, 1234 Messages found
Processing Folder INBOX
reading message 1753


et voilà c'est parti !


Perfectible, sans doute un peu moche, mais ça fait le taff :)