A+ sous l’bus Google – Partie 3

Et voici la troisième partie de ce tutoriel ! Aujourd’hui on va parler de XMPP et améliorer notre spamassassin :)

XMPP sans ta mère

Partir de Google, cela signifie partir aussi de Gtalk et surtout d’Hangout.

Comme annoncé lors de la sortie de Hangout, celui-ci ne supportera plus XMPP… Encore une preuve du renfermement de ces géants du web… un repli sur soit même entraînant ses utilisateurs dans de bien belles prisons dorées (même remarque pour Microsoft – Skype, Facebook, Twitter, …).
Utilisons donc un protocole respectueux des principes d’Internet : XMPP.

XMPP, c’est un peu le « SMTP » de la messagerie instantanée. C’est un protocole décentralisé et son fonctionnement ressemblent à celui du mail.
Un client XMPP ne va pas directement parler à un autre client, il va passer par son serveur d’appartenance, qui va : soit établir une session sur le serveur distant et transmettre le message, soit transmettre le message au client s’il appartient au même serveur.

Il y a donc deux types de connexion possible en XMPP : c2s (client to serveur) et s2s (server to server).

Comme une adresse XMPP est de la même forme qu’une adresse mail, il est possible de n’utiliser qu’une seule et même adresse pour les protocoles XMPP et SMTP (tout comme les adresses en @gmail, @hotmail, etc)… On ne va pas de gêner² :)

Ejabberd

Ejabberd, c’est un serveur XMPP. Il est plutôt facile à configurer et – bonne nouvelle – un tuto existe (backup ici) pour l’intégrer avec le LDAP d’IredMail.

Suivez-le, il est assez simple, et tout est bien expliqué, même pour l’éventuel séance de debugging.

Une fois que votre Ejabberd est prêt, vous pouvez commander à l’utiliser avec n’importe quel client compatible XMPP tel que Pidgin ou Xabber sur Android.

DNS

Eh oui, une fois n’est pas coutume, il va falloir faire un peu de configuration DNS.

Vous avez vu dans la partie 2, les records MX spécifiques au mail ainsi que les records TXT (pour le SPF ou le DKIM). Ici on va avoir besoin de records SRV pour annoncer votre serveur XMPP ainsi que ses ports d’écoute. XMPP comporte deux types de connections : C2S (Client to Client) et S2S (Server to Server), il va donc falloir deux records, la nomenclature est la suivante :

_service._proto.name TTL class SRV priority weight port target

Pas d’affolement ça va bien se passer, décomposons tranquillement :)

  • _service => défini le type de connection (S2S ou C2S)
  • _proto => tcp ou udp
  • name => votre domaine XMPP
  • TTL class SRV priority => ici rien de nouveau par rapport à un record « classique »
  • weight => permet d’ajouter un poids entre record avec une priorité égale (pourquoi pas..)
  • port => le port d’écoute de votre serveur correspondant au type de connexion
  • target => soit l’IP, soit le DNS de votre serveur XMPP

Voilà, rien de méchant. Pour un exemple pratique voici la configuration chez roflcopter.fr :


 

Plus d’info sur la configuration DNS spécifique à XMPP ici.

Jappix

Un client lourd c’est pratique sur son PC perso, par contre quand on est en déplacement ou que l’on a pas son PC sous la main, un client web peut dépanner.

Le client web XMPP le plus abouti à ce jour est Jappix ! Il propose une belle interface, il est plutôt réactif et facile à mettre en place. Vous pouvez le tester ici : https://jappix.com/ Si vous voulez le tester avec votre domaine, assurez vous que vous avez bien suivi la partie sur les DNS et que la configuration s’est bien propagée.

Il est possible (et même recommandé) d’en installer une instance chez vous. La doc d’installation est plutôt complète : https://github.com/jappix/jappix/wiki Vous retrouverez dans les différents points la configuration à appliquer sur votre serveur ejabberd.

 

Et voilà ! Vous avez maintenant de quoi chatter avec vos amis ;)

 

Enlarge your spamassassin

Si vous avez commencé à utiliser votre nouvelle messagerie et rendu votre mail plus ou moins publique un riche héritier africain a déjà dû vous contacter :)
Pour peu que ce soit bien écrit (aussi bien au niveau du contenu qu’au niveau du contenant), et que le mail utilisé ne soit pas encore publié dans une myriade de blacklist votre spamassassin n’y aura vu que du feu ! Résultat, le mail tombe comme un cheveu dans votre Inbox.

De rage, vous vous empressez de classer ce vilain mail dans le dossier Spam, en espérant que ça lui serve de leçon ! Le lendemain : rebelote ! Le margoulin réitère et son mail trône dans votre belle Inbox…
Mais il n’apprend donc jamais rien ce spamassasin ?
Eh bien non ! Un mail classé comme spam, n’aura que seul effet de le classer dans le dossier « spam ». Spamassassin n’en saura jamais rien et n’apprendra pas de ses erreurs…

Il existe cependant une solution : les filtres bayésiens. Grace à cela, spamassassin va se baser sur des « tokens », une occurrence de mots ou de courtes phrases identifiés comme pouvant faire parti du contenu d’un spam.

Et double cerises sur le gâteau, il existe un plugin pour Roundcube qui automatise l’apprentissage quand on classe un mail comme spam ET un tuto (backup ici) pour le mettre en place sur Iredmail !

Petit conseil, une fois le tuto suivi et l’apprentissage validé (voir fin du tuto), passez à la moulinette vos anciens mails de spam via la commande suivante :


Les filtres bayésiens de reposent essentiellement sur des probas. Plus vous les nourrirez et plus ils seront efficace ! De plus, la base est partagée, donc tous vos utilisateurs participeront à l’élimination du spam sur votre serveur mail :)
Attention cependant de ne pas classer en spam n’importe quoi !

Pour poussez la lutte encore plus loin, vous pouvez aussi utiliser des services collaboratifs externes comme le combo Razor et Pyzor (backup ici). Ils s’installent assez facilement.

 

Voilà, maintenant vous avez votre propre service XMPP, les outils pour y accéder et votre spamassassin a gagné des muscles.

La suite au prochain épisode, au programme : Caldav / Carddav !

5 réflexions sur « A+ sous l’bus Google – Partie 3 »

    1. Wah, merci du tip pour conversejs, c’est excellent !
      Je viens de tester sur le roundcube, l’intégration est carrément mieux que jappix4roundcube !

      J’en parlerai dans le prochain article ;)

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *