Introduction :

En préambule, j’aimerai attirer votre attention sur le fait que ce sujet, est fort vaste et est un domaine à part entière avec ses spécialistes dont je ne fais pas partie. Ce billet est une tentative d’explication technique sur ma compréhension de ce sujet. Il se peut que des erreurs se soient glissées.

Description technique :

Voici un schéma qui décrit de manière simplifiée le processus d’envoi d’un ou plusieurs emails via l’API d’un prestataire.

Les différents composants sont les suivants :

  • application émettrice : application web qui va tenter d’envoyer un email
  • service d’envoi d’email : prestataire qui va se charger d’envoyer l’email (exemples : Mailgun, Mailjet, Mandrill…)
  • serveur d’envoi : le serveur qui va envoyer réellement l’email
  • serveur de réception : serveur qui va réceptionner l’email et le transmettre ou non au destinataire. Ce serveur est fourni par le fournisseur d’adresse email du destinataire (si mon destinataire a une adresse en @gmail, c’est gmail qui fera office de serveur de réception)
  • client mail : application dont va se servir le destinataire afin de lire l’email

De plus, pour avoir tous les éléments en tête avant de poursuivre, nous avons besoin d’en savoir plus sur le terme délivrabilité. Ce terme est fort compliqué à décrire car il peut vouloir dire plusieurs choses. Ici nous allons nous en tenir à sa définition purement technique, soit un email délivré est un email qui est arrivé jusqu’au serveur de réception, qui n’a pas détecté de problème majeur (pas de bounce). Un email délivré est donc un email qui est soit en inbox, soit en spam, soit a été bloqué par le serveur de réception (et donc pas acheminé jusqu’au destinataire).

Nous venons de voir un terme obscur répondant au doux nom de “bounce”. Il désigne un échec de réception d’un email, il en existe 2 types :

  • Hard bounce : Echec permanent de la réception de l’email par le destinataire à cause, par exemple, d’un destinataire inconnu ou d’un filtre anti-spam. Ré-envoyer le même email juste après échouera automatiquement. Il est conseillé d’enlever des bases d’adresses les emails générant un hard bounce et d’investiguer leurs causes.
  • Soft bounce : Un échec temporaire de la réception de l’email par le destinataire à cause, par exemple, d’un problème de disponibilité du serveur de réception ou d’une boite email pleine de la part du destinataire. Ré-envoyer le même email juste après peut permettre d’arriver dans la boite mail du destinataire. Il est conseillé de surveiller les soft bounce et d’investiguer leurs causes également.

Passons donc à un cas concret.

Exemple d’envoi d’email :

Notre exemple sera basé sur un utilisateur de l’application LeikirApp qui tente d’envoyer un email à contact@leikir.io via l’application qui elle même se sert du prestataire de service Mailgun. Les différentes étapes sont les suivantes :

  1. L’application LeikirApp demande à Mailgun via son API d’envoyer un email au destinataire contact@leikir.io.
  2. Mailgun choisi un serveur parmi son pool de serveurs d’envoi disponibles.
  3. Le serveur d’envoi envoie l’email.
  4. Le serveur de réception réceptionne l’email, effectue des vérifications et si ces dernières n’ont pas détectées de problème, il achemine l’email à son destinataire.
  5. L’email est reçu par le destinataire.

Descendons un peu dans les détails. Les étapes 1 à 3 sont assez classiques, très peu d’erreurs sont susceptibles d’arriver si ce n’est que le service d’envoi d’emails peut refuser d’envoyer l’email si l’adresse est erronée ou blacklistée par exemple.

 

L’étape 4, par contre, est très dense, il s’y passe beaucoup de choses.

Le serveur de réception va appliquer plusieurs filtres sur l’email entrant, le principal et celui qui va nous intéresser étant le filtre anti-spam (les autres filtres permettent par exemple de ranger l’email dans un onglet particulier comme sur gmail).

Ce filtre anti-spam se base sur 3 critères principaux pour déterminer si l’email est un spam ou non :

  1. la source de l’email : plusieurs facteurs sont pris en compte, parmi les plus communs on peut citer l’âge de l’adresse IP émettrice, l’authentification de l’émetteur…
  2. la réputation de l’émetteur : la réputation est un score déterminé par des algorithmes et qui prend un compte une multitude de facteurs : plaintes, spam traps, volume d’envoi, blacklists…
  3. le contenu de l’email : un scan automatique du contenu de l’email est effectué pour vérifier chaque partie de l’email : header, footer, code HTML, images, URLs, ration texte/images, langue, pièces jointes…

Revenons sur ces 3 éléments.

 

Source de l’email :

Les 2 principaux éléments qui font la source de l’email sont l’adresse IP émettrice et le nom de domaine.

Dans notre cas l’adresse IP émettrice est de la responsabilité du service d’envoi d’email. C’est à lui de veiller a la bonne réputation de ses machine émettrices. La réputation d’une machine émettrice est principalement basée sur son historique d’envoi (volume d’envoi, âge de l’adresse IP…).

Le nom de domaine est le nom de domaine associé à l’envoi d’email, c’est à dire la partie après le @ de l’adresse de l’expéditeur. La réputation d’un domaine est basé notamment sur l’historique d’envoi (taux de placement dans les spam, taux de placement en inbox, taux de plaintes, taux de “Ce n’est pas du spam”).

Le serveur de réception va interroger des blacklists basées sur l’un ou l’autre critère (domaine ou IP). Beaucoup de blacklists publiques existent et permettent aux serveurs de réception de les utiliser. Chaque blacklist a son propre système de filtrage et actuellement les serveurs de réception se servent des blacklists publiques ainsi que de leur propre blacklist interne et privée.

La combinaison des ces blacklists permet de déterminer si le serveur de réception doit rejeter ou accepter l’email entrant.

 

Réputation de l’émetteur :

4 critères sont à monitorer de près afin de conserver une bonne réputation :

  • destinataires inconnus : cela correspond à un hard bounce de la part du serveur de réception. L’adresse email du destinataire est inconnue (n’a jamais existé, a été abandonnée ou a été supprimée). Un taux de destinataires inconnus inférieur à 2% est considéré comme bon. A l’inverse un taux supérieur à 10% a un impact fort sur la délivrabilité.
  • spam traps : ce sont des adresses email qui n’appartiennent pas ou plus à de vrais utilisateurs mais sont utilisés pour identifier les spammers ou les émetteurs ayant de mauvaises pratiques. Quand un spam trap est “atteint” c’est une indication que soit l’adresse email du destinataire a été obtenue par des moyens peu scrupuleux, soit cela dénote d’une mauvaise hygiène des bases d’adresses emails. Dans les 2 cas il y a un impact (plus ou moins fort selon le type de trap et son âge) sur la réputation de l’émetteur.
  • destinataires inactifs : le nombre de destinataires qui n’ont pas ouvert le mail doit être bas afin de conserver une bonne réputation. Un fort taux de destinataires inactifs signifie souvent que les destinataires ne sont pas intéressés par ce qu’on leur propose et sont donc plus enclins à se plaindre ou marquer l’email comme étant du spam.
  • plaintes (notamment spam) : c’est un des facteurs les plus importants pour la réputation de l’émetteur. Un taux de plainte inférieur à 0,1% est indispensable pour conserver une bonne délivrabilité.

L’authentification est aussi un facteur important de la réputation du nom de domaine. Elle a lieu lors de la réception d’un email par un serveur de réception afin que ce dernier s’assure de l’identité de l’émetteur. Elle passe principalement par les enregistrements DNS de l’émetteur (SPF, DKIM et DMARC). La plupart des services d’envoi d’emails oblige leurs utilisateurs à avoir une authentification bien configurée.

 

Contenu de l’email :

Beaucoup de critères rentrent en compte, on peut en citer certains : code HTML correctement formaté , images, URLs non cassées, ratio texte/images.

Une méthode pour les serveurs de réception afin de savoir si un email est du spam est de créer une empreinte de l’email à partir du contenu de l’email et de la comparer à d’autres empreintes d’emails qui ont été signalées comme spam.

 

Si l’email entrant a été accepté, il se voit décerner une note de spam suite au passage du filtre anti-spam. Cette note va servir à placer l’email au bon endroit dans la boite email du destinataire (inbox, spam, promotions…). Chaque serveur de réception est configuré différemment et certains sont plus permissifs que d’autres.

 

Ainsi s’achève le périple de notre email puisque il a été délivré au destinataire. Néanmoins l’histoire ne s’arrête pas là car la vie de cet email au sein de la boite email du destinataire va influer sur beaucoup de critères et ainsi faire évoluer la réputation du domaine d’expédition ainsi que de l’IP émettrice. Mais cette histoire est réservée à un autre post.

 

Liens cool :

https://returnpath.com/resources/

http://resources.mailgun.com/index.html