Sunday, June 13, 2010

Récuperation de Mails depuis un serveur IMAP avec OpenSSL

Parce que souvent le mail est utilisé pour recevoir, infos, alertes et autres indicateurs formatés, nos boites sont truffées de mines d'informations.

Malheureusement ces informations ne sont que peu exploitables de maniere agrégée, car éparses dans X Mails réceptionnés a dates diverses.

Pour les heureux utilisateurs de GMail, il est certes possible de récupérer un feed Atom des Mails (http://mail.google.com/mail/feed/atom), mais au moins 2 limitations sont rédhibitoires :
  • Ne sont affichés que les Mails non lus
  • Ne sont affichés que les premiers caracteres du corps du message
Voici un moyen de récupérer par script une liste de Mails sélectionnés :

Pré req :
  • OpenSSL installé sur le PC client
  • Serveur de Mails compatible IMAP
Légende : En rouge les params a adapter

#Lance la connexion vers le serveur IMAP
openssl s_client -host imap.gmail.com -port 993 -crlf

#Ouverture de session avec son compte
. login MonEMail@MonDomaine.fr MonMotDePasse

#Selection du Label (GMail) ou du Repertoire
. Select "MonLabel_ou_MonRep"

#Recup de l'objet et du texte de tous les Mails
. fetch 1:* (body[header.fields (subject)] body[text])

Si vous souhaitez recuperer l'output dans un fichier (pour le parser en suite via un script AWK ou autre grep/sed, il suffit de lancer la premiere commande avec l'adaptation suivante :

#Lance la connexion vers le serveur IMAP et rediriger la sortie vers un fichier en plus de l'ecran
openssl s_client -host imap.gmail.com -port 993 -crlf | tee -a ./monfichier.out

Il est certainement possible de lancer tout ceci depuis un script BASH, de telle sorte a automatiser la fetching des nouveaux mails via cron ou autre, mais apres quelques minutes (longues minutes) de tâtonnements, je n'y suis toujours pas arrivé;

Si vous savez/trouvez, n'hésitez pas a laisser un commentaire (J'ai bien dit BASH et pas perl, python ou autre magnifique langage au quel je suis malheureusement hermétique)

No comments: