Solution de serveur de courrier électronique auto-hébergé (partie 4): Lire des flux RSS/Atom avec feed2imap

Maintenant que nous disposons d'un vrai serveur IMAP et d'un serveur SMTP, nous pouvons utiliser le courrier électronique pour lire des flux RSS. Oui, utiliser le système du courrier électronique pour cela peut sembler farfelu... Mais après réflexion, pas tant que ça !

En effet, l'intérêt des flux Atom/RSS est de faire venir jusqu'à vous des informations que vous avez choisies de lire (parce que vous y êtes "abonné"). Néanmoins, naviguer dans ces flux peut être complexe et long. Si vous utilisez un navigateur Web, même si ce dernier propose des mécanismes de consultation, il ne sera pas facile de voir ce qui est nouveau, ce qui a déjà été lu. De même, vous ne pourrez pas conserver les articles qui vous intéressent, à moins de le faire à la main ce qui est fastidieux. C'est pour cela que des clients dédiés ont été développés, comme Liferea.

Ces derniers proposent de nombreuses fonctionnalités telles que:

  • le tri
  • la conservation de l'information
  • la recherche dans les flux lus
  • une gestion facilitée des abonnements,
  • etc...

Toutefois, un client lourd a un vrai problème: il n'est pas accessible à distance. En revanche, en utilisant un mécanisme qui bascule des flux RSS sous forme de courrier électronique, on dispose de toute la souplesse et l'accessibilité des protocoles d'envoi et de réception. Ainsi, avec un simple client email (qui peut être un webmail), vous pouvez lire, conserver, trier, renvoyer le contenu de ces flux quasiment de n'importe où sur Internet, le tout avec un seul outil. C'est un vrai avantage. Tout ce qu'il nous faut, c'est un logiciel capable de lire des flux RSS et de les injecter dans le système de courrier électronique.

Feed2imap est un programme développé en Ruby qui se charge de récupérer des flux RSS/ATOM et de les envoyer vers un dossier IMAP ou d'écrire directement dans un répertoire Maildir.

J'ai un peu hésité avant de l'installer. En effet, mon serveur n'a pas beaucoup d'espace disque et je dois mesurer chaque paquet qui est installé. De fait, n'ayant pas d'autres applications Ruby, l'installation de feed2imap va consommer plus d'espace que si j'avais utilisé un paquet du même genre: rss2email. Ce dernier est codé en Python mais il avait l'inconvénient majeur de ne supporter que l'envoi par SMTP des courriels, ce qui, sur une même machine est une perte de temps sachant que tout est stocké en local. Enfin, rss2email n'est pas franchement à jour dans l'archive Debian (même si certains ont déjà fait le boulot).

Revenons à feed2imap... Après inspection, l'installation de feed2imap et de toutes ses dépendances occupe moins de 10Mo. C'est raisonnable ! aptitude install feed2imap permet de l'installer en deux temps trois mouvements.

En terme de configuration, il faut éditer un fichier dans son répertoire home: \~/.feed2imaprc. Il existe une documentation bien détaillée de ce fichier de configuration dans /usr/share/doc/feed2imap/examples/feed2imaprc. Voici un exemple de ce fichier avec une cible en maildir:

feeds:
- name: Linuxfr
  url: https://linuxfr.org/news.atom
  target: maildir:///home/toto/Maildir/.Feeds.Linuxfr/
- name: Standblog
  url: http://standblog.org/blog/feed/rss2
  target: maildir:///home/toto/Maildir/.Feeds.Standblog/

Pour vérifier que cela fonctionne, vous devez lancer feed2imap dans un shell du serveur.

L'intérêt de notre maildir est de ne pas avoir à utiliser de serveur IMAP pour envoyer les flux. Tout se passe au niveau des fichiers locaux, rien ne part sur le réseau ou sur l'interface loopback. Du coup, on peut penser que c'est plus efficace. De plus, lorsque le répertoire n'existe pas, feed2imap se charge de le créer avant d'y injecter les flux. Inutile de passer du temps à les créer.

Enfin, s'il faut que je me connecte sur le serveur pour lancer feed2imap à chaque fois, ça ne va pas le faire. Il faut donc automatiser ce lancement. Deux fois par jour me semble une bonne fréquence, sauf le week-end. Pour ça, on va utiliser une crontab (utilisateur, ça suffit):

SHELL=/bin/bash
# Lancement de feed2imap
0 9,18 * * 1-5       /usr/bin/feed2imap >/dev/null 2>&1

Maintenant, pour consulter ces flux, vous n'avez plus qu'à utiliser votre MUA préférré et deux fois par jour, vous aurez des news fraîches directement dans vos dossiers IMAP. Mieux encore, si vous mettez en place un webmail, vous pourrez consulter ces flux depuis n'importe quel navigateur web... ce sera pour une prochaine fois !

Dans le prochain article nous parlerons de la configuration d'Exim4 pour permettre l'envoi SMTP depuis un client MUA situé ailleurs que sur le serveur.