Outils pour utilisateurs

Outils du site


Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
090_applicatifs:170smtp:020_les_profondeurs [le 16/02/2025 à 14:36] – supprimée - modification externe (Date inconnue) 127.0.0.1090_applicatifs:170smtp:020_les_profondeurs [le 30/05/2025 à 13:47] (Version actuelle) – ↷ Liens modifiés en raison d'un déplacement. prof
Ligne 1: Ligne 1:
 +
 +====== les Profondeurs ======
 +
 +===== Les mécanismes de SMTP =====
 +
 +Dans cette partie de l'exposé, nous allons regarder ce qu'il se passe dans les profondeurs du protocole SMTP.
 +
 +==== L'analyse de trames ====
 +
 +Comme d'habitude, rien ne vaut l'analyse des trames pour voir exactement ce qu'il se passe. Si l'on arrive à tout interpréter, on est certain de ne rien laisser passer du protocole. Ici, l'analyse est un peu longue, elle comporte deux parties:
 +
 +  * La recherche de l'adresse du MTA du destinataire (recherche DNS « classique »)
 +  * La transmission du message selon le protocole SMTP, qui s'appuie sur TCP. Les échanges sont un peu plus compliqués qu'en UDP, employé pour la résolution des noms.
 +
 +==== Envoyer un message « à la main » ====
 +
 +Il existe un petit outil appelé « telnet » qui n'est rien d'autre qu'un terminal trivial en mode texte. Il est cependant possible de faire beaucoup de choses avec telnet, pas toujours très simplement, je vous l'accorde. Avec « telnet », il est possible de lire son courrier, d'en envoyer, de lire les news et bien d'autres choses encore.
 +
 +Nous allons envoyer un message avec telnet, ce qui nous obligera à connaitre toutes les commandes (du moins les plus importantes) du protocole SMTP.
 +
 +----
 +
 +===== Espionnage d'un envoi =====
 +
 +Comme d'habitude, nous allons espionner l'envoi d'un e-mail avec notre « sniffer » préféré. Rien de tel pour bien comprendre comment les choses se passent.
 +
 +==== Enoncé du problème ====
 +
 +Depuis un poste du réseau privé, nous allons envoyer un message à l'adresse « //eme13@enprovence.com// » en employant notre serveur SMTP « gateway1.maison.mrs ».
 +
 +==== Objectif de la manip ====
 +
 +Si nous arrivons à tracer toute la transaction, plus aucun détail du protocole SMTP ne nous échappera. Essayons pour voir.
 +
 +Attention! C'est du TCP, ça va être long... (mais ça va être bon :-))
 +
 +==== Les trames récupérées ====
 +
 +  * Ce qui est surligné en jaune est ce qui est le plus important.
 +  * Ce qui est en bleu est un commentaire.
 +
 +=== Recherche de l'adresse du serveur SMTP du destinataire ===
 +
 +<html><pre class="code">
 +Frame 3 (74 on wire, 74 captured)
 +...
 +    Protocol: UDP (0x11)
 +    Header checksum: 0x0a83 (correct)
 +<span class="bhly">    Source: ca-ol-marseille-6-80.abo.w-n-doo.fr (62.161.101.80)
 +    Destination: ns0.mrs.ftci.oleane.com (62.161.120.11)</span>  <span class="txtb"># Notre DNS régional</span>
 +User Datagram Protocol
 +    Source port: 1038 (1038)
 +    Destination port: domain (53)
 +    Length: 40
 +    Checksum: 0xb005
 +<span class="bhly">Domain Name System (query)</span>
 +    Transaction ID: 0xea25
 +    Flags: 0x0100 (Standard query)
 +        0... .... .... .... = Query
 +        .000 0... .... .... = Standard query
 +        .... ..0. .... .... = Message is not truncated
 +        .... ...1 .... .... = Do query recursively
 +    Questions: 1
 +    Answer RRs: 0
 +    Authority RRs: 0
 +    Additional RRs: 0
 +<span class="bhly">    Queries</span>
 +<span class="bhly">        enprovence.com: type MX, class inet</span>   <span class="txtb"># Notez la nature de la requête:</span>
 +<span class="bhly">            Name: enprovence.com</span>              <span class="txtb"># On demande un enregistrement de type MX</span>
 +<span class="bhly">            Type: Mail exchange</span>               <span class="txtb"># (Mail Exchanger)</span>
 +<span class="bhly">            Class: inet</span> 
 +</pre></html>
 +
 +La trame 3 constitue donc une requête DNS pour trouver un Mail Exchanger valide pour le domaine « enprovence.com »
 +
 +<html><pre class="code">
 +Frame 4 (207 on wire, 207 captured)
 +...
 +    Protocol: UDP (0x11)
 +    Header checksum: 0x7fd6 (correct)
 +<span class="bhly">    Source: ns0.mrs.ftci.oleane.com (62.161.120.11)
 +    Destination: ca-ol-marseille-6-80.abo.w-n-doo.fr (62.161.101.80)</span>
 +User Datagram Protocol
 +    Source port: domain (53)
 +    Destination port: 1038 (1038)
 +    Length: 173
 +    Checksum: 0xbffd
 +<span class="bhly">Domain Name System (response)</span>
 +    Transaction ID: 0xea25
 +    Flags: 0x8180 (Standard query response, No error)
 +        1... .... .... .... = Response
 +        .000 0... .... .... = Standard query
 +        .... .0.. .... .... = Server isn't an authority for domain
 +        .... ..0. .... .... = Message is not truncated
 +        .... ...1 .... .... = Do query recursively
 +        .... .... 1... .... = Server can do recursive queries
 +        .... .... .... 0000 = No error
 +    Questions: 1
 +    Answer RRs: 2
 +    Authority RRs: 2
 +    Additional RRs: 3
 +    Queries
 +        enprovence.com: type MX, class inet
 +            Name: enprovence.com
 +            Type: Mail exchange
 +            Class: inet
 +<span class="bhly">    Answers</span>  <span class="txtb"># La réponse de notre DNS concernant les MX</span>
 +<span class="bhly">        enprovence.com: type MX, class inet, preference 0, mx mail.monaco.net</span>
 +            Name: enprovence.com
 +            Type: Mail exchange
 +            Class: inet
 +            Time to live: 22 hours, 30 minutes, 40 seconds
 +            Data length: 19
 +            Preference: 0
 +            Mail exchange: mail.monaco.net
 +<span class="bhly">        enprovence.com: type MX, class inet, preference 1, mx dns2.monaco.net</span>
 +            Name: enprovence.com
 +            Type: Mail exchange
 +            Class: inet
 +            Time to live: 22 hours, 30 minutes, 40 seconds
 +            Data length: 9
 +            Preference: 1
 +            Mail exchange: dns2.monaco.net
 +
 +<span class="txtb"># Notez qu'il y en a deux, avec des niveaux de préférence différents...
 +# Notez également que les adresses IP n'ont pas été fournies...</span>
 +
 +<span class="bhly">    Authoritative nameservers
 +        enprovence.com: type NS, class inet, ns DNS1.monaco.net</span>
 +            Name: enprovence.com
 +            Type: Authoritative name server
 +            Class: inet
 +            Time to live: 14 hours, 39 minutes, 58 seconds
 +            Data length: 7
 +            Name server: DNS1.monaco.net
 +<span class="bhly">        enprovence.com: type NS, class inet, ns dns2.monaco.net</span>
 +            Name: enprovence.com
 +            Type: Authoritative name server
 +
 +
 +
 +
 +            Class: inet
 +            Time to live: 14 hours, 39 minutes, 58 seconds
 +            Data length: 2
 +            Name server: dns2.monaco.net
 +
 +<span class="txtb"># Mais tout de même, la réponse intègre les noms des DNS impliqués dans l'affaire.</span>
 +
 +<span class="bhly">    Additional records
 +        mail.monaco.net: type A, class inet, addr 194.79.150.9</span>
 +            Name: mail.monaco.net
 +            Type: Host address
 +            Class: inet
 +            Time to live: 1 hour, 51 minutes, 41 seconds
 +            Data length: 4
 +            Addr: 194.79.150.9
 +<span class="bhly">        dns2.monaco.net: type A, class inet, addr 194.79.150.2</span>
 +            Name: dns2.monaco.net
 +            Type: Host address
 +            Class: inet
 +            Time to live: 13 hours, 11 minutes, 15 seconds
 +            Data length: 4
 +            Addr: 194.79.150.2
 +<span class="bhly">        DNS1.monaco.net: type A, class inet, addr 194.79.150.9</span>
 +            Name: DNS1.monaco.net
 +            Type: Host address
 +            Class: inet
 +            Time to live: 14 hours, 9 minutes, 50 seconds
 +            Data length: 4
 +            Addr: 194.79.150.9
 +</pre></html>
 +
 +Les « Additional records », tout le monde semble s'en moquer. Pourtant, l'avenir va nous montrer qu'ils nous feraient gagner en efficacité...
 +
 +Nous avons ici toutes les IP nécessaires... Et pourtant... Notez également au passage la diversité des fonctions de l'hôte dns2.monaco.net, il est second MX et second NS.
 +
 +<html><pre class="code">
 +Frame 5 (75 on wire, 75 captured)
 +...
 +    Protocol: UDP (0x11)
 +<span class="bhly">    Header checksum: 0x0a81 (correct)
 +    Source: ca-ol-marseille-6-80.abo.w-n-doo.fr (62.161.101.80)</span>
 +    Destination: ns0.mrs.ftci.oleane.com (62.161.120.11)
 +User Datagram Protocol
 +    Source port: 1038 (1038)
 +    Destination port: domain (53)
 +    Length: 41
 +    Checksum: 0x3994
 +<span class="bhly">Domain Name System (query)</span>
 +    Transaction ID: 0xea26
 +    Flags: 0x0100 (Standard query)
 +        0... .... .... .... = Query
 +        .000 0... .... .... = Standard query
 +        .... ..0. .... .... = Message is not truncated
 +        .... ...1 .... .... = Do query recursively
 +    Questions: 1
 +    Answer RRs: 0
 +    Authority RRs: 0
 +    Additional RRs: 0
 +<span class="bhly">    Queries
 +        mail.monaco.net: type A, class inet</span>
 +            Name: mail.monaco.net
 +            Type: Host address
 +            Class: inet
 +</pre></html>
 +
 +Et voilà... Si le système avait tenu compte des « additional records », la question n'aurait pas été posée.
 +
 +<html><pre class="code">
 +Frame 6 (171 on wire, 171 captured)
 +...
 +    Protocol: UDP (0x11)
 +    Header checksum: 0x7fed (correct)
 +<span class="bhly">    Source: ns0.mrs.ftci.oleane.com (62.161.120.11)
 +    Destination: ca-ol-marseille-6-80.abo.w-n-doo.fr (62.161.101.80)</span>
 +User Datagram Protocol
 +    Source port: domain (53)
 +    Destination port: 1038 (1038)
 +    Length: 137
 +    Checksum: 0xab21
 +<span class="bhly">Domain Name System (response)</span>
 +    Transaction ID: 0xea26
 +    Flags: 0x8180 (Standard query response, No error)
 +        1... .... .... .... = Response
 +        .000 0... .... .... = Standard query
 +        .... .0.. .... .... = Server isn't an authority for domain
 +        .... ..0. .... .... = Message is not truncated
 +        .... ...1 .... .... = Do query recursively
 +        .... .... 1... .... = Server can do recursive queries
 +        .... .... .... 0000 = No error
 +    Questions: 1
 +    Answer RRs: 1
 +    Authority RRs: 2
 +    Additional RRs: 2
 +    Queries
 +        mail.monaco.net: type A, class inet
 +            Name: mail.monaco.net
 +            Type: Host address
 +            Class: inet
 +<span class="bhly">    Answers
 +        mail.monaco.net: type A, class inet, addr 194.79.150.9</span>
 +...
 +
 +<span class="bhly">Authoritative nameservers</span>   <span class="txtb"># Plus la liste des DNS ayant autorité</span>
 +        MONACO.NET: type NS, class inet, ns DNS1.MONACO.NET
 +...
 +        MONACO.NET: type NS, class inet, ns DNS2.MONACO.NET
 +...
 +    Additional records
 +        DNS1.MONACO.NET: type A, class inet, addr 194.79.150.9
 +...
 +        DNS2.MONACO.NET: type A, class inet, addr 194.79.150.2
 +...
 +</pre></html>
 +
 +Nous avons l'adresse de mail.monaco.net, mais nous la connaissions déjà...
 +<html><pre class="code">
 +Frame 7 (75 on wire, 75 captured)
 +...
 +    Protocol: UDP (0x11)
 +    Header checksum: 0x0a80 (correct)
 +<span class="bhly">    Source: ca-ol-marseille-6-80.abo.w-n-doo.fr (62.161.101.80)
 +    Destination: ns0.mrs.ftci.oleane.com (62.161.120.11)</span>
 +User Datagram Protocol
 +    Source port: 1038 (1038)
 +    Destination port: domain (53)
 +    Length: 41
 +    Checksum: 0x6692
 +<span class="bhly">Domain Name System (query)</span>
 +    Transaction ID: 0xea27
 +    Flags: 0x0100 (Standard query)
 +        0... .... .... .... = Query
 +        .000 0... .... .... = Standard query
 +        .... ..0. .... .... = Message is not truncated
 +        .... ...1 .... .... = Do query recursively
 +    Questions: 1
 +    Answer RRs: 0
 +    Authority RRs: 0
 +    Additional RRs: 0
 +<span class="bhly">    Queries
 +        dns2.monaco.net: type A, class inet</span>
 +            Name: dns2.monaco.net
 +            Type: Host address
 +            Class: inet
 +</pre></html>
 +
 +Encore une question futile...
 +<html><pre class="code">
 +Frame 8 (166 on wire, 166 captured)
 +...
 +    Protocol: UDP (0x11)
 +    Header checksum: 0x7fec (correct)
 +<span class="bhly">    Source: ns0.mrs.ftci.oleane.com (62.161.120.11)
 +    Destination: ca-ol-marseille-6-80.abo.w-n-doo.fr (62.161.101.80)</span>
 +User Datagram Protocol
 +    Source port: domain (53)
 +    Destination port: 1038 (1038)
 +    Length: 132
 +    Checksum: 0xd9dd
 +<span class="bhly">Domain Name System (response)</span>
 +    Transaction ID: 0xea27
 +    Flags: 0x8180 (Standard query response, No error)
 +        1... .... .... .... = Response
 +        .000 0... .... .... = Standard query
 +        .... .0.. .... .... = Server isn't an authority for domain
 +        .... ..0. .... .... = Message is not truncated
 +        .... ...1 .... .... = Do query recursively
 +        .... .... 1... .... = Server can do recursive queries
 +        .... .... .... 0000 = No error
 +    Questions: 1
 +    Answer RRs: 1
 +    Authority RRs: 2
 +    Additional RRs: 2
 +    Queries
 +        dns2.monaco.net: type A, class inet
 +            Name: dns2.monaco.net
 +            Type: Host address
 +            Class: inet
 +<span class="bhly">    Answers
 +        dns2.monaco.net: type A, class inet, addr 194.79.150.2</span>
 +...
 +    Authoritative nameservers
 +        MONACO.NET: type NS, class inet, ns DNS1.MONACO.NET
 +...
 +        MONACO.NET: type NS, class inet, ns dns2.monaco.net
 +...
 +    Additional records
 +        DNS1.MONACO.NET: type A, class inet, addr 194.79.150.9
 +...
 +        dns2.monaco.net: type A, class inet, addr 194.79.150.2
 +...
 +</pre></html>
 +
 +Avec sa réponse pertinente, certes, mais qui ne nous apprend rien de nouveau
 +
 +A ce niveau, nous disposons :
 +
 +  * Des adresses des deux échangeurs de courrier pour le domaine « enprovence.com » (dont nous avons appris au passage qu'il était hébergé à Monaco)
 +  * Des adresses des serveurs de noms pour ce domaine.
 +
 +Normalement, nous devrions attaquer le transfert du message, en commençant par le MX qui a la meilleure préférence. S'il ne répond pas, nous passerons à l'autre.
 +
 +=== La négociation SMTP ===
 +
 +<html><pre class="code">
 +Frame 9 (74 on wire, 74 captured)
 +...
 +<span class="bhly">    Protocol: TCP (0x06)</span>
 +
 +<span class="txtb"># Notez que l'on est maintenant en mode connecté...</span>
 +
 +    Header checksum: 0x28de (correct)
 +<span class="bhly">    Source: ca-ol-marseille-6-80.abo.w-n-doo.fr (62.161.101.80)
 +    Destination: dns1.monaco.net (194.79.150.9)</span>
 +
 +<span class="txtb"># Ca ne vous choque pas?
 +# On aurait pu s'attendre à ce que ce soit avec mail.monaco.net que le dialogue
 +# s'initie (c'est lui qui a la meilleure préférence)...
 +# Mais regardez attentivement les adresses IP, et vous verrez que, surprise:
 +# mail.monaco.net n'est autre que dns1.monaco.net</span>
 +
 +<span class="bhly">Transmission Control Protocol, Src Port: 1027, Dst Port: smtp(25), Seq:2161513038, Ack: 0</span>
 +    Source port: 1027 (1027)
 +    Destination port: smtp (25)
 +    Sequence number: 2161513038
 +    Header length: 40 bytes
 +    Flags: 0x0002 (SYN)
 +        ..0. .... = Urgent: Not set
 +        ...0 .... = Acknowledgment: Not set
 +        .... 0... = Push: Not set
 +        .... .0.. = Reset: Not set
 +        .... ..1. = Syn: Set
 +        .... ...0 = Fin: Not set
 +    Window size: 32120
 +    Checksum: 0x8248
 +    Options: (20 bytes)
 +        Maximum segment size: 1460 bytes
 +        SACK permitted
 +        Time stamp: tsval 5420137, tsecr 0
 +        NOP
 +        Window scale: 0 bytes
 +</pre></html>
 +
 +----
 +
 +Nous allons faire maintenant un petit bond en avant. L'analyse détaillée de ce qui suit s'apparente plus à une étude du protocole TCP, ce qui sort de notre sujet [[999-archives:tcp-ip:010tcpip:040_mode_connecte|et qui est traité ailleurs sur ce site]].
 +
 +Juste pour constater que les e-mails circulent en clair sur le réseau et que n'importe quel « sniffer » peut les interpréter, je vous suggère d'aller directement voir la trame 45...
 +
 +----
 +<html><pre class="code">
 +  Frame 45 (706 on wire, 706 captured)
 +  ...
 +
 +      Protocol: TCP (0x06)
 +      Header checksum: 0x2654 (correct)
 +      Source: ca-ol-marseille-6-80.abo.w-n-doo.fr (62.161.101.80)
 +      Destination: dns1.monaco.net (194.79.150.9)
 +  Transmission Control Protocol, Src Port:1027, Dst Port:smtp(25, Seq:2161513153, Ack:2324999158
 +      Source port: 1027 (1027)
 +      Destination port: smtp (25)
 +      Sequence number: 2161513153
 +      Acknowledgement number: 2324999158
 +      Header length: 20 bytes
 +      Flags: 0x0018 (PSH, ACK)
 +          ..0. .... = Urgent: Not set
 +          ...1 .... = Acknowledgment: Set
 +          .... 1... = Push: Set
 +          .... .0.. = Reset: Not set
 +          .... ..0. = Syn: Not set
 +          .... ...0 = Fin: Not set
 +      Window size: 32120
 +      Checksum: 0xfb10
 +  Data (652 bytes)
 +
 +<span class="hlw">      00d0 7972 5c00 0020 af07 1a3d 0800 4500   ..yr\.. ...=..E.
 +    10  02b4 15a6 4000 4006 2654 3ea1 6550 c24f   ....@.@.&amp;T&gt;.eP.O
 +    20  9609 0403 0019 80d6 12c1 8a94 abf6 5018   ..............P.
 +    30  7d78 fb10 0000 5265 6365 6976 6564 3a20   }x....Received: 
 +    40  6672 6f6d 2063 6872 6973 2028 6368 7269   from chris (chri
 +    50  732e 6d61 6973 6f6e 2e6d 7273 205b 3139   s.maison.mrs [19
 +    60  322e 3136 382e 302e 3130 5d29 0d0a 0962   2.168.0.10])...b
 +    70  7920 6761 7465 7761 7931 2e6d 6169 736f   y gateway1.maiso
 +    80  6e2e 6d72 7320 2850 6f73 7466 6978 2920   n.mrs (Postfix) 
 +    90  7769 7468 2053 4d54 5020 6964 2032 4131   with SMTP id 2A1
 +    a0  3832 3130 3239 410d 0a09 666f 7220 3c65   821029A...for &lt;e
 +    b0  6d65 3133 4065 6e70 726f 7665 6e63 652e   me13@enprovence.
 +    c0  636f 6d3e 3b20 4d6f 6e2c 2032 3220 4d61   com&gt;; Mon, 22 Ma
 +    d0  7920 3230 3030 2032 303a 3238 3a30 3520   y 2000 20:28:05 
 +    e0  2b30 3230 3020 2843 4553 5429 0d0a 4d65   +0200 (CEST)..Me
 +    f0  7373 6167 652d 4944 3a20 3c30 3035 3430   ssage-ID: &lt;00540
 +   100  3162 6663 3431 6224 3735 3132 6361 3330   1bfc41b$7512ca30
 +   110  2430 6130 3061 3863 3040 6d61 6973 6f6e   $0a00a8c0@maison
 +   120  2e6d 7273 3e0d 0a46 726f 6d3a 2022 4368   .mrs&gt;..From: "Ch
 +   130  7269 7374 6961 6e20 4341 4c45 4341 2220   ristian CALECA" 
 +   140  3c63 6872 6973 7469 616e 2e63 616c 6563   &lt;christian.calec
 +   150  6140 7761 6e61 646f 6f2e 6672 3e0d 0a54   a@w-n-doo.fr&gt;..T
 +   160  6f3a 203c 656d 6531 3340 656e 7072 6f76   o: &lt;eme13@enprov
 +   170  656e 6365 2e63 6f6d 3e0d 0a53 7562 6a65   ence.com&gt;..Subje
 +   180  6374 3a20 7465 7374 2053 4d54 500d 0a44   ct: test SMTP..D
 +   190  6174 653a 204d 6f6e 2c20 3232 204d 6179   ate: Mon, 22 May
 +   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
 +   200  6e74 2d54 7261 6e73 6665 722d 456e 636f   nt-Transfer-Enco
 +   210  6469 6e67 3a20 3762 6974 0d0a 582d 5072   ding: 7bit..X-Pr
 +   220  696f 7269 7479 3a20 330d 0a58 2d4d 534d   iority: 3..X-MSM
 +   230  6169 6c2d 5072 696f 7269 7479 3a20 4e6f   ail-Priority: No
 +   240  726d 616c 0d0a 582d 4d61 696c 6572 3a20   rmal..X-Mailer: 
 +   250  4d69 6372 6f73 6f66 7420 4f75 746c 6f6f   Microsoft Outloo
 +   260  6b20 4578 7072 6573 7320 352e 3030 2e32   k Express 5.00.2
 +   270  3931 392e 3636 3030 0d0a 582d 4d69 6d65   919.6600..X-Mime
 +   280  4f4c 453a 2050 726f 6475 6365 6420 4279   OLE: Produced By
 +   290  204d 6963 726f 736f 6674 204d 696d 654f    Microsoft MimeO
 +   2a0  4c45 2056 352e 3030 2e32 3931 392e 3636   LE V5.00.2919.66
 +   2b0  3030 0d0a 0d0a 736e 6966 660d 0a0d 0a2e   00....sniff.....
 +   2c0  0d0a                                      ..              </span>
 +</pre></html>
 +
 +Et voilà... Sans précautions particulières, les messages circulent en clair sur le réseau au moment de leur émission vers leur(s) destinataire(s). Il vaut mieux le savoir. Nous verrons également dans le protocole POP3 que le message circule également en clair, avec en plus, le mot de passe du client, au moment de sa lecture.
 +
 +Pour finir, voici l'en-tête du message tel qu'il est déposé dans la Boîte aux lettres %%eme13@enprovence.com%%. Vous pouvez clairement y voir le chemin emprunté par le message. Comme chaque MTA complète l'en-tête en y insérant des lignes à son début, il faudra lire de bas en haut.
 +<html><pre class="code">
 +Return-Path: &lt;christian.caleca@w-n-doo.fr&gt;
 +
 +<span class="txtb"># 2°/ Mon SMTP, côté Internet, envoie le message au SMTP du destinataire</span>
 +
 +Received: from gateway1.maison.mrs
 +          (IDENT:postfix@ca-ol-marseille-6-80.abo.w-n-doo.fr [62.161.101.80])
 + by mail.monaco.net (Pro-8.9.3/Pro-8.9.3) with ESMTP id UAA24841
 + for &lt;eme13@enprovence.com&gt;; Mon, 22 May 2000 20:28:13 +0200
 +
 +<span class="txtb"># 1°/ Mon poste de travail envoie le message sur mon SMTP, côté réseau ocal</span>
 +
 +Received: from chris (chris.maison.mrs [192.168.0.10])
 + by gateway1.maison.mrs (Postfix) with SMTP id 2A1821029A
 + for &lt;eme13@enprovence.com&gt;; Mon, 22 May 2000 20:28:05 +0200 (CEST)
 +
 +Message-ID: &lt;005401bfc41b$7512ca30$0a00a8c0@maison.mrs&gt;
 +From: "Christian CALECA" &lt;christian.caleca@w-n-doo.fr&gt;
 +To: &lt;eme13@enprovence.com&gt;
 +Subject: test SMTP
 +Date: Mon, 22 May 2000 20:27:59 +0200
 +MIME-Version: 1.0
 +Content-Type: text/plain;
 + charset="iso-8859-1"
 +Content-Transfer-Encoding: 7bit
 +X-Priority: 3
 +X-MSMail-Priority: Normal
 +X-Mailer: Microsoft Outlook Express 5.00.2919.6600
 +X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6600
 +Status:
 +
 +sniff
 +</pre></html>
 +
 +===== Pour les plus démunis... Telnet =====
 +
 +==== Envoi du message ====
 +
 +Pour ceux qui aiment bien comprendre, envoyons maintenant un message avec TELNET. La manip est faite à partir du poste Linux, parce que le client Telnet est tout de même plus efficace que celui fourni par windows, mais c'est possible aussi depuis un poste windows. Comme nous savons maintenant que le MX de enprovence.com n'est autre que dns1.monaco.net, nous allons nous adresser directement à lui.
 +
 +{{ :smtp:telnet.gif |SMTP avec Telnet}}
 +
 +  - La ligne 1 démarre le client Telnet sur le serveur de messagerie dont on a trouvé le nom grâce au « sniff », sur le port 25 (port « officiel » d'écoute des MTA). On aurait pu le trouver également avec NSLOOKUP.
 +  - Les lignes 2, 3 et 4 indiquent que la connexion Telnet est correcte.
 +  - La ligne 5 (220 mail.monaco.net) est un message de bienvenue du serveur.
 +  - La ligne 6 (MAIL FROM) est la première commande que nous entrons. Elle donne l'adresse de l'émetteur du message. Suivant les règles de sécurité du MTA, cette adresse pourra ne pas être acceptée.
 +  - La ligne 7 (250 ...) indique que l'émetteur est accepté.
 +  - La ligne 8 (RCPT TO:) est la deuxième commande. Elle donne l'adresse du destinataire du message.
 +  - La ligne 9 (250...) indique que le destinataire est accepté.
 +  - la ligne 10 (DATA) est encore une commande, elle indique que nous allons transmettre le message proprement dit.
 +  - La ligne 11 (354...) est une réponse indiquant comment il faut envoyer le texte du message.
 +  - La ligne 12 constitue le texte du message envoyé
 +  - La ligne 13 (.) indique la fin du message.
 +  - La ligne 14 (250...) indique que le message est accepté.
 +  - La ligne 15 (QUIT) est une commande pour indiquer au MTA que l'on a fini.
 +  - La ligne 16 (221) nous indique que le MTA a fermé la connexion.
 +
 +Notez que nous n'avons pas ici respecté totalement le protocole, principalement en omettant la commande ''HELO'' ou mieux : ''EHLO''. Certains MTA n'aiment pas la grossièreté.
 +
 +==== Analyse du résultat ====
 +
 +Voici le texte complet (en-tête comprise) du message tel que le destinataire le reçoit:
 +<html><pre class="code">
 +Return-Path: &lt;christian.caleca@w-n-doo.fr&gt;
 +
 +<span class="txtb"># C'est l'adresse de l'émetteur envoyée avec la commande MAIL FROM:</span>
 +
 +Received: from ca-ol-marseille-15-205.abo.w-n-doo.fr
 +          (IDENT:root@ca-ol-marseille-15-205.abo.w-n-doo.fr [213.56.62.205])
 +
 +<span class="txtb"># C'est la machine avec laquelle le message a été envoyé</span>
 +
 +by mail.monaco.net (Pro-8.9.3/Pro-8.9.3) with SMTP id TAA08106
 +for eme13@enprovence.com; Thu, 25 May 2000 19:43:56 +0200
 +
 +<span class="txtb"># C'est l'adresse du destinataire envoyée avec la commande RCPT TO:</span>
 +
 +Date: Thu, 25 May 2000 19:43:56 +0200
 +From: christian.caleca@w-n-doo.fr
 +Message-Id: &lt;200005251743.TAA08106@mail.monaco.net&gt;
 +X-Authentication-Warning: mail.monaco.net:
 +IDENT:root@ca-ol-marseille-15-205.abo.w-n-doo.fr [213.56.62.205]
 +      didn't use HELO protocol
 +
 +<span class="txtb"># Ici, c'est une info ajoutée par le MTA mail.monaco.net: Il prévient qu'il y a
 +# quelqu'un de grossier dans la chaîne
 +# d'envoi du message, il n'a pas utilisé le protocole HELO.</span>
 +
 +Status:
 +
 +le texte du message
 +</pre></html>
 +
 +==== Quelques remarques ====
 +
 +  - HELO, la commande manquante qui a généré le « X-Authentification-Warning », est prévue dans le protocole. Nous aurions pu l'envoyer au début du dialogue. L'administrateur de mail.monaco.net aurait pu se vexer et rejeter le message.
 +  - L'en-tête est très incomplète. A titre de comparaison, vous avez plus bas le même message envoyé « normalement » avec Outlook Express, par l'intermédiaire du MTA de wanadoo (smtp.wanadoo.fr). C'est tout simplement parce que l'en-tête est construite au cours du voyage par :
 +  * le MUA émetteur ;
 +  * les MTA qui font transiter le message ;
 +  * le MTA destinataire ;
 +  * le MDA peut aussi ajouter ses commentaires.
 +
 + Nous aurions pu les introduire nous-même dans la petite manip vue plus haut. Certains MTA essayent plus ou moins de reconstruire les champs manquants, d'autres non.
 +
 +Au passage, il faut noter que l'en-tête n'est donc pas une élément nécessaire au transport. Seuls les contenus de ''MAIL FROM:'' et ''RCPT TO:'' sont indispensables au transport. Seul le contenu de ''EHLO'' est requis par le protocole, même si certains MTA ne le considèrent pas comme indispensable.
 +
 +Autrement dit, le contenu de l'en-tête, vis-à-vis de SMTP n'est que du contenu, d'ailleurs transmis dans la commande ''DATA'' au même tire que le « contenu » du message. La conséquence est qu'il est parfaitement possible de forger complètement une partie de l'en-tête, de la façon la plus fantaisiste qui soit. Qui n'a jamais reçu de message envoyé par lui-même « à l'insu de son plein gré » ?
 +
 +===== Conclusions =====
 +
 +Le processus d'envoi d'un e-mail  par SMTP peut donc se découper en deux phases bien distinctes:
 +
 +  * Une recherche DNS sur les MX (Mail Exchanger) concernés par le domaine du destinataire (enprovence.com dans l'exemple).
 +  * Un dialogue entre le MTA trouvé et le client, suivant le protocole SMTP pour transférer le message.
 +  * Il n'est pas obligatoire que le message transite directement de votre serveur SMTP à celui du destinataire. Dans notre manipulation avec Telnet, nous avons contacté directement le MX du destinataire, lorsque nous envoyons le même message avec un MUA, il sera plus long, comme le montrent les exemples suivants:
 +== Envoyé par smtp.wanadoo.fr ==
 +<html><pre class="code">
 +      <b>Return-Path: &lt;christian.caleca@w-n-doo.fr&gt;</b>
 +
 +<span class="txtb">#     Dernier MTA, celui qui gère la BAL du destinataire.</span>
 +
 +      <b>Received: from camelia.wanadoo.fr (smtp-rt-10.wanadoo.fr [193.252.19.59])
 +                by mail.monaco.net (Pro-8.9.3/Pro-8.9.3) with ESMTP id OAA16616
 +                for &lt;eme13@enprovence.com&gt;; Sat, 27 May 2000 14:35:27 +0200</b>
 +
 +
 +<span class="txtb">#     Second MTA, toujours chez Wanadoo. Le premier n'est donc qu'un agent de relais</span>
 +
 +      <b>Received: from amyris.wanadoo.fr (193.252.19.150)
 +                by camelia.wanadoo.fr; 27 May 2000 14:08:11 +0200</b>
 +
 +<span class="txtb">#     Premier MTA, celui sur lequel le MUA poste le message</span>
 +
 +      <b>Received: from chris (62.161.101.80)
 +                by amyris.wanadoo.fr; 27 May 2000 14:07:57 +0200
 +      Message-ID: &lt;00a001bfc7d4$2cf01930$0a00a8c0@maison.mrs&gt;
 +      From: "Christian CALECA" &lt;christian.caleca@w-n-doo.fr&gt;
 +      To: &lt;eme13@enprovence.com&gt;
 +      Subject:
 +      Date: Sat, 27 May 2000 14:07:48 +0200
 +      MIME-Version: 1.0
 +      Content-Type: text/plain;
 +      charset="iso-8859-1"
 +      Content-Transfer-Encoding: 7bit
 +      X-Priority: 3
 +      X-MSMail-Priority: Normal
 +      X-Mailer: Microsoft Outlook Express 5.00.2919.6600
 +      X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6600
 +      Status:  O</b>
 +      
 +      Le texte du message
 +</pre></html>
 +
 +Le chemin ici est le suivant:
 +  * amyris.wanadoo.fr
 +  * camelia.wanadoo.fr
 +  * mail.monaco.net
 + Notez que n'apparait pas smtp.wanadoo.fr, du moins sous ce nom là.
 +
 +== Envoyé maintenant avec notre MTA personnel sur Gateway1 ==
 +<html><pre class="code">
 +      Return-Path: &lt;christian.caleca@w-n-doo.fr&gt;
 +      Received: from gateway1.maison.mrs
 +                (IDENT:postfix@ca-ol-marseille-6-80.abo.wanadoo.fr [62.161.101.80])
 +                by mail.monaco.net (Pro-8.9.3/Pro-8.9.3) with ESMTP id PAA17676
 +                for &lt;eme13@enprovence.com&gt;; Sat, 27 May 2000 15:29:23 +0200
 +      Received: from chris (chris.maison.mrs [192.168.0.10])
 +                by gateway1.maison.mrs (Postfix) with SMTP id A38181105F
 +                for &lt;eme13@enprovence.com&gt;; Sat, 27 May 2000 15:29:15 +0200 (CEST)
 +      Message-ID: &lt;000901bfc7df$884e4ad0$0a00a8c0@maison.mrs&gt;
 +      From: "Christian CALECA" &lt;christian.caleca@w-n-doo.fr&gt;
 +      To: &lt;eme13@enprovence.com&gt;
 +      Subject:
 +      Date: Sat, 27 May 2000 15:29:06 +0200
 +      MIME-Version: 1.0
 +      Content-Type: text/plain;
 +      charset="iso-8859-1"
 +      Content-Transfer-Encoding: 7bit
 +      X-Priority: 3
 +      X-MSMail-Priority: Normal
 +      X-Mailer: Microsoft Outlook Express 5.00.2919.6600
 +      X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6600
 +      Status: RO
 +      
 +      Texte du message.
 +</pre></html>
 +
 +Le chemin ici est le suivant:
 +  * gateway1.maison.mrs (notre MTA Postfix)
 +  * mail.monaco.net
 +Ici, le message a directement été transmis depuis notre MTA vers celui du destinataire.
 +
 +Ceci veut dire qu'il est parfaitement possible sur de grosses architectures, de créer des MTA qui ne font que relayer du courrier d'un point à un autre, sans gérer de destinataires locaux (pas de MDA).
  
les Profondeurs: Dernière modification le: 01/01/1970 à 00:00 par