====== Telnet - Envoyer un mail en ligne de commande ======
--- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2020/03/10 16:48//
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 : [[https://www.base64decode.org/|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 ''ESMTP'' pré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 commande ''HELO'' alors que les plus récent (ou ceux qui supporte le mode étendu) répondent via la commande ''EHLO''. 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 ''STARTTLS'' comme modèle de séécurité.
* Il existe bien d'autres caractéristiques qui varie selon les serveurs de messagerie.
L'étape d'authentification n'est nécessaire que si le serveur en fait la demande. Dans le cas contraire, on peut directement passer à la séquence de rédaction du mail.
* Vu que le serveur exige une authentification, on utilise la commande ''AUTH LOGIN'' pour 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.
C'est ici que commence la rédaction du mail.
* 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ées'' du 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/ou ''Subject:'' pour indiquer le sujet du mail. Comme la touche ''Entrée'' renvoie à 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 :
|< 100% 20% 80% >|
^ 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. |
~~DISCUSSION~~