Le courriel est un outil extrêmement pratique, mais qui souffre de plusieurs défauts majeurs. Par exemple, il est très facile de faire de l'usurpation d'identité (e-mail spoofing): juste en changeant les paramètres de n'importe quel lecteur courriel, vous pouvez faire croire que le courriel que vous avez envoyé vient d'une autre personne, une banque, ou autre. C'est une technique très utilisée par les pirates du dimanche pour avoir un mot de passe (en se faisant passer par exemple pour une banque et en disant que le mot de passe a été perdu) ou les spammeurs (une technique courante est d'utiliser votre propre adresse pour tenter de berner les filtres anti-spam).

XMPP/Jabber ne souffre pas de ce problème: les serveurs sont chargés de vérifier que l'émetteur d'un message est bien celui qu'il prétend être.

Or, XMPP définit un type de message, "normal", qui est très proche du courriel classique: il dispose d'un sujet et attend une réponse. Ces messages sont gérés par les clients classiques (c'est dans la norme de base), mais souvent de manière relativement basique.

Voulant gérer correctement ces messages avec SàT, je me suis dit qu'il me faudrait beaucoup trop de travail pour arriver au niveau de fonctionnalités d'un client courriel (ou MUA) correct. Aussi, je me suis dit « Pourquoi ne pas tout simplement réutiliser ces clients ? ».

Et c'est ainsi que j'ai développé un petit serveur courriel qui permet de déléguer la charge des messages de type "normal" à votre client courrier usuel (KMail, Mutt, Thunderbird, Roundcube ou que sais-je d'autre). L'idée est que la messagerie instantanée (messages de type "chat", "groupchat" - salon de discussion -, etc) reste affichée via les interfaces usuelles (Wix/Primitivus), et les messages normaux soient stockées par SàT et gérés par votre client courriel. C'est un pas vers le remplacement du courriel vers un protocole qui a de nombreux atouts.

Quelques raisons qui me font penser que XMPP/Jabber peut remplacer avantageusement (et pratiquement de manière transparente) le courriel:

  • les identifiants jabber (JID) sont similaires aux adresses courriel
  • si une passerelle courriel est disponible côté serveur, on peut utiliser aussi le réseau courriel normal, la boucle est bouclée :)
  • l'usurpation d'identité (spoofing) n'est (théoriquement) pas possible avec XMPP (les serveurs se chargent de vérifier ça)
  • Jabber n'est (pour le moment) pas touché par les messages indésirables autant que le réseau de courriels traditionnel
  • les serveurs XMPP sont souvent plus stricts à l'inscription, et il est plus difficile d'envoyer un message anonymement, pas de relai ouvert: une bonne protection contre le pourriel
  • vous pouvez configurer un compte XMPP pour ne recevoir des messages que depuis quelqu'un de connu (dans votre liste de contacts - roster list- )
  • les connections entre les serveurs Jabber sont chiffrées
  • Toutes les fonctionnalités du courriel (accusé de réception, message HTML, etc) sont soit déjà disponibles sur XMPP, soit peuvent l'être avec une extension
  • ...

De plus, il me semble peu probable qu'une adresse jabber ( ex.: errico@caserte.it ) et une adresse courriel similaire appartiennent à 2 personnes différentes. Il me semble tout à fait possible par la suite que SàT envoie automatiquement le message à la bonne adresse: d'abord tester si l'adresse XMPP existe, et dans le cas contraire envoyer via une passerelle courriel. Quitte à faire une petite bidouille syntaxique pour spécifier si on veut envoyer à une adresse Jabber ou à un serveur de courriel. L'avantage le plus évident d'une adresse courriel est sont côté standard: tout le monde ou presque en a une. Avec XMPP et ses passerelles, la transition entre messagerie courriel et Jabber est possible et quasi-transparente.

Les considérations techniques maintenant

Les serveurs utilisés sont IMAP v4 et SMTP: ce sont des protocoles que pratiquement tous les lecteurs de courriels connaissent. IMAP a l'avantage de permettre une synchronisation avec SàT (y compris l'état du message: est-ce qu-il est lu ? Est-ce qu'on y a répondu ?), et permet d'envoyer des notifications en temps réel de l'arrivée de nouveaux messages. SMTP est utilisé pour l'envoi de messages, c'est tout simplement le protocole le plus utilisé, et ça fonctionne bien. Les identifiants et mots de passes utilisés sont ceux du profil SàT à utiliser (identifiant: nom du profil, mot de passe: mot de passe du compte jabber). Les ports par défaut sont le port 10143 pour IMAP, et 10125 pour SMTP, j'ai pris soin de prendre des ports utilisables sans les droits root, et qui n'ont pas d'utilisation connue.

Les messages sont sauvés dans une boite de type Maildir , idéal pour l'archivage et l'utilisation avec IMAP. De plus, de très nombreux outils existent pour faire à peu près ce que vous voulez avec ces messages. La boîte se trouve dans votre répertoire SàT personnel: ~/.sat/[nom_du_profil]/Maildir

Pourquoi faire ça côté client (SàT) et non côté serveur XMPP ? Déjà au niveau sécurité c'est clairement un plus: le serveur IMAP est local, pas besoin d'ouvrir un nouveau port et donc une brèche éventuelle sur un serveur public plus sujet aux attaques, et une simple règle iptable (pare-feu) interdira les connexions en dehors de votre machine. Ensuite, il faudrait élaborer une XEP, et attendre qu'elle soit implémentée et répandue dans les serveurs. Et puis, j'ai pu faire ça rapidement (merci Twisted), et SàT permet de choisir d'utiliser ou pas cette fonctionnalité (grâce aux extensions), pourquoi s'en priver ? Un des buts de SàT est justement le prototypage rapide d'idées de ce genre...

L'installation

Si vous voulez essayer ça, installez la dernière version de développement, les détails sont sur le wiki.
Sur une *buntu, vous pouvez faire (en console):
sudo apt-get install python-pip python-dev mercurial
sudo pip install "hg+http://repos.goffi.org/sat/"

Évidemment, tout ceci est en développement: il n'est pas encore possible de créer un dossier avec IMAP par exemple, et y'a des tas de petites bricoles du genre qui vont s'améliorer avec le temps. Mais ça permet déjà de se donner une idée.

PS: petite précision: j'utilise parfois XMPP, parfois Jabber. XMPP est le nom du protocole utilisé par SàT (ce qui lui permet de communiquer avec d'autres logiciels similaires), et Jabber est le nom du réseau global qui utilise ce protocole.