Auteur : Didier Misson
• 27 septembre 2008

Les spams, vous connaissez… et ça commence à bien faire ! A défaut de savoir les éliminer, différentes techniques peuvent vous aider à les filtrer, mais aussi aider vos correspondants pour qu’ils puissent facilement reconnaître un mail envoyé réellement par vous d’un vulgaire spam à jeter.

Une des techniques qui devient assez répandue est le Sender Policy Framework.

Logo sous licence CC-by-SA 2.5

Avant d’expliquer comment l’appliquer, une explication est nécessaire pour bien comprendre ce mécanisme.

Les spammeurs utilisent plusieurs techniques pour vous inciter à ouvrir leurs mails ventant/vendant plein de choses, des magnifiques pilulles bleus aux montres Rolex garanties d’origine en passant par les prêts bancaires et les médicaments de toutes sortes. En dehors du titre du mail, le nom et l’adresse d’expédition jouent un rôle important, les spammeurs essayent de vous mettre en confiance, ou de susciter votre curiosité, en envoyant des spams qui semblent provenir de personnes que vous connaissez, de personnes célèbres, de firmes connues, ou même de vous-même ou d’adresses mails de votre propre domaine.

Vous, vous n’allez probablement pas vous laisser prendre à ce piège élémentaire… mais vos correspondants, les personnes de votre famille, vos amis… qui ne sont pas tous passionnés d’informatique ?

Expliquons cela autrement : une personne qui vous connaît, reçoit un mail semblant venir de vous. Évidemment, ce n’est pas vous qui l’avez envoyé… Comment faire en sorte que votre correspondant ne reçoive pas ce mail piège ?

Pouvez-vous empêcher l’envoie de ce spam à votre nom ? Non malheureusement… Si un spammeur décide d’utiliser votre adresse mail pour envoyer ses spams du fin fond de la Chine, Russie, ou même de la France ou des USA… ce n’est pas vous qui arriverez à l’empêcher !

Alors, il faut un mécanisme à la réception des mails : Comment votre correspondant, disons comment le serveur mails de votre correspondant, pourrait-il déterminer que ce mail est un faux, et ne vient pas de vous ?

L’adresse mail d’origine n’est pas une méthode fiable pour détecter un spam. Rien n’empèche un spammeur d’envoyer un mail avec VOTRE adresse mail comme adresse d’expédition ! Ca vous semble étonnant ? Mais… qui peut empécher quelqu’un de poster une lettre à la poste, avec votre propre nom comme expéditeur ? … Rien !

Si le nom de l’expéditeur, l’adresse mail de l’expéditeur, n’est pas un moyen fiable, une autre possibilité existe : l’adresse IP du serveur d’expédition !

S’il est facile d’utiliser un nom et une adresse mail falsifiées, l’adresse IP n’est pas falsifiable (dans CE cas ci).

Les spammeurs utilisent rarement leur propre serveur ! Trop cher… puis… ils restent discret. La plupart du temps, ce sont des armées de PC piratés qui servent pour l’envoie de ces millions de spams.

Quelque soit la machine utilisée, serveur, Pc Windows piraté, l’envoie du mail se fait en établissant une session TCP/IP entre cette machine source et le serveur mail de destination !

A ce moment, le serveur mails vers le quel est envoyé le spam, CONNAÎT l’adresse IP de la machine d’origine ! (ou du serveur mail SMTP qui a servi de relais). Il y a un dialogue entre la machine envoyant le mail (le spam) et le serveur mail de destination qui connaiît donc l’adresse IP de l’expéditeur.

Il “suffit” que le serveur qui reçoit ce mail, sache qu’il n’est pas normal que des mails à votre adresse vienne de cette machine.

Comment faire cela ? Comment certifier que vous pouvez envoyer des mails à votre adresse, et pas une autre machine ?

En ajoutant un élément dans le mail lors de l’envoie ? Non… vous ne pouvez pas faire confiance dans le contenu du mail. Les spammeurs connaissent ces méthodes, et s’il suffisait d’ajouter une ligne “server approved for mon_domaine.com” pour pouvoir envoyer des mails @mon_domaine.com, les spammeurs ajouteraient ce genre d’élement.

Le contrôle ne peut se faire qu’à la réception : il suffit d’indiquer quelque part le, ou les serveurs mails qui ont le droit d’envoyer des mails à votre adresse.
Cette liste de vos serveurs mails officiels, doit être accessible depuis Internet pour que tous les serveurs mails puissent vérifier si une machine qui envoie un mail à votre adresse est autorisée ou pas, et cette liste doit être FIABLE, càd à un endroit que VOUS contrôlez !

Cette technique, c’est le Sender Policy Framework (SPF), et cela aide grandement à vérifier si le mail qui arrive est légal ou pas.

Dans quel endroit, accessible sur Internet, pourrait-on mettre cette liste de serveur officiel ?

Mais dans le DNS !

Vous gérez votre domaine (ou quelqu’un le gère pour vous, mais vous lui faites confiance) et donc vous gérez son serveur DNS ou vous avez accès aux définitions DNS chez votre registrar.

SPF se base sur cela : une ligne “SPF” est ajoutée dans votre DNS pour votre domaine, et cette ligne SPF contient la liste des serveurs mails qui peuvent envoyer des mails pour votre domaine.

Vous y indiquez par exemple, le serveur mail de votre domaine, celui de votre fournisseur Internet à la maison, peut-être celui de votre travail, la machine qui sert de Webmail, etc.

Quand un serveur mail recevra un mail venant ou semblant venir de votre domaine, il va aller vérifier dans le DNS de votre domaine :

  • si l’adresse IP de la machine qui envoie ce mail est dans la liste, alors ce mail est probablement officiel (probablement… si aucune machine de votre domaine n’a de virus ni spyware, etc)
  • si l’ adresse IP du serveur d’expédition est inconnue, alors ce mail est probablement au faux, un spam (probablement… car vous pourriez être en déplacement, chez un ami, etc)

Le reste est une affaire de configuration, de décision si vous allez faire une liste STRICTE de serveurs et qu’aucun autre serveur ne pourra jamais envoyer de mails pour votre domaine, ou si cette liste indique les machines officielles mais sans rejeter la possibilité que des mails ne viennent d’autre part…

En très résumé donc :

SPF ne permet aucunement de vérifier que c’est bien la personne indiquée qui a écrit le mail. Même si on était sûr que le mail vient du PC de la personne indiquée, on ne pourrait pas encore certifier que cette personne est bien à l’origine du mail reçu (son PC peut avoir un virus, etc).

Mais SPF permet de vérifier si la machine utilisée pour envoyer un mail avec l’adresse arthur@mon_domaine.com vient bien d’un serveur officiel et reconnu par le domaine mon_domaine.com ;-)

C’est un premier filtre, très souvent efficace puisqu’il peut déjà permettre de bloquer une grande quantité de mails venant de pays lointains ou d’un autre provider.

Si on fait une comparaison avec la vie courante, on pourrait comparer SPF au cachet de la poste sur une enveloppe.

Vous recevez une lettre de votre ami Jean Dupont, habitant Liège et travaillant à Bruxelles :

  • le cachet indique que la lettre a été postée à Liège ou Bruxelles : c’est logique et normal. Ca ne certifie pas que la lettre soit originale, mais c’est probable.
  • la lettre reçue a été postée depuis Sydney, Paris Texas, Lagos au Niger ou depuis Dingxi au centre de la Chine… C’est pour le moins étonnant ! Et déjà c’est une indication que cette lettre est probablement un faux.

La suite dans mon prochain billet sur la définition et la syntaxe des records SPF :-)

Vous pouvez suivre toutes les réponses à à ce billet via le flux RSS 2.0. Vous pouvez laisser une réponse, ou un rétrolien depuis votre propre site.

Une réponse

  1. [...] Un peu de tout Un blog libre utilisant WordPress « Sender Policy Framework : Record SPF : comment ça marche ? [...]

Laisser un commentaire