Artisan Numérique

/système/réseau/imap/rss/ Des flux facilement accessibles grâce à feed2imap

Lorsque l'on multiplie les points d'accès à nos informations personnelles (courriels, fichiers, agenda, flux RSS, Favoris, etc..) se pose rapidement le problème de la synchronisation. Alors aujourd'hui, beaucoup me diront "facile, utilise google-tagazok et ta vie sera plus simple". Fort heureusement je ne cherche pas la simplicité dans la mise en œuvre, celle de l'usage me suffisant largement. Et je préférais toujours une solution qui ne fasse pas fuiter mes données sur un réseau dont je ne sais rien, à la mode de cloud-bidulo qui pour moi représente un réel danger pour la vie privée.

Dans le cas des flux RSS, j'ai testé pas mal d'approches, toutes aussi insatisfaisante les unes que les autres. Le client lourd tel que lifereal nécessite des synchronisations compliquées entre les postes, les solutions web ne fonctionnent pas correctement sur les terminaux mobiles. Bref, le souk classique.

Puis je me suis demandé s'il n'y avait pas moyen d'injecter des flux RSS dans un serveur IMAP. Et bien évidement cela existe grâce à l'outil feed2imap. Il y en d'autres tels que rss2imap ou encore rss2email. Mais feed2imap a le mérite d'être directement présent dans les dépôts des distributions *deb ce qui n'est pas le cas de rss2imap. Enfin rss2email permet avant tout de re-router les flux vers des adresses courriels, ce qui n'est pas exactement ce que je recherchais.

Mis en œuvre

feed2imap n'est même pas un démon, c'est un simple utilitaire qui va aller lire les flux paramétrés dans un fichier ~/.feed2imaprc d'un utilisateur et les injecter sur un ou plusieurs dossiers IMAP. La récurrence de l'opération est assurée simplement par une tâche CRON, par exemple toutes les 1/2 heures.

Sur une distribution *deb, feed2imap est donc disponible dans les dépôts standards et installable facilement par un sudo apt-get install feed2imap. Ceci fait, il ne reste plus qu'à ce frapper le fichier ~/.feed2imaprc dont la syntaxe est un peu ésotérique, héritée j'imagine de certaines conventions de code Ruby qui est le langage utilisé pour cet outil. D'abord, au début du fichier, nous allons ajouter les coordonnées du serveur IMAP :

target-refix: &target "imap://gaston:un_gros_secret@serveur_imap/Flux%20RSS/"

J'avais prévenu, syntaxe ésotérique, en tout cas ésotérique pour qui comme moi n'a jamais touché à Ruby. Nous définissons ici l'URL de base du serveur IMAP avec un protocole (imap://), un identifiant (gaston), un mot de passe (un_gros_secret), une adresse (serveur_imap) et le début du chemin dans les dossier.

Cette URL sera ajoutée au début de toutes les URL IMAP que nous allons définir pour chaque flux. A voir donc comme une sorte de macro. Pour ce qui est du chemin, le %20 indique un espace (faites man ascii pour plus d'informations). La base de nos flux sera donc le dossier "/Flux RSS/" (notez le slash final).

Pour coller un peux à l'actualité anxiogène de ces dernières semaines, nous allons nous abonner au flux de Kyodo News, une chaîne d'information Japonaise qui donne des nouvelles en temps réel sur la catastrophe de Fukushima :

feeds:
- name : Kyodo News
url: http://english.kyodonews.jp/rss/news.xml
target: [ *target, 'Nucl&AOk-aire/Kyodo%20News' ]

Attention à bien respecter l'indentation!!. Le mot clef feeds: marque le début des définitions de flux. A n'ajouter qu'une fois donc. Ensuite nous avons le nom du flux qui doit juste être unique (le tiret n'est pas une erreur !!). Suit l'URL du flux qui elle est totalement classique. J'ai testé de l'ATOM comme du RSS, tout semble passer.

Enfin nous avons target qui continue sur le chapitre des notations exotiques. La signification de cette ligne est en gros "prend le préfixe que j'ai donné plus haut et colle le avant ce bout d'URL". Notez le caractère "é" noté "&AOk-" dans la pure haute langue IMAP.

Une fois le fichier sauvegardé, il ne nous reste plus qu'à changer ses droits pour plus de sécurité et à tester :

$chmod 600 ~/.feed2imaprc
$feed2imap
préparation et lancement de l'importation

Si l'outil n'affiche rien et vous rend la main peu de temps après, c'est bon signe. En gros il ne cause qu'en cas de problème. Vous pouvez du coup vous armer de votre client IMAP pour voir si les dossiers ont bien été créés et les flux proprement importés. Bonne déprime ;-)

Pour répéter l'opération de manière automatique il suffit d'utiliser ce bon vieux CRON en définissant une tâche utilisateur (c'est mieux qu'une tâche système puisque la configuration est propre à chaque utilisateur). Pour cela lancez le classique crontab -e et ajouter par exemple la ligne suivante :

*/30 * * * * /usr/bin/feed2imap > /dev/null

Et voilà, c'est parti. Vous devriez pouvoir ajouter tous vos flux de la même manière. Notez qu'un outil, feed2imap-opmlimport, est fourni en standard pour permettre un import massif de flux à partir d'un fichier OPML. Le résultat devra cependant être retravaillé, notamment concernant les dossiers cible.

Conclusion

J'utilise cette solution depuis quelque temps déjà et pour l'instant le résultat est sans défaut. L'ajout de nouveaux flux est sans doute un peu plus pénible qu'avec un client RSS spécialisé mais le bénéfice de l'IMAP se fait sentir très rapidement. Vous pouvez lire les flux de n'importe quel client IMAP sur n'importe quelle machine (portable, mobile, poste de travail, etc.) avec bien évidement une gestion centralisée des nouvelles déjà lues. Un bénéfice plus qu’appréciable surtout que l'on n'ajoute pas des flux tous les 4 matins.