RFC du protocole SMTP : le modele smtp


2. LE MODELE SMTP


Le design de SMTP est basé sur le modèle suivant de communication : suite à une requête de l'utilisateur du courrier user, L'émetteur SMTP établit une communication bidirectionnelle vers un récepteur-SMTP. Celui-ci peut être soit la destination finale, soit seulement un intermédiaire. Les commandes SMTP sont générées par l'émetteur SMTP et sont émises vers le récepteur SMTP. Les réponses SMTP sont envoyées par le récepteur-SMTP à l'émetteur-SMTP en réponse aux commandes.

Une fois le canal de transmission établi, l'émetteur SMTP envoie une commande MAIL mentionnant l'émetteur d'un courrier. Si le récepteur SMTP peut accepter le courrier, il répondra par un message OK. L'émetteur-SMTP envoie alors une commande RCPT identifiant un récipiendaire pour ce courrier. Si le récepteur-SMTP peut accepter un courrier pour ce récipiendaire, alors il répondra par un message OK ; sinon, il répond par un message refusant le courrier pour ce récipiendaire (mais n'annulant totalement pas la transaction de courrier). L'émetteur SMTP et le récepteur SMTP pourront négocier plusieurs récipiendaires. Une fois cette négociation effectuée, l'émetteur SMTP envoie le contenu du courrier, en le terminant par une séquence spéciale. Si le récepteur SMTP traite avec succès la réception du contenu du courrier, il répondra par un message OK. Le dialogue est volontairement un dialogue pas à pas, à étapes verrouillées.

Illustration 1 / Modèle d'utilisation de SMTP

                  +----------+               +---------+
  +-----------+   |          |  Commandes    |         |
  |Utilisateur|<->|          |   Réponses    |         |
  +-----------+   | Emetteur |  et courrier  |Récepteur|
  +-----------+   |   SMTP   |<------------->|   SMTP  |   +-----------+
  |  Système  |<->|          |      SMTP     |         |<->|  Système  |
  |de fichiers|   |          |               |         |   |de fichiers|
  +-----------+   +----------+               +---------+   +-----------+

                 Emetteur-SMTP              Récepteur-SMTP

SMTP procure un mécanisme de transmission des courriers, directement à partir de l'hôte de l'émetteur du message jusqu'à l'hôte du récipiendaire pour autant que les deux hôtes soient raccordée au même service de transport, ou à travers une chaîne de relais SMTP (serveurs) lorsque les hôtes source et destination ne sont pas raccordés au même service de transport.

Pour pouvoir officier en temps que relais, le serveur SMTP devra connaître le nom de l'hôte du destinataire ainsi que le nom de la boîte aux lettres du récipiendaire.

L'argument associé à la commande MAIL est le chemin inverse, qui spécifie qui est l'émetteur du courrier.

L'argument associé à la commande RCPT est un chemin direct, qui spécifie à qui est destiné le courrier. Le chemin direct sert à l'acheminement, tandis que le chemin inverse est utilisé pour renvoyer un message d'erreur à l'émetteur (par exemple émis par un relais).

Lorsque le même message est émis à destination de plusieurs récipiendaires, SMTP encourage la transmission d'une seule copie du contenu du message pour tous les récipiendaires hébergés sur le même hôte destinataire.

Les commandes et réponses du système de courrier suivent une syntaxe rigide. Les réponses sont aussi exprimées sous forme de code numérique. Dans ce qui suit, les exemples utilisent des commandes et réponses usuelles. La liste complète des commandes et réponses est donnée en section 4 traitant des "spécifications".

Les commandes et réponses ne tiennent pas compte de la casse. C'est-à-dire, qu'une commande ou réponse peut être écrite en majuscules, minuscules, ou tout mélange des deux. Notez que ceci n'est pas vrai pour les noms des utilisateurs des boîtes aux lettres. En effets, cette faculté dépend du système d'exploitation sur lequel sont implantées ces boîtes aux lettres, et les implémentations de SMTP devront donc veiller à conserver la casse des noms d'utilisateurs telle qu'ils ont été écrits dans l'argument définissant la boîte aux lettres. Les noms d'hôtes, eux, ne dépendent pas de la casse.

Les commandes et réponses sont composées de caractères ASCII [1]. Lorsque le service de transport utilisé permet la transmission sur une base de 8-bits (octet), tous les caractères 7 bits sont transmis justifiés à droite (dans l'octet de transmission), le huitième bit étant toujours forcé à 0. Lorsque nous spécifierons la forme syntaxique générale des commandes et des réponses, un argument (ou un symbole "spécial") sera exprimé sous forme d'une variable (ou constante) "métalinguistique", par exemple, "<chaîne>" ou "<route-inverse>". Ici, les signes "inférieur à" et "supérieur à" indiquent le caractère métalinguistique de la variable. Cependant, certains arguments utilisent ces signes dans leur expression littérale. Par exemple, un chemin inverse est actuellement encapsulé par ces signes, c'est-à-dire, "<John.Smith@USC-ISI.ARPA>" est une instance de la variable générale <route-inverse> (les signes "inférieur à" et "supérieur à" sont effectivement transmis dans la commande ou la réponse).



Crédits : J. Postel / ISI
Traduction : Valéry Frémaux / EISTI
Edition originale : Août 1982. Version FR : Avril 1998
Remplace : RFC 788, 780, 772