{"id":335,"date":"2017-02-17T15:44:50","date_gmt":"2017-02-17T13:44:50","guid":{"rendered":"https:\/\/wtf.roflcopter.fr\/blog\/?p=335"},"modified":"2017-02-17T15:44:50","modified_gmt":"2017-02-17T13:44:50","slug":"hebergement-mail-et-presomption-dinnocence","status":"publish","type":"post","link":"https:\/\/wtf.roflcopter.fr\/blog\/2017\/02\/17\/hebergement-mail-et-presomption-dinnocence\/","title":{"rendered":"H\u00e9bergement mail et pr\u00e9somption d&rsquo;innocence"},"content":{"rendered":"<p>\u00c7a fait quelques temps que je vois sur les internets des gens qui jettent l&rsquo;\u00e9ponge apr\u00e8s s&rsquo;\u00eatre lanc\u00e9 dans l&rsquo;aventure de h\u00e9bergement de leur mails.<\/p>\n<p>La raison : devoir sans cesse se justifier aupr\u00e8s &#8211; entres autres &#8211; des GAFAM. Car malheureusement la pr\u00e9somption d\u2019innocence n&rsquo;existe pas dans ce milieu. Vous serez jug\u00e9 (ou au mieux pr\u00e9sum\u00e9) coupable de spam et ce jusqu&rsquo;\u00e0 preuve<span style=\"color: #800000;\"><strong>s<\/strong><\/span> du contraire. Votre mail, s&rsquo;il n&rsquo;essuie pas un refus cat\u00e9gorique de prise en charge de la part du serveur, atterrira\u00a0 donc dans le dossier Spam de votre destinataire. Bon courage pour \u00eatre lu&#8230;<\/p>\n<p>Pourtant, de simples pr\u00e9cautions suffises pour que \u00e7a se passe relativement bien (bon sauf pour Microsoft qui a juste d\u00e9cid\u00e9 d&rsquo;<a href=\"https:\/\/fiat-tux.fr\/2016\/10\/03\/le-pouvoir-de-nuisance-des-silos-de-mail\">\u00eatre con<\/a>&#8230;). Passons-les en revue.<\/p>\n<h2>\u00c9tat des lieux<\/h2>\n<p>Avant d&rsquo;entreprendre toute action, la premi\u00e8re chose \u00e0 faire est de faire l&rsquo;\u00e9tat des lieux de votre archi de courrier sortant. Pour cela, il y a plusieurs services en ligne :<\/p>\n<ul>\n<li>http:\/\/www.allaboutspam.com\/<\/li>\n<li>http:\/\/dkimvalidator.com\/<\/li>\n<li>Return Path (<a href=\"mailto:checkmyauth@auth.returnpath.net\">checkmyauth@auth.returnpath.net)<\/a><\/li>\n<\/ul>\n<p>Le principe, vous envoyez un mail &#8211; comme \u00e0 votre habitude &#8211; \u00e0 une adresse bien connue et on vous dit comment vous \u00eates per\u00e7u. (Juste niveau spam hein, pour le look faut voir ailleurs).<\/p>\n<p>Bon, je vous avoue j&rsquo;ai mon petit <a href=\"http:\/\/www.allaboutspam.com\/email-server-test\/\">pr\u00e9f\u00e9r\u00e9<\/a>. Leur batterie de test est plut\u00f4t compl\u00e8te et ils vont m\u00eame jusqu&rsquo;\u00e0 donner l&rsquo;URL des r\u00e9sultats via un <a href=\"https:\/\/fr.wikipedia.org\/wiki\/Mail_Transfer_Agent#Delivery_Status_Notification\"><em>bounce<\/em><\/a>. Cela permettra aussi de valider la configuration de votre serveur mail et que ceux-ci arrivent bien dans votre boite mail.<br \/>\nNormalement si votre serveur mail se fait envoyer bouler d\u00e9finitivement par un autre, celui-ci devrait, tout vex\u00e9 qu&rsquo;il est, vous g\u00e9n\u00e9rer un rapport de non d\u00e9livrance et le fourrer dans votre <em>Inbox<\/em>. Chose plut\u00f4t utile, car au moins vous serez au courant qu&rsquo;un mail envoy\u00e9 n&rsquo;a jamais atteint sa destination finale.<\/p>\n<h3>Testons<\/h3>\n<p>Premi\u00e8re chose \u00e0 faire, donc, envoyer un mail \u00e0 l&rsquo;adresse indiqu\u00e9e et attendre patiemment. En effet, la premi\u00e8re chose test\u00e9e est le respect de leur politique de <a href=\"https:\/\/fr.wikipedia.org\/wiki\/Greylisting\">greylisting<\/a> :<\/p>\n<pre class=\"lang:default decode:true\">2017-02-02T14:11:57+01:00 thyburce postfix\/smtp[22445]: 9B0A6C01E7: to=&lt;test@allaboutspam.com&gt;, relay=mx.allaboutspam.com[96.126.107.60]:25, delay=5.9, delays=0.02\/0.01\/0.3\/5.5, dsn=4.0.0, status=deferred (host mx.allaboutspam.com[96.126.107.60] said: <strong>452 Greylisted. Please try again after some time<\/strong>. (in reply to end of DATA command))<\/pre>\n<p>Il faut donc que votre serveur attende quelques minutes avant de retenter un nouvel envoi de mail.<\/p>\n<p>Quelques minutes plus tard&#8230;<\/p>\n<pre class=\"lang:default decode:true\">2017-02-02T14:18:26+01:00 thyburce postfix\/smtp[23008]: 9B0A6C01E7: to=&lt;test@allaboutspam.com&gt;, relay=mx.allaboutspam.com[96.126.107.60]:25, delay=395, delays=389\/0.01\/0.32\/5.6, dsn=5.0.0, status=bounced (host mx.allaboutspam.com[96.126.107.60] said: 552-Thanks for using ALLABOUTSPAM.COM Email server test. Your test results are 552 available at http:\/\/www.allaboutspam.com\/email-server-test-report\/?key=D979EE770E39318B6D5A9AC11561364E  (in reply to end of DATA command))<\/pre>\n<p>Le mail part et&#8230; se fait envoyer bouler du serveur. Tout est nominal ! C&rsquo;est le comportement voulu, le message d&rsquo;erreur comporte un lien avec le r\u00e9sultat de l&rsquo;analyse de votre syst\u00e8me de courrier sortant. Th\u00e9oriquement vous devriez avoir un rapport de \u00ab\u00a0bounce\u00a0\u00bb dans votre boite mail.<\/p>\n<p>Allons voir le d\u00e9tail de ce rapport&#8230;<\/p>\n<h3>Le Reverse DNS<\/h3>\n<p>Premier truc, le serveur distant va la plupart du temps faire une r\u00e9solution d&rsquo;adresse inverse (IP &gt; Nom). Vous devez avoir une r\u00e9solution inverse fonctionnelle !<\/p>\n<h3>Le <b>HELO<\/b><\/h3>\n<p>Et non il ne manque pas un L :)<\/p>\n<p>C&rsquo;est la premi\u00e8re chose \u00e0 dire lorsqu&rsquo;on se pr\u00e9sente en SMTP \u00e0 un autre serveur. Faut dire bonjour. Et quant \u00e0 faire, autant se pr\u00e9senter correctement.<\/p>\n<p>Ici votre serveur devrait se pr\u00e9senter selon un nom de domaine r\u00e9solvable et si possible correspondant au domaine obtenu plus haut par r\u00e9solution inverse. L\u00e0 c&rsquo;est la classe, vous marquez des points (<a href=\"https:\/\/fr.wikipedia.org\/wiki\/SpamAssassin#Fonctionnement\">non vraiment pour de vrai<\/a>).<\/p>\n<h3>Les Blacklist<\/h3>\n<p>Il existe tout un tas de blacklist disponible gratuitement, priv\u00e9es ou sur abonnement. Ici tout d\u00e9pend de ce que vous avez en face. Le mieux c&rsquo;est de v\u00e9rifier aussi par <a href=\"https:\/\/wtf.roflcopter.fr\/links\/pogo\/?px3pKg\">vous-m\u00eame. N&rsquo;oubliez pas de tester les domaines port\u00e9s par votre serveur mail ainsi que vos IP de sortie !\u00a0<\/a><\/p>\n<p>La plupart du temps il n&rsquo;y a pas de raison que votre domaine soit blacklist\u00e9 \u00e0 moins d&rsquo;avoir :<\/p>\n<ul>\n<li>envoy\u00e9 une quantit\u00e9 de spam auparavant,<\/li>\n<li>repris un ancien domaine d\u00e9j\u00e0 blacklist\u00e9 pour la raison pr\u00e9c\u00e9dente,<\/li>\n<li>un domaine contenant des mots explicites.<\/li>\n<\/ul>\n<p>Pour l&rsquo;IP c&rsquo;est un peu plus fourbe&#8230; Si vous \u00eates derri\u00e8re de l&rsquo;ADSL, n&rsquo;y pensez m\u00eame pas vous \u00eates blacklist\u00e9 et il n&rsquo;y aura rien \u00e0 faire. \u00c7a ne vous emp\u00eachera pas d&rsquo;envoyer des mails (si votre FAI le permet).<\/p>\n<p>Il peut aussi arriver qu&rsquo;un ou plusieurs voisins de votre plage d&rsquo;IP envoient du spam et certains \u00e9diteurs de blacklist d\u00e9cident de bannir en totalit\u00e9 la plage d&rsquo;IP associ\u00e9e.<\/p>\n<p>La plupart des \u00e9diteurs poss\u00e8dent un formulaire de contact afin de demander d&rsquo;\u00eatre retir\u00e9 de leur liste. De mon c\u00f4t\u00e9, j&rsquo;ai toujours eu un retour positif de leur part (apr\u00e8s avoir montr\u00e9 patte blanche bien s\u00fbr).<\/p>\n<p>Une fois votre courrier sortant bien configur\u00e9, c&rsquo;est la seule partie qui rester \u00e0 surveiller de temps en temps et qui vous demandera parfois un peu de fil \u00e0 retordre. Rien de bien m\u00e9chant cependant c&rsquo;est juste un peu d&rsquo;administratif :)<\/p>\n<h3>Le SPF &amp; DKIM<\/h3>\n<p>\u00c7a on ne les pr\u00e9sente plus&#8230; <strong>Ils sont obligatoires <\/strong><em>(vraiment)<strong>. <\/strong><\/em>Le SPF c&rsquo;est un record \u00e0 publier dans son DNS, \u00e7a ne co\u00fbte rien \u00e0 faire et il y a des tutos partout sur le net pour le mettre en place.<\/p>\n<p>Le DKIM c&rsquo;est un poil plus compliqu\u00e9, un record DNS + conf de votre serveur mail pour signer tous les mails sortant. Encore une fois : un petit tuto et on n&rsquo;en parle plus. Une fois que c&rsquo;est en place \u00e7a j-u-s-t-e marche.<\/p>\n<p>Inutile de pr\u00e9ciser que le test doit \u00eatre positif.<\/p>\n<h3><b>URIBL (Realtime URI Blacklist)<\/b><\/h3>\n<p>\u00c7a c&rsquo;est plus vicieux. J&rsquo;imagine que vous n&rsquo;allez pas envoyer des liens \u00e0 vos proches pour une augmentation de taille de chibre ! Par contre, certains Header SMTP peuvent faire tiquer l&rsquo;antispam qui pourrait consid\u00e9rer le mail comme du Spam (d\u00e9j\u00e0 qu&rsquo;il est sur la d\u00e9fensive&#8230;).<\/p>\n<p>De mon c\u00f4t\u00e9, j&rsquo;ai mis en place une politique de nettoyage des headers des mails sortant pour \u00e9viter toutes fuites d&rsquo;info non souhait\u00e9es et \u00e9viter que l&rsquo;antispam distant me fasse un caca nerveux !<\/p>\n<p>Petite contrainte avec le DKIM cependant : postfix doit nettoyer les headers avant la transmission au processus de signature DKIM. En effet, la signature DKIM se base sur tout le contenu du mail. Si vous alt\u00e9rez le contenu (suppression des headers) apr\u00e8s la signature, celle-ci ne sera plus valide.<\/p>\n<p>Idem pour le courrier entrant, le plus simple \u00e9tant de ne pas y toucher.<\/p>\n<p>Il faut donc appliquer notre politique de nettoyage qu&rsquo;aux courriers sortant uniquement.<\/p>\n<p>Bonne nouvelle postfix sait faire \u00e7a. Rendez-vous dans le fichier <em>master.cf<\/em> et localiser la ligne <em>submission<\/em> (qui correspond au service SMTP des courriers sortant) :<\/p>\n<p>On va lui rajouter un petit service de \u00ab\u00a0cleanup\u00a0\u00bb :<\/p>\n<pre class=\"lang:default mark:5 decode:true\">submission inet n       -       n       -       -       smtpd\r\n    -o smtpd_tls_security_level=encrypt\r\n    -o smtpd_sasl_auth_enable=yes\r\n    -o smtpd_client_restrictions=permit_sasl_authenticated,reject\r\n    -o cleanup_service_name=subcleanup\r\n    -o content_filter=smtp-amavis:[127.0.0.1]:10026<\/pre>\n<p>Chez moi c&rsquo;est Amavis qui s&rsquo;occupe de la signature DKIM c&rsquo;est donc le dernier service appeler avant l&rsquo;envoi effectif du mail.<\/p>\n<p>Tout en bas du fichier rajouter les lignes suivantes :<\/p>\n<pre class=\"lang:default decode:true\">subcleanup unix n       -       -       -       0       cleanup\r\n    -o header_checks=pcre:\/etc\/postfix\/headers_cleanup.pcre<\/pre>\n<p>On demande donc au service d&rsquo;aller faire le <em>m\u00e9nache<\/em> dans les headers.<\/p>\n<p>Mais PoGo que contient ce fichier headers_cleanup.pcre ?<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" id=\"im\" class=\"\" src=\"https:\/\/i.imgflip.com\/1iu790.jpg\" alt=\"I'M GLAD YOU F**KING ASKED ! | made w\/ Imgflip meme maker\" width=\"501\" height=\"293\" \/><\/p>\n<pre class=\"lang:default decode:true\" title=\"\/etc\/postfix\/headers_cleanup.pcre\">\/^Received:\/                            IGNORE\r\n\/^X-Originating-IP:\/                    IGNORE\r\n\/^X-Mailer:\/                            IGNORE\r\n\/^Mime-Version:\/                        IGNORE\r\n\/^Message-Id:\/                          IGNORE<\/pre>\n<p>Les header <em>Received<\/em> r\u00e9v\u00e8lent tout le parcours du mail avant d&rsquo;arriver \u00e0 votre serveur de mail sortant. Ils indiquent notamment IP\/Nom de domaines internes par lesquels le courrier aura transit\u00e9 avant d&rsquo;\u00eatre jet\u00e9 dans les Internet. C&rsquo;est justement \u00e7a qui peut titiller certains antispam \u00e0 cheval sur les r\u00e8gles <em>(note pour plus tard, ins\u00e9rer ici un jeu de mot selon l&rsquo;inspiration du moment&#8230;)<\/em>.<\/p>\n<p>X-Originating-IP, s&rsquo;il est support\u00e9 par votre client mail (ou webmail) peut r\u00e9v\u00e9ler votre IP publique utilis\u00e9e par votre client lors de l&rsquo;envoi de votre mail.<\/p>\n<p>Le nettoyage des autres headers permettent d&rsquo;\u00e9viter l<em>a <\/em>divulgation d&rsquo;information non pertinentes.<\/p>\n<h2>En conclusion<\/h2>\n<p>Faites en sorte d&rsquo;avoir le rapport le plus clean possible car une fois tous ces points v\u00e9rifi\u00e9s, tout devrait bien se passer.<\/p>\n<p>N&rsquo;h\u00e9sitez pas \u00e0 relancer le test tous les 2\/3 mois.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00c7a fait quelques temps que je vois sur les internets des gens qui jettent l&rsquo;\u00e9ponge apr\u00e8s s&rsquo;\u00eatre lanc\u00e9 dans l&rsquo;aventure de h\u00e9bergement de leur mails. La raison : devoir sans cesse se justifier aupr\u00e8s &#8211; entres autres &#8211; des GAFAM. Car malheureusement la pr\u00e9somption d\u2019innocence n&rsquo;existe pas dans ce milieu. Vous serez jug\u00e9 (ou au &hellip; <a href=\"https:\/\/wtf.roflcopter.fr\/blog\/2017\/02\/17\/hebergement-mail-et-presomption-dinnocence\/\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">H\u00e9bergement mail et pr\u00e9somption d&rsquo;innocence<\/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,36,17,34,35],"class_list":["post-335","post","type-post","status-publish","format-standard","hentry","category-geekerie","tag-auto-hebergement","tag-dkim","tag-mail","tag-spam","tag-spf"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/wtf.roflcopter.fr\/blog\/wp-json\/wp\/v2\/posts\/335","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=335"}],"version-history":[{"count":7,"href":"https:\/\/wtf.roflcopter.fr\/blog\/wp-json\/wp\/v2\/posts\/335\/revisions"}],"predecessor-version":[{"id":346,"href":"https:\/\/wtf.roflcopter.fr\/blog\/wp-json\/wp\/v2\/posts\/335\/revisions\/346"}],"wp:attachment":[{"href":"https:\/\/wtf.roflcopter.fr\/blog\/wp-json\/wp\/v2\/media?parent=335"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wtf.roflcopter.fr\/blog\/wp-json\/wp\/v2\/categories?post=335"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wtf.roflcopter.fr\/blog\/wp-json\/wp\/v2\/tags?post=335"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}