Ceci est une ancienne révision du document !
~~CLOSETOC~~
Telnet - Envoyer un mail en ligne de commande
Même s'il s'agit d'une ancienne technologie, telnet reste un standard dans la communication avec une machine et notamment avec les serveurs SMTP.
- Chiffrement/Déchiffrement Base64 : Base64 Decode and Encode - Online
Procédure
Pour envoyer un mail directement en ligne de commande :
- On se connecte au serveur de messagerie (indiqué ici par smtp.shyrka.sys) en spécifiant le port utilisé (ici, on utilisera le port par défaut soit 25).
# Commande telnet smtp.shyrka.sys 25 # Réponse Trying a.b.c.d... Connected to smtp.shyrka.sys. Escape character is '^]'. 220 smtp.shyrka.sys ESMTP
- Ici, le retour
ESMTPprécise que le serveur accepte le mode étendu du SMTP. - On se présente auprès du serveur
SMTP. Les anciens serveurs (ou les moins complexes) répondent via la commandeHELOalors que les plus récent (ou ceux qui supporte le mode étendu) répondent via la commandeEHLO. On fera suivre la commande par le nom du serveur de messagerie du client (ici, on utilisera serveur.domaine.tld) :
# Commande EHLO serveur.domaine.tld # Réponse 250-serveur.domaine.tld Hello [e.f.g.h] 250-SIZE 26214400 250-PIPELINING 250-AUTH PLAIN LOGIN 250-STARTTLS
- Le serveur répond en annonçant ces caractéristiques :
- SIZE : Indique la taille maximale des mails en octet (soit 25Mo dans cette exemple).
- PIPELINING : Indique que le serveur accepte des entrée en provenance du pipeline.
- AUTH PLAIN LOGIN : Indique la nécessité de s'authentifier pour utiliser les services.
- STARTTLS : Indique que le serveur utilise
STARTTLScomme modèle de séécurité. - Il existe bien d'autres caractéristiques qui varie selon les serveurs de messagerie.
<note tip>L'étape d'authentification n'est nécessaire que si le serveur en fait la demende. Dans le cas contraire, on peut directement passer à la séquence de rédaction du mail.</note>
- Vu que le serveur exige une authentification, on utilise la commande
AUTH LOGINpour s'authentifier :
# Commande AUTH LOGIN # Réponse 334 VXNlcm5hbWU6
- La réponse du serveur est tout simplement
Username:en Base64. Il s'agit de l'utilisateur autorisé à se connecter. La réponse doit elle aussi être donnée en Base64 d'où le lien vers le site de chiffrement :
# Commande TW9uIGxvZ2lu # Réponse 334 UGFzc3dvcmQ6
- Là, la réponse est
Password:en Base64. On rentre donc le mot de passe, lui aussi en Base64 :
# Commande UEBzc3cwcmQ= # Réponse 235 Authentication succeeded
- Le serveur nous a clairement identifié. On va pouvoir envoyer un mail en ligne de commande.
<note>C'est ici que commence la rédaction du mail.</note>
- On commence par indiquer l'expéditeur. Il doit s'agir d'une adresse mail du serveur de messagerie client :
# Commande MAIL FROM: test@domaine.tld # Réponse 250 ok
- On indique après le destinataire. Là, c'est une adresse du serveur de messagerie sur lequel on est connecté :
# Commande RCPT TO: test@shyrka.sys # Réponse 250 ok
- Ensuite, on entre dans la partie
donnéesdu mail :
# Commande DATA # Réponse 354 go ahead
- Là, on peut écrire notre message en texte brut (on oublie le HTML à ce niveau). On peut précéder le message par la balise
Reply-to:pour indiquer l'adresse de réponse et/ouSubject:pour indiquer le sujet du mail. Comme la toucheEntréerenvoie à la ligne, on termine le mail et on active son traitement en entrant un., seul la dernière ligne :
# Commande Reply-to: fulltest@domaine.tld Subject: Message de test Ceci est un message de test. Voilà un exemple de retour à la ligne. . # Réponse 250 ok
- Il ne nous reste plus qu'à quitter
telnet:
# Commande QUIT # Réponse 221 serveur.domaine.tld Connection closed by foreign host
Au final, la communication telnet ressemble à ça :
telnet smtp.shyrka.sys 25 Trying a.b.c.d... Connected to smtp.shyrka.sys. Escape character is '^]'. 220 smtp.shyrka.sys ESMTP EHLO serveur.domaine.tld 250-serveur.domaine.tld Hello [e.f.g.h] 250-SIZE 26214400 250-PIPELINING 250-AUTH PLAIN LOGIN 250-STARTTLS AUTH LOGIN 334 VXNlcm5hbWU6 TW9uIGxvZ2lu 334 UGFzc3dvcmQ6 UEBzc3cwcmQ= 235 Authentication succeeded MAIL FROM: test@domaine.tld 250 ok RCPT TO: test@shyrka.sys 250 ok DATA 354 go ahead Reply-to: fulltest@domaine.tld Subject: Message de test Ceci est un message de test. Voilà un exemple de retour à la ligne. . 250 ok QUIT 221 serveur.domaine.tld Connection closed by foreign host
Principaux codes de retour
Même si les commentaires suivants les codes de retour peuvent être modifiés par la configuration du serveur SMTP, les codes, eux, sont standardisés. Voici les principaux :
| Code | Signification |
|---|---|
| 220 | Connexion réussie. |
| 221 | Fin de la connexion. |
| 235 | Authentification réussie. |
| 250 | Commande acceptée. |
| 334 | Attente de réponse de la part du serveur. |
| 354 | En attente des données. |
| 421 | Échec temporaire de la connexion. Il s'agit d'un problème technique générale au niveau du serveur SMTP. |
| 452 | Échec temporaire concernant les destinataires. La liste des destinataires indiquées dépassent la capacité de traitement du serveur. |
| 535 | Authentification échouée. |
| 550 | Échec permanent. La boîte mail n'existe pas/plus ou et invalide. |
| 554 | Échec permanent. Le serveur client est blacklisté par le serveur hôte. |
— Nicolas THOREZ 2020/03/10 16:48
Discussion