:.     Home     .:.     Cours     .:.     Faits divers     .:.     Blagues     .:.     Liens     .:.     Perso     .:

 

Commandes POP3, IMAP,
et SMTP

 

Les deux protocoles POP (Post Office Protocol) et IMAP (Internet Mail Access Protocol) permettent à des machines clientes d’interagir avec des serveurs de messagerie pour la manipulation des boîtes emails (consultation, suppression, rangement,…). SMTP (Simple Mail Transfer Protocol) quant à lui, est au cœur de la messagerie Internet, c’est le protocole qui permet l’échange d’emails sur l’Internet.

Ce petit document décrit un peu comment tester en ligne de commande ces différents protocoles.

Nous supposons par la suite que POP3 et IMAP sont installés et correctement configurés sur la machine mail.yerbynet.com. Tous les exemples se rapporteront à cette machine.


1. POP3 :

Pour accéder au service, tapez : telnet <IPdevotreserver> 110

$> telnet mail.yerbynet.com 110 // Connexion au serveur POP3

--> user roger   // L’utilisateur est roger

--> pass monmotdepasse   // spécifier le mot de passe de roger

--> list   // Liste des messages

--> retr 1   // Lire le 1er message

--> dele 5   // effacer le 5è message

--> quit   // Pour quitter

Vous pourrez ainsi tester votre serveur POP3 afin de savoir s’il fonctionne correctement.

Avec POP3, on ne peut que lister, lire et supprimer les courriels.


3. IMAP :


Commencez par la commande :

$> telnet mail.yerbynet.com 143

Toutes les commandes sont à préfixer par un tag, reproduit dans la réponse du serveur, c’est à dire qu’on ne tape pas directement la commande, mais on la préfixe d’un petit mot ou même d’une seule lettre :

--> 1 <CommandeIMAP>
--> tag <CommandeIMAP>

Donc, le tag suivi de la commande.

Il faut s’authentifier au système :

--> 1 login roger monmotdepasse // s’authentifier
1 OK LOGIN Ok.
 // Réponse du serveur
--> 2 list "" *  // Voir la liste de tous les dossiers de roger
* LIST (\HasNoChildren) "." "INBOX.Motorola"  // Réponse du serveur
* LIST (\HasNoChildren) "." "INBOX.Thiome"
* LIST (\HasNoChildren) "." "INBOX.Linux-Afrique"
* LIST (\HasNoChildren) "." "INBOX.Info"
* LIST (\Marked \HasChildren) "." "INBOX"
* LIST (\HasNoChildren) "." "INBOX.VSAT"
2 OK LIST completed

-- > 3 select inbox // selection de inbox
* FLAGS (\Draft \Answered \Flagged \Deleted \Seen \Recent)
* OK [PERMANENTFLAGS (\* \Draft \Answered \Flagged \Deleted \Seen)] Limited
* 112 EXISTS
* 0 RECENT
* OK [UIDVALIDITY 1106497482] Ok
* OK [MYRIGHTS "acdilrsw"] ACL
3 OK [READ-WRITE] Ok

--> 4 select inbox.Info // Pour sélectionner le dossier Info
* FLAGS (\Draft \Answered \Flagged \Deleted \Seen \Recent)
* OK [PERMANENTFLAGS (\* \Draft \Answered \Flagged \Deleted \Seen)] Limited
* 144 EXISTS
* 0 RECENT
* OK [UIDVALIDITY 1109342208] Ok
* OK [MYRIGHTS "acdilrsw"] ACL
4 OK [READ-WRITE] Ok

--> 5 create inbox.Test // Pour créer le dossier Test
5 OK "inbox.Test" created.
--> 6 rename inbox.Test inbox.test1 // Renommer un dossier
6 OK Folder renamed.
--> 7 delete inbox.test1 // Pour supprimer un dossier
7 OK Folder deleted.
--> 8 select inbox.Info // Sélection de Info
* FLAGS (\Draft \Answered \Flagged \Deleted \Seen \Recent)
* OK [PERMANENTFLAGS (\* \Draft \Answered \Flagged \Deleted \Seen)] Limited
* 152 EXISTS
* 0 RECENT
* OK [UIDVALIDITY 1109342208] Ok
* OK [MYRIGHTS "acdilrsw"] ACL
8 OK [READ-WRITE] Ok

--> 9 expunge   // supprimer définitivement les messages marquer deleted
--> 1 UID FETCH 1:* RFC822.SIZE   // Lister les messages
--> 2 UID FETCH 208 BODY[]   // Lire le message dont l’uid est 208
--> 3 logout   // Se déconnecter


3. SMTP :


Le numéro de port utilisé pour le protocole SMTP est 25.

Donc, pour se connecter en SMTP sur le serveur mail.yerbynet.com, il faut faire :

$> telnet mail.yerbynet.com 25

Le serveur vous donnera une réponse de ce genre (pas toujours pareil) :

220 mx1.yerbynet.com ESMTP Exim 4.92 Fri, 05 Apr 2019 10:57:33 +0000

Vous pourrez alors passer vos commandes SMTP :

--> ehlo roger-port.yerbynet.com   // Envoi de helo, pas toujours obligatoire

Ensuite, nous allons essayer d’envoyer un message.

--> mail from : <roger@yerbynet.com> // sender

--> rcpt to : <test@gmail.com> // recepteur

--> data // Entrer votre message

--> Subject: Test en ligne de commande

--> From: roger@yerbynet.com  //sender qui va apparaître au niveau du client de messagerie du récepteur 

--> To: test@gmail.com // recepteur qui va apparaître au niveau du client de messagerie du récepteur

[ Écrire votre message. Tout ce que vous voulez. Il faut juste terminer par une ligne qui ne contient que le caractère .]

Après avoir validé la commande data, vous pouvez entrer votre message. Pour finir le message, allez sur une nouvelle ligne, tapez la touche ‘.’, et validez.

Pour quitter, faîtes quit.


4. ESMTP avec STARTTLS:


Le numéro de port utilisé sera le port 25.

Donc, pour se connecter en SMTP sur le serveur mail.yerbynet.com, il faut faire :

$> openssl s_client  -starttls smtp -connect mail.yerbynet.com:25

Le serveur vous donnera une longue réponse qui se termine par quelque chose de ce genre :

---
250 HELP

Saisissez le mot HELP si vous avez besoin d'aide, sinon vous pourrez passer vos commandes SMTP  :

Tous les EHLO ont déjà été envoyés ainsi que le STARTTLS, il faut passer à la suite :

--> mail from : <roger@yerbynet.com> // sender

--> rcpt to : <test@gmail.com> // recepteur

--> data // Entrer votre message

--> Subject: Test en ligne de commande

--> From: roger@yerbynet.com  //sender qui va apparaître au niveau du client de messagerie du récepteur 

--> To: test@gmail.com // recepteur qui va apparaître au niveau du client de messagerie du récepteur

[ Écrire votre message. Tout ce que vous voulez. Il faut juste terminer par une ligne qui ne contient que le caractère .]

Après avoir validé la commande data, vous pouvez entrer votre message. Pour finir le message, allez sur une nouvelle ligne, tapez la lettre ‘.’, et validez.

Pour quitter, faîtes quit.

Ce qui change par rapport au SMTP sans STARTTLS, c'est la commande utilisée pour se connecter au port 25 qui nous lance du même coup le STARTTLS.

On aurait pu difficielement le faire avec la commande telnet puisque après l'envoi du STARTTLS, les échanges sont chiffrés.


5. ESMTP avec STARTTLS + Authentification :


Le numéro de port utilisé sera le port 587 (généralement, c'est le port utilisé - submission port).

C'est le port utilisé pour soumettre du courriel. Essentiellement utilisé entre client et serveur, et non entre serveurs (comme c'est le cas pour le port 25).

Donc, pour se connecter en SMTP sur le serveur mail.yerbynet.com, il faut faire :

$> openssl s_client  -starttls smtp -connect mail.yerbynet.com:587

Le serveur vous donnera une longue réponse qui se termine par quelque chose de ce genre :

---
250 HELP

Vous aurez besoin pour cet exercice d'un outil qui puisse coder du texte en base64.

À l'air de la webisation de l'Internet et des grands réseaux sociaux, on peut se permettre d'utiliser quelque chose en ligne du genre : https://www.base64encode.org/ ou https://www.base64decode.net/

Sinon, la commande base64 existe sous Linux : echo 'texte à coder' | base64

L'authentification, avec LOGIN ou PLAINTEXT, ca ne comprend/parle que du base64.

Tous les EHLO et STARTTLS ayant déjà été passés, on va passer à l'authentification, puis à l'envoi du message :

---
250 HELP
--> AUTH LOGIN  // Pour entrer dans le process d'authentification
334 VXNlcm5hbWU6  // Ca signifie Username: en base64 -- il faut entrer le username
--> cm9nZXI= // Username = roger
334 UGFzc3dvcmQ6 // Il demande le Password:
--> IG1vbm1vdGRlcGFzc2U=  //Je lui donne mon mot de passe
235 2.0.0 OK Authenticated

--> mail from : <roger@yerbynet.com> // sender

--> rcpt to : <test@gmail.com> // recepteur

--> data // Entrer votre message

--> Subject: Test en ligne de commande

--> From: roger@yerbynet.com  //sender qui va apparaître au niveau du client de messagerie du récepteur 

--> To: test@gmail.com // recepteur qui va apparaître au niveau du client de messagerie du récepteur

[ Écrire votre message. Tout ce que vous voulez. Il faut juste terminer par une ligne qui ne contient que le caractère .]

 

Sources  :

https://serversmtp.com/smtp-commands/
https://docs.microsoft.com/en-us/exchange/mail-flow/test-smtp-with-telnet
https://www.mailboxvalidator.com/resources/articles/smtp-commands-rfc/
https://www.samlogic.net/articles/smtp-commands-reference.htm

 


Ce n'est plus de la simple information, mais de la connaissance. Partageons la.

© Septembre 2019
Roger YERBANGA
www.yerbynet.com