1 transfert de messages SMTP consultation et manipulation de boites aux lettres POP IMAP SMTP : Simple Mail Transfer Protocol 2 SMTP : Simple Mail Transfer Protocol RFC 821 L échange de courrier sous TCP est effectué par un agent de transfert de message (MTA) Le MTA le plus connu est Sendmail Le MTA est géré par l administrateur système Le protocole SMTP a été défini afin de standardiser les échanges entre deux MTA MUA (Mail User Agent) : client de messagerie (Outlook Express, Netscape, Eudora, etc ) MDA (Mail Delivery Agent) : service de remise du courrier dans les boîtes aux lettres des destinataires 3
4 STMP : Commandes Il existe cinq commandes SMTP pour envoyer du courrier : HELO, MAIL, RCPT, DATA, QUIT m a i l - v c a t e l o i n @ d p t - i n f o. u - s t r a s b g. f r S u b j e c t : S M T P E s s a i C o u c o u. C c : c a t e l o i n @ d p t - i n f o. u - s t r a s b g. f r... C o n n e c t i n g t o a m o n. u - s t r a s b g. f r. v i a e s m t p... 2 2 0 a m o n. u - s t r a s b g. f r E S M T P S e n d m a i l 8. 9. 3 + S u n / 8. 9. 0 ; M o n, 7 F e b 2 0 0 0 1 5 : 4 1 : 0 1 + 0 1 0 0 ( M E T ) > > > E H L O c l a r i n e t. u - s t r a s b g. f r 2 5 0 - a m o n. u - s t r a s b g. f r H e l l o c l a r i n e t. u - s t r a s b g. f r [ 1 3 0. 7 9. 7 5. 8 6 ], p l e a s e d t o m e e t y o u 2 5 0-8 B I T M I M E 2 5 0 - S I Z E 2 5 0 - D S N 2 5 0 - O N E X 2 5 0 - X U S R 2 5 0 H E L P > > > M A I L F r o m : < c a t e l o i n @ c l a r i n e t. u - s t r a s b g. f r > S I Z E = 6 0 2 5 0 < c a t e l o i n @ c l a r i n e t. u - s t r a s b g. f r >... S e n d e r o k > > > R C P T T o : < c a t e l o i n @ d p t - i n f o. u - s t r a s b g. f r > 2 5 0 < c a t e l o i n @ d p t - i n f o. u - s t r a s b g. f r >... R e c i p i e n t o k > > > D A T A 3 5 4 E n t e r m a i l, e n d w i t h ". " o n a l i n e b y i t s e l f > > >. 2 5 0 P A A 2 0 2 5 3 M e s s a g e a c c e p t e d f o r d e l i v e r y c a t e l o i n @ d p t - i n f o. u - s t r a s b g. f r... S e n t ( P A A 2 0 2 5 3 M e s s a g e a c c e p t e d f o r d e l i v e r y ) C l o s i n g c o n n e c t i o n t o a m o n. u - s t r a s b g. f r. > > > Q U I T 2 2 1 a m o n. u - s t r a s b g. f r c l o s i n g c o n n e c t i o n SMTP Le client effectue une ouverture active du port 25 Puis il attend un message de bienvenue (code réponse 220 du serveur avec le nom ) Le client s identifie avec la commande HELO La commande MAIL identifie l expéditeur originaire du message La commande RCPT identifie le destinataire Le contenu du message est envoyé en utilisant la commande DATA (la fin du message est spécifiée par le client en envoyant une ligne contenant juste un point) La commande QUIT termine l échange de courrier 5 SMTP : Enveloppes, En-tête, Corps Le courrier électronique est composé de trois parties L enveloppe qui est utilisée par le MTA pour l acheminement du courrier: MAIL From:<cateloin@clarinet.u-strasbg.fr> RCPT To:<cateloin@dpt-info.u-strasbg.fr> Les en-têtes utilisés par les agents utilisateurs From,To,Subject,X-Status,X-Keywords,X-UID, Le corps : le contenu du message 6
7 Exemple Return-Path: <cateloin@clarinet.u-strasbg.fr> Received: from ns1.u-strasbg.fr (ns1.u-strasbg.fr [130.79.200.1]) by dpt-info.u-strasbg.fr (8.12.3/8.12.3/Debian -4) with ESMTP id h239nkzs006000 (version=tlsv1/sslv3 cipher=edh-rsa-des-cbc3-sha bits=168 verify=no) for <cateloin@dpt-info.u-strasbg.fr>; Mon, 3 Mar 2003 10:23:46 +0100 Received: from clarinet.u-strasbg.fr (clarinet.u-strasbg.fr [130.79.90.157]) by ns1.u-strasbg.fr (8.12.3/jtpda-5.4) with ESMTP id h239njih051478 for <cateloin@dpt-info.u-strasbg.fr>; Mon, 3 Mar 2003 10:23:45 +0100 (CET) Received: by clarinet.u-strasbg.fr (Postfix, from userid 523) id 31DCF2B451; Mon, 3 Mar 2003 10:25:14 +0100 (CET) To: cateloin@dpt-info.u-strasbg.fr Subject: SMTP Essai Message-Id: <20030303092514.31DCF2B451@clarinet.u-strasbg.fr> Date: Mon, 3 Mar 2003 10:25:14 +0100 (CET) From: cateloin@clarinet.u-strasbg.fr (Stephane Cateloin) X-Antivirus: scanned by sophos at u-strasbg.fr Coucou En-tête Return-Path: adresse de réponse (ou bien renvoi au destinataire) Received: chaque MTA qui reçoit le message y inscrit le nom du MTA qui le lui a envoyé, ainsi que le sien. (tracage de la route des MTA). Message-ID: identifiant du message. Il est attribué par le premier MTA qui reçoit le message (Protocole ESMTP: Extended SMTP). From: adresse de l'expéditeur. (=Return-Path, sauf configuration différente du MUA de l'expéditeur). To: adresse du (ou des) destinataire(s) Subject: objet du message Date: date d'émission écrite par le MUA de l'émetteur MIME-Version: version du mode de codage des données. Content-Type:Type de codage utilisé. charset= Jeu de caractères utilisé. Content-Transfer-Encoding: Codage sur 7 ou 8 bits. X-... champs optionnels : non pris en compte par les MTA. 8 Buts de l en-tête Identifier l'auteur du message Identifier le destinataire Savoir à qui il faut répondre Retrouver le chemin suivi par le message Savoir comment a été codé ce message. Avoir des informations optionnelles (champs X...) 9
10 Défauts Sécurisation texte transmis brut cryptage connexions sécurisées : extension STARTTLS authentification forte des serveurs SMTP (via un certificat) établissement d'une session TLS (chiffrée) entre 2 serveurs (MTA-MTA) authentification forte des clients SMTP (via un certificat) établissement d'une session TLS (chiffrée) entre le client et le serveur (MUA-MTA) Format des données envoyées transmission de texte uniquement codage des données binaire -> texte Codages MIME text/plain : 8bit (par défaut) Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit à l envoi : codage texte brut accents éàçèîù à la réception : codage texte brut accents éàçèîù 11 Codages MIME text/plain : quoted-printable Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable à l envoi : codage texte brut accents éàçèîù à la réception : codage texte brut accents =E9=E8=E0=E7=F9=EE les caractères qui peuvent être codés sur 7 bits sont transmis normalement, ceux qui ne le peuvent pas sont remplacés par "=" et la valeur du code ASCII sur 8 bits exprimé en hexadécimal 12
13 Codages MIME text/plain : base64 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: base64 à l envoi : En codage "BASE 64": éàçèîù à la réception : RW4gY29kYWdlICJCQVNFIDYOIjoNCuno40f57gOKDQo= Trois octets (24 bits au total) sont découpés sous la forme de 4 paquets de 6 bits (toujours 24 bits au total). Chaque valeur sur 6 bits, comprise donc entre 0 et 3F en hexadécimal, sera symbolisée par un caractère présent, et avec le même code, dans toutes les versions de code ASCII (selon une table de correspondance) 3 octets : 4 caractères complétés par = Codage Base64 dec hex car. dec hex car. dec hex car. dec hex car. 0 0 A 16 10 Q 32 20 g 48 30 w 1 1 B 17 11 R 33 21 h 49 31 x 2 2 C 18 12 S 34 22 i 50 32 y 3 3 D 19 13 T 35 23 j 51 33 z 4 4 E 20 14 U 36 24 k 52 34 0 5 5 F 21 15 V 37 25 l 53 35 1 6 6 G 22 16 W 38 26 m 54 36 2 7 7 H 23 17 X 39 27 n 55 37 3 8 8 I 24 18 Y 40 28 o 56 38 4 9 9 J 25 19 Z 41 29 p 57 39 5 10 A K 26 1A a 42 2A q 58 3A 6 11 B L 27 1B b 43 2B r 59 3B 7 12 C M 28 1C c 44 2C s 60 3C 8 13 D N 29 1D d 45 2D t 61 3D 9 14 E O 30 1E e 46 2E u 62 3E + 15 F P 31 1F f 47 2F v 63 3F / 14 Codage Base64 Exemple : coder "012" caractère '0' code ASCII hexa : 30 code ASCII binaire : 00110000 caractère '0' code ASCII hexa : 31 code ASCII binaire : 00110001 caractère '0' code ASCII hexa : 32 code ASCII binaire : 00110010 "012" : 001100000011000100110010 découpage en paquets de 6 bits 001100 : 0C : M 000011 : 03 : D 000100 : 04 : E 110010 : 32 : y codage en Base64 : MDEy 15
16 Codage Base64 Exemple : coder "0" caractère '0' code ASCII hexa : 30 code ASCII binaire : 00110000 on complète les 16 bits restants avec des 0 "0" : 00110000 0000000000000000 découpage en paquets de 6 bits 001100 : 0C : M 000000 : 00 : A 000000 non significatif : = 000000 non significatif : = codage en Base64 : MA== Autres codages : voir uuencode, BinHex Codages MIME codage HTML Content-Type: multipart/alternative; à l envoi : Codage texte brut : accents éàçèîù 17 Codages MIME Codage HTML (suite) Content-Type: multipart/alternative; boundary="------------070700040005020102010303" --------------070700040005020102010303 Content-Type: text/plain; charset=iso-8859-1; Content-Transfer-Encoding: 8bit Codage texte brut : accents éàçèîù 18
19 Codages MIME Codage HTML (suite) --------------070700040005020102010303 Content-Type: text/html; charset=us-ascii Content-Transfer-Encoding: 7bit <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html;charset=iso-8859-1"> <title></title> </head> <body> <meta http-equiv="content-type" content="text/html;charset=iso-8859-1"> <title></title> Codage texte brut : accents éàçèîù </body> </html> --------------070700040005020102010303-- Codage MIME Insertion d'une image dans le code HTML Content-Type: multipart/related; boundary="------------060809090304060900090306" --------------060809090304060900090306 Content-Type: text/html; charset=us-ascii Content-Transfer-Encoding: 7bit <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title></title> </head> <body> <div class="moz-signature"><img src="cid:part1.03070801.08060306@dpt-info.u-strasbg.fr" alt="" width="600" height="241"> <br> </div> </body> </html> 20 Codage MIME Insertion d'une image dans le code HTML (suite) --------------060809090304060900090306 Content-Type: image/gif; name="smtp.gif" Content-Transfer-Encoding: base64 Content-ID: <part1.03070801.08060306@dpt-info.u-strasbg.fr> Content-Disposition: inline; filename="smtp.gif" R0lGODlhWALxAPcAAB8aFygnJykkISwrKzEtKzAuLjUxLiwsNC4uOC04Oyc1NTY2NzQ1NTU y MTw5Njg3O0g5FkwvIUQsIlU2 [ ] tvx6n+zcvomjfzz8ghhio/gax8xht3fkyzmpv7am153fq9sexx4ceaa7 --------------060809090304060900090306-- 21
22 Question A quelle machine le MTA envoie le courrier (par exemple ci-dessous à amon.u-strasbg.fr et non à dpt-info.u-strasbg.fr )? nslookup Default Server: api-dns.u-strasbg.fr Address: 130.79.68.247 > set type=mx > dpt-info.u-strasbg.fr Server: api-dns.u-strasbg.fr Address: 130.79.68.247 dpt-info.u-strasbg.fr preference = 30, mail exchanger = dpt-info.u-strasbg.fr dpt-info.u-strasbg.fr preference = 10, mail exchanger = amon.u-strasbg.fr dpt-info.u-strasbg.fr preference = 20, mail exchanger = isis.u-strasbg.fr Envoi d'un message envoi d'un message de jules@truc.fr vers robert@machin.fr requête DNS local pour trouver un Mail Exchanger valide pour le domaine machin.fr Queries machin.fr : type MX, class inet Name: machin.fr Type: Mail exchange réponse DNS local Answers machin.fr: type MX, class inet, preference 0, mx mail.machin.fr machin.fr: type MX, class inet, preference 1, mx dns2.machin.fr Authoritative nameservers machin.fr: type NS, class inet, ns dns1.machin.fr machin.fr: type NS, class inet, ns dns2.machin.fr Additional records mail.machin.fr: type A, class inet, addr 194.79.150.9 dns2.machin.fr: type A, class inet, addr 194.79.150.2 DNS1.machin.fr: type A, class inet, addr 194.79.150.9 23 Envoi d'un message requête DNS local : demande de l'adresse IP du Mail Exchanger choisi sur machin.fr (! additional records) Queries mail.machin.fr: type A, class inet Name: mail.machin.fr Type: Host address réponse DNS : adresse de mail.machin.fr Answers mail.machin.fr: type A, class inet, addr 194.79.150.9 requête DNS : second Mail Exchanger Queries dns2.machin.fr: type A, class inet Name: dns2.machin.fr Type: Host address réponse DNS : adresse de mail.machin.fr Answers dns2.machin.fr: type A, class inet, addr 194.79.150.2 on dispose maintenant des adresses des Mail Exchanger 24
25 Envoi d'un message Connexion TCP Protocol: TCP (0x06) Header checksum: 0x28de (correct) Destination: dns1.machin.fr (194.79.150.9) Transmission Control Protocol, Src Port: 1027, Dst Port: smtp(25), Seq:2161513038, Ack: 0 Flags: 0x0002 (SYN) Messages SMTP Envoi du message 1a0 2032 3030 3020 3230 3a32 373a 3539 202b 2000 20:27:59 + 1b0 3032 3030 0d0a 4d49 4d45 2d56 6572 7369 0200..MIME-Versi 1c0 6f6e 3a20 312e 300d 0a43 6f6e 7465 6e74 on: 1.0..Content 1d0 2d54 7970 653a 2074 6578 742f 706c 6169 -Type: text/plai 1e0 6e3b 0d0a 0963 6861 7273 6574 3d22 6973 n;...charset="is 1f0 6f2d 3838 3539 2d31 220d 0a43 6f6e 7465 o-8859-1"..conte Reception dans la boîte aux lettres Return-Path: <jules@truc.fr> Envoi du SMTP de Jules vers celui de Robert Received: from gateway1.mondomaine.mrs (IDENT:xx@xx.truc.fr [162.191.87.23]) by mail.machin.fr (Pro-8.9.0/Pro-8.9.0) with ESMTP id UAA24841 for <robert@machin.fr>; Mon, 22 May 2000 20:28:13 +0200 Envoi du MUA Jules vers son SMTP Received: from robert (robert.mondomaine.mrs [192.168.0.10]) by gateway1.mondomaine.mrs (Postfix) with SMTP id 2A1821029A for <robert@machin.fr>; Mon, 22 May 2000 20:28:05 +0200 (CEST) Message-ID: <005401bfc41b$7512ca30$0a00a8c0@mondomaine.mrs> From: "Jules Dupont" <jules@truc.fr> To: <robert@machin.fr> Subject: test SMTP 26 ESMTP : Extended SMTP Limitations de SMTP messages sur 7 bits (tronqués explicitement à 7 bits) nom d'utilisateur < 64 caractères nom de domaine < 64 caractères nombre de destinataires < 100 lignes < 1000 caractères MIME pour l'utilisation des 8bits ESMTP (RFC 2821) extensions à SMTP compatibilité implémentations antérieures 27
28 Rappel Accès distant aux boîtes aux lettres Accès aux BAL Mode hors-ligne le client récupère les messages sur le serveur, tout traitement sur le courrier est alors effectué localement sur la station de travail cliente. Accès en mode en-ligne les messages sont laissés sur le serveur et sont manipulés à distance par le client temps de connexion plus long que pour les modes hors-ligne et déconnecté. Accès en mode déconnecté le client se connecte au serveur de courrier et fait une copie des messages sélectionnés les messages originaux sont laissés sur le serveur nécessité d une synchronisation Comparaison hors ligne temps de connexion minimal. utilisation minimale des ressources du serveur. en ligne possibilité d'utiliser différents ordinateurs à différents instants. possibilité de machines clientes "sans-données" (data-less) possibilité d'accès concurrentiel à des boîtes aux lettres partagées. 29 POP3 «Post Office Protocol» RFC 1939 protocole rudimentaire ouverture de session TCP dialogue client-serveur commandes paradigme «hors ligne» le courrier est délivré à un serveur partagé un micro-ordinateur personnel se connecte périodiquement au serveur à l'aide d'un client de messagerie rapatrier tous les courriers en attente vers la machine de l'utilisateur «store-and-forward» 30
31 POP3 Fonctionnement Boîte aux lettres file d attente regroupant les messages reçus (via SMTP) POP3 sait les délimiter les compter calculer leur taille les extraire totalement partiellement les supprimer 1 Texte du message 2 Texte du message 3 Texte du message 4 Texte du message 5 Texte du message 6 Texte du message N Texte du message POP3 Fonctionnement port 110 commandes USER : login (généralement à gauche de @ dans l adresse) PASS : mot de passe STAT : nombre de messages présents dans la boîte aux lettres et leur volume LIST : liste des messages en attente numéro d'ordre dans la file taille en octets UIDL : analogue à LIST identificateur unique RETR n : récupération d un message complet DELE n : suppression d un message le numéro d'ordre des messages suivants demeure inchangé jusqu'à la fin de la session TOP n x : récupération des x premières lignes d un message. Les ligne d'en-tête ne sont pas comptabilisées. LAST : numéro d'ordre du dernier message auquel on a accédé RSET : annulation de toutes les commandes de destruction de messages envoyées pendant la session. NOOP : ne rien faire QUIT : fermeture de session suppression effective des messages 32 POP3 Fonctionnement gestion locale des messages extraction pièces jointes sauvegarde dans une arborescence personnalisée tri archivage POP3 n est qu un portail entre la boîte aux lettres et le client de messagerie 33
34 IMAP «Internet Message Access Protocol» IMAP4 : RFC 2060 interactivité client-serveur les messages sont gérés à distance comme s ils étaient sur la machine du client les messages restent sur le serveur le client se charge de l affichage mode «en ligne» IMAP Fonctionnement Connexion client-serveur via TCP port 143 Dialogue message de salutation du serveur interactions client-serveur une commande du client commence une opération pour chaque requête le serveur effectue une action et renvoie une ou plusieurs réponses les requêtes/réponses sont transmises en clair dans la charge utile du segment TCP (sauf sécurisation du serveur) 35 IMAP Fonctionnement Etats une session IMAP peut se trouver dans quatre états différents les commandes sont valides seulement dans certains états lancement d une commande dans un état non approprié : réponse BAD ou NO Etat non-authentifié (non-authenticated) le serveur entre dans cet état lorsqu'une connexion qui n'a pas été pré-authentifiée commence. le client doit fournir une authentification correcte Etat authentifié (authenticated) le client doit sélectionner une boîte aux lettres Etat sélectionné (selected) une boîte aux lettres a été sélectionnée. Etat déconnexion (logout) la connexion se termine et le serveur ferme cette connexion. 36
37 IMAP : fonctionnalités manipulation de «drapeaux d'état persistants» Lu, Supprimé, Répondu + drapeaux définis par l'utilisateur. stockage de messages accès et mises à jour concurrents de boîtes aux lettres partagées gestion des news (usenet) collaboration avec le protocole IMSP (Internet Message Support) accès à des carnets d adresses fonctions de bases pour l optimisation des performances en ligne liaisons à bas débits : récupérer la structure d'un message sans ramener tout le message IMAP vs POP3 Avantages du protocole POP : Simplicité ; l'implémentation est facilitée. Un nombre élevé de logiciels clients sont actuellement disponibles. Avantages du protocole IMAP : Manipule les drapeaux d'état des messages. Peut stocker les messages et les récupérer. Peut accéder à et gérer des boîtes aux lettres multiples. Permet l'accès et la mise à jour concurrentielle de boîtes aux lettres partagées. Accès aux données autres que les courriers électroniques, telles que, les nouvelles Usenet, les documents. Peut utiliser le paradigme hors ligne, pour un temps de connexion et un usage des ressources du serveur minimaux. Existence de protocoles complémentaires destinés à la gestion des configurations utilisateurs (IMSP). Efficace pour les connexion via des lignes à faible débit. 38