Main menu:

Site search

Categories

janvier 2011
L M M J V S D
 12
3456789
10111213141516
17181920212223
24252627282930
31  

Archive

Utiliser telnet pour recevoir ou envoyer un mail

Il est parfois intéressant et plus rapide, pour tester ou débugger un serveur de mail, d’utiliser telnet. Telnet permet de se connecter simplement au serveur plutôt que de configurer un client mail comme Thunderbird ou Evolution, ce qui peut être fastidieux et long. De plus, utiliser telnet pour des tests simples permet aussi de voir les éventuels messages d’erreurs envoyés par le serveur en réponse aux requètes. Ces messages d’erreurs sont en général cachés par les clients mails plus complets auxquels ils substituent leurs propres messages.

Pour se connecter en telnet sur un serveur de mail, il suffit de substituer au port 23 par défaut de telnet, le port utilisé par le serveur. Le serveur SMTP (Simple Mail Transfer Protocol) qui sert lors de l’envoi d’un mail utilise le port 25. Le serveur POP3 (Post Office Protocol) sert pour la réception des mails et utilise le port 110.

SMTP

La commande pour se connecter en telnet sur un serveur SMTP d’envoi de mails est:

$ telnet le_serveur 25

Remplacez le_serveur par votre serveur de mail sortant. Il peut arriver que certains serveurs utilisent un autre port que le 25.
Les commandes de base du protocole SMTP sont les suivantes:

  • HELO ou EHLO qui permet de se présenter au serveur
  • MAIL FROM: suivi de l’adresse email se celui qui envoie le mail
  • RCPT TO: suivi de l’adresse email du destinataire. Vous pouvez faire plusieurs commandes RCPT TO: dans le cas où vous désirez envoyer votre mail à plusieurs adresses.
    DATA le corps du mail proprement dit. Celui-ci doit se terminer par un retour charriot suivi d’un ‘.’ en début de ligne puis d’un nouveau retour charriot. Cette séquence indique au serveur que le mail est terminé. Vous pouvez débuter votre mail par le mot Subject: suivi du titre de votre message et d’un retour charriot. Cela indiquera au serveur que vous voulez utiliser ce titre comme sujet de votre message. D’autres entêtes peuvent, à l’instar du titre, être ajoutées au corps du mail. Il s’agit de Date:, Cc:, Bcc:, From: .
  • QUIT fin de la transaction avec le serveur. Ceci coupe la liaison au serveur.

Voici un exemple. Notez les réponses du serveur entre chaque commande:

$ telnet mail.voo.be 25
Trying 212.68.193.11...
Connected to mrouterout.brutele.be.
Escape character is '^]'.
220 mirapoint3.brutele.be ESMTP Mirapoint 4.1.10-GA; Fri, 28 Jan 2011 21:17:12 +0100
HELO pp575.leunen.com
250 mirapoint3.brutele.be Hello [109.89.20.119], pleased to meet you
MAIL FROM: bill.gates@microsoft.com
250 bill.gates@microsoft.com... Sender ok
RCPT TO: michel@leunen.com
250 michel@leunen.com... Recipient ok
DATA
354 Enter mail, end with "." on a line by itself
Subject: We need you
Hi michel,
do you want to work fo Microsoft?
We have an offer for you.
.
250 ABQ82982 Message accepted for delivery
QUIT
221 mirapoint3.brutele.be closing connection

En majuscule, ce sont les commandes SMTP et entre chaque commande vous pouvez voir la réponse du serveur qui commence toujours par un numéro.

POP3

Pour se connecter en telnet sur un serveur POP3, la commande est

$ telnet le_serveur 110

Remplacez le_serveur par votre serveur de mail entrant.
Les commandes principales du protocole POP3 sont:

  • USER Indique au serveur le nom d’utilisateur du compte mail.
  • PASS Mot de passe du compte mail
  • STAT Demande au serveur le nombre de mail présents dans la mailbox ( INBOX). La réponse est du type +OK nombre_de_mesages nombre_de_bytes
  • LIST Donne le nombre de messages dans la mailbox et le poids en bytes de chaque message.
  • RETR index_du_message Télécharge le message dont le numéro d’index est spécifié en argument. Le numéro d’index est donné par la commande LIST. Cette commande ne supprime pas le message du serveur.
  • TOP index_du_message nombre_de_lignes Affiche les x premières lignes du message dont l’index est donné en argument.
  • DELE index_du_message Supprime le message dont le numéro d’index est spécifié en argument.
  • QUIT Coupe la liaison et termine la transaction.

Exemple de transaction avec le serveur POP3:

 
$ telnet mail.leunen.com 110
Trying 84.16.68.123...
Connected to mail.infomaniak.ch.
Escape character is '^]'.
+OK POP3 Ready mdaproxy5 0001e9d5
USER michel
+OK USER michel set, mate
PASS **********
+OK You are so in
LIST
+OK 0 messages:
.
QUIT
+OK Logging out.

IMAP

Il existe un troisième protocole utilisé pour se connecter à une boîte mail. Il s’agit du protocole IMAP (Internet Message Access Protocol). Celui-ci utilise le port 143. La syntaxe est un peu plus compliquée qu’avec un serveur POP ou SMTP parce qu’il peut gérer plusieurs accès simultanés ainsi que plusieurs boîtes mail.
Je n’en donne pas d’exemple pour deux raisons: la première parce que je n’ai pas accès à un serveur IMAP pour tester les commandes et la seconde c’est qu’il est plus utilisé dans le domaine professionnelmais que pour le commun des utilisateurs Linux, qui utilise la boîte mail fournie avec son abonnement à un FAI, il s’agit dans la majorité des cas d’uun accès SMTP et POP3.

Comments

Comment from Yann
Time: 30 janvier 2011, 18 h 45 min

imap peu utilisé ? gmail, free & masses utilise (enfin) IMAP ! 😉

bon donc :

$ telnet mail.verry.org 143
Trying 10.8.42.26…
Connected to kiwi.verry.org.
Escape character is ‘^]’.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] System ready.

1 login yann mygoodpassword

1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH] Logged in

1 select inbox

* FLAGS (\Answered \Flagged \Deleted \Seen \Draft Old NonJunk $MDNSent $Forwarded receipt-handled)
* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft Old NonJunk $MDNSent $Forwarded receipt-handled \*)] Flags permitted.
* 20 EXISTS
* 0 RECENT

1 OK [READ-WRITE] Select completed.

Ensuite on fetch le mail par numéro genre : 1 fetch 1 full
puis logout

1 logout

* BYE Logging out
1 OK Logout completed.

Ah oui, astuce pour le SSL openssl s_client -connect mail.verry.org:993

😉

Comment from Michel Leunen
Time: 30 janvier 2011, 19 h 00 min

Merci Yann.
Oui, j’avais oublié que Gmail utiilisait proposait l’imap aussi. J’aurais pu tester et donner un exemple. Merci pour le tiens.