Deliverability
Que sont les commandes SMTP et que devez-vous savoir à leur sujet ?
Pourquoi avons-nous besoin des commandes SMTP et à quoi servent-elles ? Nous utilisons les commandes SMTP (Simple Mail Transfer Protocol) pour communiquer avec les serveurs d’emails. Ces commandes sont essentielles pour initier et gérer le processus d’envoi d’emails. En exécutant des commandes comme « EHLO » (qui initie la connexion), « MAIL FROM » (qui indique l’adresse email de l’expéditeur), entre autres, nous pouvons indiquer aux serveurs d’emails comment traiter les emails que nous souhaitons envoyer. Sans ces commandes, le serveur d’emails ne saurait pas comment traiter et livrer nos messages.
Qu’est-ce que le SMTP ?
Avant même qu’un email n’arrive dans la boîte de réception, il se passe beaucoup de choses en coulisses. Tout commence par TLS (Transport Layer Security), qui intervient pour chiffrer la connexion et protéger vos données des regards indiscrets. Ensuite, le protocole SMTP prend le relais, définissant les règles de livraison de ce message. Chaque message comporte également un en-tête : en gros, le qui, quoi et quand de votre email. Vous voulez voir le processus en action ? Ouvrez votre ligne de commande. Avec quelques commandes SMTP, vous pouvez suivre l’intégralité du parcours, de l’expéditeur au serveur, et repérer les problèmes de délivrabilité avant même qu’ils ne surviennent.
Alors, qu’est-ce que le SMTP ? Le Simple Mail Transfer Protocol (SMTP) est simplement un ensemble de règles qui gère l’envoi, la réception et le relais des emails.
Voici comment cela fonctionne :
- La méthode SMTP établit une connexion entre votre client de messagerie (en tant qu’expéditeur) et votre serveur SMTP.
- Le serveur SMTP effectue une série de vérifications.
- Le serveur SMTP s’appuie sur le SMTP pour acheminer votre email au fournisseur de messagerie de votre destinataire, comme Microsoft Outlook ou Gmail.
- Ensuite, le SMTP coupe la connexion entre votre client de messagerie et le serveur SMTP.
Pour terminer le processus d’envoi et de réception d’emails, le client de messagerie de votre destinataire utilise l’IMAP (un autre protocole) pour télécharger les messages depuis le serveur d’emails IMAP de réception lorsque votre abonné décide de consulter ses emails. L’IMAP aide à gérer les emails afin que vos destinataires puissent interagir avec eux dans l’interface de leur messagerie.
Qu’est-ce que l’ESMTP ?
Tenez bon, juste un dernier acronyme avant de passer aux commandes. L’ESMTP (Extended Simple Mail Transfer Protocol) étend les capacités du SMTP pour permettre le partage de fichiers multimédias, tels que des images, des fichiers audio et des vidéos. L’ESMTP inclut des commandes supplémentaires offrant les fonctionnalités suivantes :
- L’authentification de l’expéditeur
- Le chiffrement des emails avec SSL
- L’ajout de fichiers multimédias en pièces jointes
- La limitation de la taille des emails selon les spécifications du serveur
- La transmission simultanée à plusieurs destinataires
Ci-dessous, nous allons passer en revue les commandes ESMTP et SMTP.
Qu’est-ce qu’une commande SMTP ?
Une commande SMTP est une instruction spécifique envoyée par un client de messagerie à un serveur d’emails qui lui indique quelle action effectuer : envoyer un message, spécifier un expéditeur ou un destinataire, ou démarrer une connexion sécurisée.
Ai-je vraiment besoin de connaître les commandes SMTP ?
Oui : si vous développez des emails, vous devez connaître les commandes SMTP. Mais si vous utilisez simplement un compte Gmail, vous pouvez probablement garder de l’espace de cerveau pour retenir des anecdotes sur Game of Thrones.
Les commandes SMTP sont utilisées dans un ordre particulier pour faciliter la communication entre deux serveurs afin de livrer un email. Voici quelques scénarios dans lesquels vous pourriez avoir besoin de connaître les commandes SMTP :
- Vous souhaitez configurer le SMTP sur votre ordinateur ou votre réseau
- Vous devez résoudre un problème avec votre service d’emailing
- Vous devez contacter votre serveur SMTP
- D’accord, c’est assez spécifique, mais que faire si vous souhaitez accéder à vos emails au beau milieu d’une session Telnet ? Telnet vous permet d’accéder virtuellement à un ordinateur et de mettre en place un accès bidirectionnel collaboratif à distance
- Également spécifique : vous essayez d’envoyer des emails depuis un shell Linux
- Vous souhaitez exécuter un test SMTP
Si l’un de ces cas d’utilisation vous semble familier, lisez la suite !
Considérez une session SMTP comme un dialogue entre votre client et un serveur SMTP. Vous envoyez des commandes avec des caractères alphabétiques et le serveur répond avec des codes numériques.
Vous vous demandez peut-être ce qu’est un client ? Les clients peuvent être votre client de messagerie, comme Gmail, qui émet des commandes en votre nom. Il peut également s’agir d’un terminal que vous utilisez pour émettre des commandes.
Généralement, les sessions SMTP suivent une séquence standard :
- Handshake : le client et le serveur établissent une connexion TCP (Transmission Control Protocol)
- Transfert d’email : le client transmet votre message email au serveur SMTP, et le serveur effectue des vérifications d’authentification
- Fin de session : le client et le serveur ferment la connexion TCP
Quelles sont les commandes SMTP essentielles ?
Maintenant que nous savons à quoi ressemble une session SMTP, passons en revue certaines commandes SMTP et ESMTP. Nous les avons répertoriées dans l’ordre dans lequel elles pourraient être utilisées:
- La commande HELO ou EHLO
- La commande AUTH
- La commande MAIL FROM
- La commande RCPT TO
- La commande DATA
- La commande BDAT
- La commande VRFY
- La commande RSET
- La commande QUIT
- La commande HELP
1. La commande HELO ou EHLO
La première commande que vous devez connaître est la commande HELO. HELO démarre la session SMTP et permet au client de saluer le serveur et de se présenter. La commande prend en argument le nom de domaine ou l’adresse IP du client SMTP, comme illustré ci-dessous.
HELO mailgun.net
La commande HELO est généralement considérée comme obsolète, mais les clients et mécanismes SMTP doivent la supporter comme solution de repli pour converser avec des implémentations plus anciennes.
Vous vous souvenez que nous avons dit plus haut que l’ESMTP étendait le SMTP ? À ce titre, l’ESMTP propose parfois des commandes différentes de celles du SMTP. EHLO est l’alternative ESMTP au HELO du SMTP pour les serveurs qui supportent l’ESMTP. Le serveur SMTP répondra avec un code d’erreur SMTP s’il ne supporte pas l’ESMTP. Dans ce cas, vous devrez recommencer tout le processus de handshake. Découvrez l’exemple de commande ESMTP ci-dessous.
EHLO mailgun.net
2. La commande AUTH
La commande AUTH est une commande ESMTP qui authentifie le client SMTP auprès du serveur SMTP. Elle peut prendre différents mots-clés selon le niveau de sécurité et la méthode de connexion : PLAIN, LOGIN et CRAM-MD5. Votre session est authentifiée lorsque le serveur fournit une réponse positive. Découvrez la commande AUTH ci-dessous.
AUTH CRAM-MD5
Apprenez-en plus sur Mots-clés de la commande AUTH .
3. La commande MAIL FROM
Après avoir initié le handshake client-serveur avec une commande HELO ou EHLO, vous pouvez utiliser la commande MAIL FROM pour lancer un transfert d’email. Plus précisément, vous (en tant qu’expéditeur) indiquez l’adresse email de l’expéditeur dans le champ « from ». La commande MAIL FROM prend l’adresse email « from » comme argument, comme illustré dans l’exemple de code SMTP ci-dessous.
MAIL FROM "test@mailgun.net"
4. La commande RCPT TO
Utilisez la commande RCPT TO pour spécifier le destinataire en tant qu’argument. Si vous avez plus d’un destinataire, utilisez RCPT TO pour spécifier chaque destinataire séparément. Découvrez l’exemple de commande RCPT TO ci-dessous.
RCPT TO "subscriber@recipientsinbox.com"
5. La commande DATA
La commande DATA permet à votre client SMTP de demander au serveur SMTP l’autorisation de transférer votre message email (les données). Une fois que le serveur a répondu avec un code 354 pour accorder l’autorisation, le client livre le contenu de votre email ligne par ligne. Utilisez une dernière ligne avec un point (« . ») pour terminer le transfert de données.
Découvrez l’exemple de commande DATA ci-dessous.
DATA
354 (server response code)
Date: Wed, 30 July 2022 06:04:34
From: test@mailgun.net
Subject: SMTP session tutorial
To: subscriber@recipientsinbox.com
Body text
.
6. La commande BDAT
La commande BDAT est la version ESMTP de la commande DATA qui transfère le contenu d’un email. BDAT prend deux arguments :
- La longueur du bloc de données (en octets)
- Un indicateur signalant la fin du bloc de données
Découvrez l’exemple de commande BDAT ci-dessous.
BDAT 67 LAST
To: subscriber@recipientsinbox.com
From: test@mailgun.net
Subject: SMTP session tutorial
250 Message OK, 67 octets received
BDAT est utilisée dans Microsoft Exchange Server.
7. La commande VRFY
Exécutez la commande VRFY pour demander au serveur de confirmer qu’un nom d’utilisateur ou une messagerie en particulier existe sur le localhost. Notez que certains serveurs d’emails SMTP ignorent la commande VRFY car il peut s’agir d’une faille de sécurité que les hackers exploitent pour récupérer des adresses email. Jetez un œil à l’exemple de commande VRFY ci-dessous.
VRFY user2
250 Jada Jonesjadaj@mailgun.net
8. La commande RSET
Vous souhaitez réinitialiser votre connexion SMTP à son état initial sans couper votre connexion ? Utilisez la commande RSET. Cette commande ne prend aucun argument. Découvrez l’exemple de commande ci-dessous.
RSET
9. La commande QUIT
D’accord, disons que vous avez terminé votre session SMTP. Vous souhaitez effacer les données et terminer votre session. Utilisez simplement la commande QUIT. Une fois que le serveur a répondu avec un code 221, votre client fermera la connexion. Découvrez l’exemple de commande QUIT ci-dessous.
QUIT
10. La commande HELP
C’est probablement la commande la plus utile. Vous avez besoin d’aide mais vous ne savez pas vers qui vous tourner ? Essayez d’abord la commande HELP. Cette commande affiche une liste de commandes possibles supportées par le serveur SMTP. Vous pouvez fournir des commandes spécifiques comme argument à la commande HELP pour obtenir de l’aide sur ces commandes. Découvrez l’exemple de commande HELP ci-dessous.
HELP
Que sont les codes de réponse SMTP ?
Si les commandes SMTP vous permettent de communiquer avec un serveur SMTP via un client de messagerie, comment le serveur SMTP s’adresse-t-il à vous ? C’est simple : grâce aux codes de réponse SMTP.
Les codes de réponse SMTP sont des séquences numériques à trois chiffres. Chaque chiffre vous indique quelque chose de différent. Prenez par exemple un code de réponse 250 :
- Le premier chiffre (« 2 ») indique si votre commande était valide, invalide ou incomplète
- Le deuxième chiffre (« 5 ») vous indique quel type de réponse a été envoyé
- Le troisième chiffre (« 0 ») fournit des informations supplémentaires sur votre commande
Comme vous pouvez l’imaginer, le premier chiffre est le plus important car il vous donne une idée de la réussite ou non de votre commande. Consultez le tableau suivant tiré du RFC 5321 (Simple Mail Transfer Protocol) qui explique la signification des différents premiers chiffres :
| Code de réponse | Signification |
|---|---|
| 2.y.z | La commande envoyée a été exécutée avec succès sur le serveur distant. Le serveur distant est prêt pour la prochaine commande. |
| 3.y.z | La commande a été acceptée, mais le serveur distant a besoin d’informations supplémentaires avant de pouvoir terminer l’opération. Le serveur d’envoi doit envoyer une nouvelle commande avec les informations nécessaires. |
| 4.y.z | La commande n’a pas été acceptée par le serveur distant pour une raison qui pourrait être temporaire. Le serveur d’envoi devrait essayer de se reconnecter plus tard pour voir si le serveur distant peut accepter la commande avec succès. Le serveur d’envoi continuera de réessayer la connexion jusqu’à ce qu’une connexion réussie soit établie (indiquée par un code 2.y.z) ou échoue de façon permanente (indiquée par un code 5.y.z). Un manque d’espace de stockage sur le serveur distant est un exemple d’erreur SMTP temporaire. Une fois que plus d’espace sera disponible, le serveur distant devrait être en mesure d’accepter la commande avec succès. |
| 5.y.z | La commande n’a pas été acceptée par le serveur distant pour une raison irrécupérable. Le serveur d’envoi ne réessaiera pas la connexion et enverra un rapport de non-livraison à l’utilisateur qui a envoyé le message. Un message envoyé à une adresse email inexistante est un exemple d’erreur irrécupérable. |
Conclusion
Et c’est tout ! Nous le savons, des informations très légères et faciles à assimiler. Que vous recherchiez une solution de serveur SMTP pour propulser l’envoi de vos emails, ou si vous cherchez des détails sur le port SMTP à utiliser (25 ? 587 ? 2525 ?), Mailgun a ce qu’il vous faut.
Comme toujours, n’hésitez pas à nous contacter. Laissez-nous vous aider à commencer vos envois dès aujourd’hui.
Comment doit se dérouler une session SMTP ?