Rechercher dans ce blog

mercredi 20 juin 2007

TELNET - Lire et poster le courrier

Ce document traite sommairement de la manière de lire son courrier sur un serveur POP3 et de poster sur un serveur SMTP. Accessoirement, l'on y trouvera la méthode pour enlever sans le charger un message comportant en pièce jointe la dernière version du kernel Linux (TM) envoyé par un courageux anonyme et pure méchanceté.

Références
Lire son courrier
Effacer un message encombrant
Poster un message
Peut-on lire et poster avec autre chose que telnet ?
Remerciements

Références

Le lecteur sera bien inspiré de commencer par lire la documentation AVANT de commencer à poster.
Les RFC sont disponibles aux endroits habituels (par exemple ftp://ftp.lip6.fr/pub/rfc/rfc) et les "drafts" (brouillons) des sus-dits RFC juste à côté (ftp://ftp.lip6.fr/pub/rfc/internet-drafts).

  • RFC1939 Post Office Protocol - Version 3. J. Myers & M. Rose. May 1996. (Format: TXT=47018 bytes) (Obsoletes RFC1725) (Updated by RFC1957, RFC2449) (Also STD0053) (Status: STANDARD) rfc1939.zip
  • RFC1957 Some Observations on Implementations of the Post Office Protocol (POP3). R. Nelson. June 1996. (Format: TXT=2325 bytes) (Updates RFC1939) (Status: INFORMATIONAL)
  • RFC2449 POP3 Extension Mechanism. R. Gellens, C. Newman, L. Lundblade. November 1998. (Format: TXT=36017 bytes) (Updates RFC1939) (Status: PROPOSED STANDARD)
  • RFC0821 Simple Mail Transfer Protocol. J. Postel. Aug-01-1982. (Format: TXT=124482 bytes) (Obsoletes RFC0788) (Also STD0010) (Status: STANDARD) rfc821.zip
  • RFC2505 Anti-Spam Recommendations for SMTP MTAs. G. Lindberg. February 1999. (Format: TXT=53597 bytes) (Also BCP0030) (Status: BEST CURRENT PRACTICE)

Lire son courrier

La connexion au serveur se fait sur le port 11O (POP3) :

telnet pop3.chez.mon.fai pop3
Trying 192.168.1.1...
Connected to pop3.chez.mon.fai.
Escape character is '^]'.
+OK pop3.chez.mon.fai POP3 Server (Version 1.006d) ready at <Sun Feb 27 10:13:32 2000>
user toto
+OK please send PASS command
pass R5fg6Yh9
+OK 2 messages ready for toto
stat
+OK 2 1558
list
+OK 2 messages; msg# and size (in octets) for undeleted messages:
1 780
2 778
.
list 2
2 778

Bon, là on vient de voir comment se connecter (USR et PASS), comment avoir le total des messages (STAT) et quelques détails (LIST avec ou sans le numéro du message).

Maintenant lisons le courrier :

RETR 1
+OK message 1 (780 octets):
Return-Path: <titi@chez.lui>
Received: from [blabla chemin suivi par le message]
From: titi@chez.lui <Gros Titi>
To: toto@chez.mon.fai
Subject: Bonjour
Date: : Thu, 17 Feb 2000 21:38:05 +0100
Message-ID: <123456789.abcdefgh@mail.chez.lui>
 
blabla
blabla
 
.

Et si le message est trop long ?
Demandons à n'afficher que les 5 premières lignes du message numéro 2 :

top 2 5
[les en-têtes + la ligne blanche + les 5 premières lignes qui suivent]

Si le message est long, faire top 5 puis top 25 puis top 45 etc.

Et l'on quitte proprement (les messages lus restent dans la boîte aux lettres) :

quit
+OK pop3.chez.mon.fai POP3 Server (Version 1.006d) shutdown.
Connection closed by foreign host.

Effacer un message encombrant

Avec votre client mail habituel, le temps de chargement du courrier est excessivement long. Vous avez donc décidé d'aller voir avec telnet (se connecter comme indiqué ci-dessus) :

+OK 4 messages ready for toto
stat
+OK 4 25536114
list
+OK 4 messages; msg# and size (in octets) for undeleted messages:
1 1821
2 1819
3 1125
4 25530249

On regarde le message 4 de plus près :

top 4 15
+OK message 4 (25530249 octets):
Return-Path: <anonyme@nowhere>
Received: from [blabla chemin (truqué) suivi par le message]
From: anonyme@nowhere <un ami>
To: toto@chez.mon.fai
Subject: gnac gnac
Date: : Thu, 17 Feb 2000 21:38:05 +0100
Message-ID: <666@hell.angels>
MIME-Version: 1.0
boundary="------------83029AF363701F0491305448"
Status: O
Content-Length: 25184118
Lines: 344997
 
This is a multi-part message in MIME format.
--------------83029AF363701F0491305448
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
 
Un cadeau de la part d'un neuneu
--------------83029AF363701F0491305448
Content-Type: application/x-gzip;
name="linux-2.3.45.tar.gz"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="linux-2.3.45.tar.gz"
 
H4sIAJxzpzgCA+w8aXfixrLz1foVHYbE4FgCvE0Gx3ODAY+5w3YAz2RePEcWkjCKtV0tXrK8
3/6qehGSQDa57yRvOeFYW1d3dXVVdXV1dbdty40fa6/+1F+9flR/c3wMz/pB/eAEn/XGEf0W
.

Bon, à vue de nez, c'est un cadeau d'un admirateur.
Pour effacer la chose :

dele 4
+OK message 4 marked for deletion
list
+OK 4 messages; msg# and size (in octets) for undeleted messages:
1 1821
2 1819
3 1125
.

L'effacement du message se fait après que l'on a quitté le serveur POP3 de façon normale par la commande quit.
Si l'on change d'avis avant de quitter, la commande RSET est bienvenue :

REST
+OK 4 messages ready for toto
list 4
+OK 4 25530249
dele 4
+OK message 4 marked for deletion
quit

Vous pouvez signaler les abus dans le groupe Usenet prévu à cet effet fr.usenet.abus.d.
Vous trouverez dans ce même groupe des pointeurs vers les documentations.

Poster un message

La connexion au serveur se fait sur le port 25 (SMTP) :

telnet smtp.chez.mon.fai. smtp
Trying 192.168.1.1...
Connected to smtp.chez.mon.fai.
Escape character is '^]'.
220 smtp.chez.mon.fai ESMTP Sendmail 8.9.3/8.9.3; Sun, 27 Feb 2000 15:58:15 +0100

L'on remarque tout de suite le ESMPT avec un "E" comme étendu : le serveur accepte le 8-bits.
Disons-lui bonjour en lui indiquent que nous aussi nous parlons le 8-bits couramment en répondant ehlo (s'il nous dit simplement SMTP nous répondrons HELO) suivi de notre nom de domaine. Le serveur n'est pas trop regardant sur la distinction majuscules / minuscules tant que l'on n'est pas dans les en-têtes ou dans le corps du message.

ehlo chez.mon.fai
250-smtp.chez.mon.fai Hello toto@ppp136.chez.mon.fai [192.168.1.2], pleased to meet you
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-ONEX
250-ETRN
250-XUSR
250 HELP

On commence par écrire l'enveloppe :

mail from: toto@chez.mon.fai
250 toto@chez.mon.fai... Sender ok
rcpt to: titi@chez.lui
titi@chez.lui... Recipient ok
data
354 Enter mail, end with "." on a line by itself

Notons au passage que vous pouvez poster a) chez votre fournisseur à destination de n'importe qui à partir de chez vous, ou b) parfois sur un serveur smtp quelconque à destination d'un des clients du dit serveur, mais pas c) sur n'importe quel serveur pour n'importe qui à partir de n'importe où (message du type 550 titi@hop.la... Relaying denied ; c'est bien fait, non mais, tous les serveurs ne sont pas mal configurés.)
Maintenant passons aux en-têtes - certains champs dont la date et le Message-ID seront rajoutés par le serveur SMTP - en faisant bien attention à la syntaxe (majuscule initiale, minuscule, pas d'espace avant ":" mais une espace après) puis au texte du message séparé par une ligne blanche. Tout ça se finit par une ligne ne comportant qu'un point ".", et l'on quite par la commande quit si l'on a fini.

From: toto@chez.mon.fai
To: titi@chez.lui
Subject: test (de veau)
 
blabla
blabla
.
250 WAA11355 Message accepted for delivery
quit
221 smtp.chez.mon.fai closing connection
Connection closed by foreign host.

Un certain nombre d'en-têtes sont classiquement reconnus par les logiciels de courrier, on aura par exemple :

Organization: bof
X-Mailer: Linux netkit-telnet 0.14

L'on évitera soigneusement de mettre des accents dans les en-têtes.

Finissons en disant que l'accès aux serveurs SMTP est encore moins sécurisé que celui aux serveurs POP3, il n'y a même pas de mot de passe...

Peut-on lire et écrire avec autre chose que telnet ?

Il semblerait que oui.
Éric Jacoboni, a publié un article intitulé Gérer son courrier avec Perl dans le numéro 8 de juillet/août 1999 de Linux Magazine France.
Mutt (http://www.mutt.org) semble un très bon choix en mode texte.

Remerciements

Nous remercions les auteurs de telnet, TCP/IP, Linux, BSD, Sendmail, Postfix, et de tous ces jolis logiciels et belles documentations, sans qui l'on ne passerait pas tant de temps à discuter de choses et d'autres plus ou moins utiles (mais ça ne fait pas de mal).

Dernière mise à jour le dimanche 27 février 2000

 

Aucun commentaire: