{"id":217,"date":"2014-02-18T09:20:22","date_gmt":"2014-02-18T07:20:22","guid":{"rendered":"https:\/\/wtf.roflcopter.fr\/blog\/?p=217"},"modified":"2014-02-20T14:02:42","modified_gmt":"2014-02-20T12:02:42","slug":"a-sous-lbus-google-partie-3","status":"publish","type":"post","link":"https:\/\/wtf.roflcopter.fr\/blog\/2014\/02\/18\/a-sous-lbus-google-partie-3\/","title":{"rendered":"A+ sous l\u2019bus Google \u2013 Partie 3"},"content":{"rendered":"<p>Et voici la troisi\u00e8me partie de ce tutoriel !\u00a0Aujourd&rsquo;hui on va parler de XMPP et am\u00e9liorer notre spamassassin :)<\/p>\n<h1>XMPP sans ta m\u00e8re<\/h1>\n<p><span style=\"line-height: 1.5;\">Partir de Google, cela signifie partir aussi de Gtalk et <\/span><span style=\"text-decoration: underline;\"><strong>surtout<\/strong> <\/span><span style=\"line-height: 1.5;\">d&rsquo;Hangout.<\/span><\/p>\n<p><span style=\"line-height: 1.5;\">Comme annonc\u00e9 lors de la sortie de Hangout, celui-ci ne supportera plus XMPP&#8230; Encore une preuve du renfermement de ces g\u00e9ants du web&#8230; un repli sur soit m\u00eame entra\u00eenant ses utilisateurs dans de bien belles prisons dor\u00e9es (m\u00eame remarque pour Microsoft &#8211; Skype, Facebook, Twitter, &#8230;).<br \/>\n<\/span><span style=\"line-height: 1.5;\">Utilisons donc un protocole respectueux des principes d&rsquo;Internet : <strong>XMPP<\/strong>.<\/span><\/p>\n<p>XMPP, c&rsquo;est un peu le \u00ab\u00a0SMTP\u00a0\u00bb de la messagerie instantan\u00e9e. C&rsquo;est un protocole d\u00e9centralis\u00e9 et son fonctionnement ressemblent \u00e0 celui du mail.<br \/>\nUn client XMPP ne va pas directement parler \u00e0 un autre client, il va passer par son serveur d\u2019appartenance, qui va : soit \u00e9tablir une session sur le serveur distant et transmettre le message, soit transmettre le message au client s&rsquo;il appartient au m\u00eame serveur.<\/p>\n<p><span style=\"line-height: 1.5;\">Il y a donc deux types de connexion possible en XMPP : c2s (client to serveur) et s2s (server to server).<\/span><\/p>\n<p>Comme une adresse XMPP est de la m\u00eame forme qu&rsquo;une adresse mail, il est possible de n&rsquo;utiliser qu&rsquo;une seule et m\u00eame adresse pour les protocoles XMPP et SMTP (tout comme les adresses en @gmail, @hotmail, etc)&#8230; On ne va pas de g\u00eaner\u00b2 :)<\/p>\n<h2>Ejabberd<\/h2>\n<p>Ejabberd, c&rsquo;est un serveur XMPP. Il est plut\u00f4t facile \u00e0 configurer et &#8211; bonne nouvelle &#8211; un <a href=\"http:\/\/www.iredmail.org\/wiki\/index.php?title=Integration\/Ejabberd.iRedMail.with.OpenLDAP\/Ubuntu\">tuto existe<\/a> (backup\u00a0<a href=\"https:\/\/wtf.roflcopter.fr\/archive\/index.php?public&amp;publicget=2013-11-12-19-06-27\">ici<\/a>)\u00a0pour l&rsquo;int\u00e9grer avec le LDAP d&rsquo;IredMail.<\/p>\n<p>Suivez-le, il est assez simple, et tout est bien expliqu\u00e9, m\u00eame pour l\u2019\u00e9ventuel s\u00e9ance de debugging.<\/p>\n<p>Une fois que votre Ejabberd est pr\u00eat, vous pouvez commander \u00e0 l&rsquo;utiliser avec n&rsquo;importe quel client compatible XMPP tel que <a href=\"http:\/\/pidgin.im\/\">Pidgin<\/a>\u00a0ou <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.xabber.android&amp;hl=fr\">Xabber <\/a>sur Android.<\/p>\n<h2>DNS<\/h2>\n<p>Eh oui, une fois n&rsquo;est pas coutume, il va falloir faire un peu de configuration DNS.<\/p>\n<p>Vous avez vu dans <a title=\"A+ sous l\u2019bus Google \u2013 Partie 2\" href=\"https:\/\/wtf.roflcopter.fr\/blog\/2013\/08\/31\/a-sous-lbus-google-partie-2\/\">la partie 2<\/a>, les records MX sp\u00e9cifiques au mail ainsi que les records TXT (pour le SPF ou le DKIM).\u00a0Ici on va avoir besoin de records SRV pour annoncer votre serveur XMPP ainsi que ses ports d&rsquo;\u00e9coute. 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 :<\/p>\n<p><span class=\"lang:default decode:true crayon-inline\">_service._proto.name TTL class SRV priority weight port target<\/span><\/p>\n<p>Pas d&rsquo;affolement \u00e7a va bien se passer, d\u00e9composons tranquillement :)<\/p>\n<ul>\n<li><strong>_service<\/strong> =&gt; d\u00e9fini le type de connection (S2S ou C2S)<\/li>\n<li><strong>_proto<\/strong> =&gt; tcp ou udp<\/li>\n<li><strong>name<\/strong> =&gt; votre domaine XMPP<\/li>\n<li><strong>TTL class SRV priority\u00a0<\/strong>=&gt; ici rien de nouveau par rapport \u00e0 un record \u00ab\u00a0classique\u00a0\u00bb<\/li>\n<li><strong>weight<\/strong> =&gt; permet d&rsquo;ajouter un poids entre record avec une priorit\u00e9 \u00e9gale (pourquoi pas..)<\/li>\n<li><strong>port<\/strong> =&gt; le port d&rsquo;\u00e9coute de votre serveur correspondant au type de connexion<\/li>\n<li><strong>target<\/strong> =&gt; soit l&rsquo;IP, soit le DNS de votre serveur XMPP<\/li>\n<\/ul>\n<p>Voil\u00e0, rien de m\u00e9chant. Pour un exemple pratique voici la configuration chez roflcopter.fr :<\/p>\n<pre class=\"lang:default decode:true\">_xmpp-client._tcp.roflcopter.fr 120 IN SRV 0 100 5222 xmpp.roflcopter.fr\r\n_xmpp-server._tcp.roflcopter.fr 120 IN SRV 0 100 5269 xmpp.roflcopter.fr<\/pre>\n<p>&nbsp;<\/p>\n<p>Plus d&rsquo;info sur la configuration DNS sp\u00e9cifique \u00e0 XMPP <a href=\"http:\/\/wiki.xmpp.org\/web\/SRV_Records\">ici<\/a>.<\/p>\n<h2>Jappix<\/h2>\n<p>Un client lourd c&rsquo;est pratique sur son PC perso, par contre quand on est en d\u00e9placement ou que l&rsquo;on a pas son PC sous la main, un client web peut d\u00e9panner.<\/p>\n<p>Le client web XMPP le plus abouti \u00e0 ce jour est Jappix ! Il propose une belle interface, il est plut\u00f4t r\u00e9actif et facile \u00e0 mettre en place. Vous pouvez le tester ici :\u00a0<a href=\"https:\/\/jappix.com\/\">https:\/\/jappix.com\/<\/a>\u00a0Si vous voulez le tester avec votre domaine, assurez vous que vous avez bien suivi la partie sur les DNS et que la configuration s&rsquo;est bien propag\u00e9e.<\/p>\n<p>Il est possible (et m\u00eame recommand\u00e9) d&rsquo;en installer une instance chez vous. La doc d&rsquo;installation est plut\u00f4t compl\u00e8te :\u00a0<a href=\"https:\/\/github.com\/jappix\/jappix\/wiki\">https:\/\/github.com\/jappix\/jappix\/wiki<\/a>\u00a0<span style=\"line-height: 1.5;\">Vous retrouverez dans les diff\u00e9rents points la configuration \u00e0 appliquer sur votre serveur ejabberd.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>Et voil\u00e0 ! Vous avez maintenant de quoi chatter avec vos amis ;)<\/p>\n<p>&nbsp;<\/p>\n<h1>Enlarge your spamassassin<\/h1>\n<p>Si vous avez commenc\u00e9 \u00e0 utiliser votre nouvelle messagerie et rendu votre mail plus ou moins publique un riche h\u00e9ritier africain a d\u00e9j\u00e0 d\u00fb vous contacter :)<br \/>\nPour peu que ce soit bien \u00e9crit (aussi bien au niveau du contenu qu&rsquo;au niveau du contenant), et que le mail utilis\u00e9 ne soit pas encore publi\u00e9 dans une myriade de blacklist votre spamassassin n&rsquo;y aura vu que du feu ! R\u00e9sultat, le mail tombe comme un cheveu dans votre Inbox.<\/p>\n<p>De rage, vous vous empressez de classer ce vilain mail dans le dossier Spam, en esp\u00e9rant que \u00e7a lui serve de le\u00e7on !\u00a0Le lendemain : rebelote ! Le margoulin r\u00e9it\u00e8re et son mail tr\u00f4ne dans votre belle Inbox&#8230;<br \/>\n<em>Mais il n&rsquo;apprend donc jamais rien ce spamassasin ?<\/em><br \/>\n<strong>Eh bien non !<\/strong> Un mail class\u00e9 comme spam, n&rsquo;aura que seul effet de le classer dans le dossier \u00ab\u00a0spam\u00a0\u00bb. Spamassassin n&rsquo;en saura jamais rien et n&rsquo;apprendra pas de ses erreurs&#8230;<\/p>\n<p>Il existe cependant une solution : les <a href=\"http:\/\/fr.wikipedia.org\/wiki\/Filtrage_bay%C3%A9sien_du_spam\">filtres bay\u00e9siens<\/a>. Grace \u00e0 cela, spamassassin va se baser sur des \u00ab\u00a0tokens\u00a0\u00bb, une occurrence de mots ou de courtes phrases identifi\u00e9s comme pouvant faire parti du contenu d&rsquo;un spam.<\/p>\n<p>Et double cerises sur le g\u00e2teau, il existe un plugin pour Roundcube qui automatise l&rsquo;apprentissage quand on classe un mail comme spam <strong>ET<\/strong> <a href=\"http:\/\/www.iredmail.org\/wiki\/index.php?title=IRedMail\/FAQ\/Store.SpamAssassin.Bayes.In.SQL\">un tuto<\/a>\u00a0(backup <a href=\"https:\/\/wtf.roflcopter.fr\/archive\/index.php?public&amp;publicget=2014-02-18-14-08-25\">ici<\/a>) pour le mettre en place sur Iredmail !<\/p>\n<p>Petit conseil, une fois le tuto suivi et l&rsquo;apprentissage valid\u00e9 (voir fin du tuto), passez \u00e0 la moulinette vos anciens mails de spam via la commande suivante :<\/p>\n<pre class=\"lang:default decode:true\">sa-learn --showdots --spam \/var\/vmail\/vmail1\/&lt;path_de_votre_maildir&gt;\/Maildir\/.Junk\/\r\n.....................................................................................................................................................\r\nLearned tokens from 67 message(s) (149 message(s) examined)<\/pre>\n<p>Les filtres bay\u00e9siens de reposent essentiellement sur des probas. Plus vous les nourrirez et plus ils seront efficace ! De plus, la base est partag\u00e9e, donc tous vos utilisateurs participeront \u00e0 l&rsquo;\u00e9limination du spam sur votre serveur mail :)<br \/>\nAttention cependant de ne pas classer en spam n&rsquo;importe quoi !<\/p>\n<p>Pour poussez la lutte encore plus loin, vous pouvez aussi utiliser des services collaboratifs externes comme le combo <a href=\"http:\/\/www.inetdoc.net\/guides\/amavisd-new\/amavisd-new.antispam.html#amavisd-new.antispam.zor\">Razor et Pyzor<\/a>\u00a0(backup <a href=\"https:\/\/wtf.roflcopter.fr\/archive\/?public&amp;publicget=2014-02-18-14-18-32\">ici<\/a>). Ils s&rsquo;installent assez facilement.<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"line-height: 1.5;\">Voil\u00e0, maintenant vous avez votre propre service XMPP, les outils pour y acc\u00e9der et votre spamassassin a gagn\u00e9 des muscles.<\/span><\/p>\n<p><span style=\"line-height: 1.5;\">La suite au prochain \u00e9pisode, au programme : Caldav \/ Carddav !<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Et voici la troisi\u00e8me partie de ce tutoriel !\u00a0Aujourd&rsquo;hui on va parler de XMPP et am\u00e9liorer notre spamassassin :) XMPP sans ta m\u00e8re Partir de Google, cela signifie partir aussi de Gtalk et surtout d&rsquo;Hangout. Comme annonc\u00e9 lors de la sortie de Hangout, celui-ci ne supportera plus XMPP&#8230; Encore une preuve du renfermement de ces &hellip; <a href=\"https:\/\/wtf.roflcopter.fr\/blog\/2014\/02\/18\/a-sous-lbus-google-partie-3\/\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">A+ sous l\u2019bus Google \u2013 Partie 3<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"","activitypub_status":"","footnotes":""},"categories":[15],"tags":[18,16,19,17],"class_list":["post-217","post","type-post","status-publish","format-standard","hentry","category-geekerie","tag-auto-hebergement","tag-google","tag-iredmail","tag-mail"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/wtf.roflcopter.fr\/blog\/wp-json\/wp\/v2\/posts\/217","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wtf.roflcopter.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wtf.roflcopter.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wtf.roflcopter.fr\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wtf.roflcopter.fr\/blog\/wp-json\/wp\/v2\/comments?post=217"}],"version-history":[{"count":18,"href":"https:\/\/wtf.roflcopter.fr\/blog\/wp-json\/wp\/v2\/posts\/217\/revisions"}],"predecessor-version":[{"id":248,"href":"https:\/\/wtf.roflcopter.fr\/blog\/wp-json\/wp\/v2\/posts\/217\/revisions\/248"}],"wp:attachment":[{"href":"https:\/\/wtf.roflcopter.fr\/blog\/wp-json\/wp\/v2\/media?parent=217"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wtf.roflcopter.fr\/blog\/wp-json\/wp\/v2\/categories?post=217"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wtf.roflcopter.fr\/blog\/wp-json\/wp\/v2\/tags?post=217"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}