Ludovic ROLAND

Blog technique sur mes expériences de développeur.

Envoyer et recevoir des e-mails en Perl 5 (1/5) : Introduction

7 août 2022

Ce chapitre d’introduction va nous permettre de faire quelques rappels quant au fonctionnement des mails, et voir grosso modo les différentes étapes qui permettent à un e-mail de passer de son expéditeur à son destinataire.

Plan

Cycle de vie d’un e-mail (1/2)

Avant de faire du Perl et de manipuler de nouveaux modules, nous allons nous intéresser au cycle de vie d’un e-mail.

Le voici d’ailleurs résumé en un schéma :

Comme vous pouvez le constater, le cycle de vie d’un e-mail s’articule autour de 4 étapes et beaucoup de vocabulaire. C’est pourquoi je vous propose de vous livrer immédiatement les définitions de tous ces mots étranges.

Définitions et vocabulaire

Ce chapitre va être assez lourd, prenez le temps de le lire plusieurs fois lentement afin d’assimiler tranquillement tout ce nouveau vocabulaire !

Protocole SMTP

SMTP est l’acronyme anglais de Simple Mail Transfer Protocol. Il s’agit du protocole de communication utilisé pour transférer le courrier électronique vers les serveurs de messagerie électronique.

Pour résumer, le protocole SMTP est le protocole utilisé pour envoyer un e-mail.

Protocole POP3

POP3 est l’acronyme anglais de Post Office Protocol Version 3. Il s’agit d’un protocole de communication utilisé pour récupérer les e-mails situés sur un serveur de messagerie.

Pour résumer, le protocole POP3 est un des protocoles utilisés pour recevoir un e-mail.

Protocole IMAP

IMAP est l’acronyme anglais de Internet Message Access Protocol. Il s’agit d’un protocole de communication utilisé pour récupérer les e-mails situés sur un serveur de messagerie.

Pour résumer, le protocole IMAP est un autre protocole utilisé pour recevoir un e-mail.

Le protocole POP3 rapatrie généralement le courrier depuis le serveur vers le client de messagerie, permettant alors à un utilisateur de consulter ses e-mails en mode hors ligne (c’est-à-dire sans connexion internet). Une fois rapatriés, les e-mails disparaissent du serveur. Ainsi, lorsque un e-mail est rapatrié par un client de messagerie A, il ne sera pas possible par la suite de le rapatrier via un client de messagerie B.

Le protocole IMAP, quant à lui, permet de consulter les e-mails directement sur le serveur. Il permet alors de synchroniser plusieurs clients de messagerie. Ce protocole offre des fonctions que n’offre pas le protocole POP3, comme par exemple la possibilité de créer des dossiers afin de trier son courrier. Le protocole IMAP est d’ailleurs souvent utilisé dans les webmails.

MUA

MUA est l’acronyme anglais de Mail User Agent. Une traduction française pourrait être Client Messagerie. En effet, derrière ces mots barbares se trouve en réalité un logiciel que la plupart d’entre vous utilisent tous les jours ou presque.

Voici quelques noms de MUA parmi les plus connus :

  • Windows (Live) Mail ;
  • Thunderbird ;
  • Outlook (Express) ;
  • Kmail ;
  • Incredimail ;

Mais un MUA ne se présente pas uniquement sous la forme d’un logiciel installé sur la machine d’un utilisateur. Il peut également prendre la forme d’un Webmail. Pour ceux qui l’ignorent, un Webmail est une interface web permettant de consulter, envoyer ou supprimer des e-mails directement via son navigateur web.

Voici quelques noms de Webmail parmi les plus connus :

  • Gmail ;
  • Voila ;
  • Windows Live Hotmail ;
  • tous les webmails des différents fournisseurs d’accès à Internet (Orange, Free, etc.) ;

MTA

MTA est l’acronyme anglais de Mail Transfert Agent. Il s’agit d’un serveur SMTP qui a pour objectif de transférer l’e-mail en cours d’envoi au serveur de messagerie du destinataire.

MDA

MDA est l’acronyme anglais de Mail Delivery Agent. Il s’agit d’un serveur POP3 ou IMAP qui a pour objectif de remettre l’e-mail reçu à son destinataire.

Cycle de vie d’un e-mail (2/2)

Maintenant que vous êtes familiers avec le vocabulaire, nous allons pouvoir détailler les 4 étapes de vie d’un e-mail.

Je vous redonne le schéma afin que tout le monde l’ait sous les yeux.

Étape 1

Grâce à son MUA (client de messagerie ou webmail), l’expéditeur rédige un e-mail, puis clique ensuite sur le bouton “envoyer”. Via le protocole SMTP, l’e-mail est alors confié à un MTA (serveur SMTP de l’expéditeur).

Étape 2

L’e-mail va alors subir un long voyage à travers l’internet. En effet, toujours via le protocole SMTP, c’est tout un tas de MTA qui vont le relayer jusqu’à ce qu’il arrive à bon port, à savoir un MDA (le serveur POP3 ou IMAP du destinataire).

Étape 3

Le destinataire clique alors sur le bouton “relever” de son MUA préféré (client de messagerie ou webmail). Une demande est alors faite auprès de son MDA afin de savoir s’il a reçu du courrier ou non. Cette demande se fait via le protocole POP3 ou IMAP suivant la configuration du MUA.

Étape 4

Dans le cas où un e-mail est sur le MDA, le serveur le transmet au MUA du destinataire afin que ce dernier puisse lire son e-mail. Cette dernière étape est une étape de réception, c’est pourquoi elle se fait via le protocole POP3 ou IMAP suivant la configuration du MUA du destinataire.

La bibliothèque libnet

Présentation

Au cours de cette partie, nous allons utiliser des modules issus de la bibliothèque libnet. Il s’agit de la bibliothèque qui couvre tout ce qui concerne le réseau (HTTP, DNS, etc.) en Perl. Elle va donc nous permettre, grâce à plusieurs fonctions et méthodes, d’interagir avec les serveurs auquel nous serons connectés, grâce à différentes des instructions.

Installation

Normalement, la bibliothèque libnet est installée par défaut avec votre version de Perl. Si pour une raison X ou Y, elle ne l’était pas, il est toujours possible de l’installer maintenant.

Installation sous Linux

Avant d’installer ce module, vous vous doutez bien qu’il va falloir le télécharger ! Pour ce faire, rendez-vous ici, puis téléchargez la dernière version disponible comme l’illustre la capture d’écran ci-dessous.

Un fois l’archive enregistrée sur votre ordinateur, ouvrez votre plus beau terminal et tapez successivement les commandes suivantes :

tar -xzvf libnet-xxx.tar.gz
cd libnet-xxx/
perl Makefile.PL
make
sudo make install

Installation sous Windows

Si vous utilisez Active Perl, ouvrez un terminal, puis tapez la commande suivante :

ppm

Vous devriez alors avoir une nouvelle ligne dans l’invite de commandes de la forme :

PPM>

Il vous suffit alors de lancer l’installation du module grâce à la commande :

install libnet

Maintenant que la bibliothèque libnet est installée, nous allons pouvoir passer à la suite !

Bien, maintenant que tout est compris, nous allons pouvoir attaquer la programmation en Perl.

Dans les prochains chapitres, toutes les commandes et manipulations seront expliquées. Cependant, si vous pensez encore avoir des soucis de compréhension, je vous conseille de relire ce premier chapitre.

Commentaires