Le protocole SMTP: Le message


Si vous avez fait les tests précédents vous avez remarqué que lorsque vous lisez le mail, les informations 'from:', 'to:', 'subject:' (de, à et sujet en français) ne sont pas renseignés correctement. En effet, il faut distinguer les informations fournit lors du passage des commandes MAIL et RCPT qui permettent d'acheminer l'information, du contenu du message. C'est un peu comme si le facteur vous livrait une lettre en enlevant l'enveloppe au moment de la glisser dans votre boite aux lettres, à moins que l'expéditeur ait inscrit son adresse et la votre sur la lettre vous n'avez aucun moyen de savoir qui l'a envoyée. On va donc préciser dans le message (la section DATA), un certain nombre de champs. Ces champs doivent figurer au tout début du message et forment l'entête. Si vous saisissez une ligne blanche pour commencer votre message, ils ne seront pas pris en compte. Voici un petit exemple de session utilisant ces champs :

220 mel-rta7.wanadoo.fr ESMTP Service (6.5.007) ready
HELO iprelax.net
250 mel-rta7.wanadoo.fr
MAIL FROM:<nicolas@salemoche.com>
250 MAIL FROM:<nicolas@salemoche.com> OK
RCPT TO:<nicolas@salemoche.net>
250 RCPT TO:<nicolas@salemoche.net> OK
DATA
354 Start mail input; end with .
from: "Nicolas JEAN" <nicola@salemoche.com>
to: "Nicolas at salemioche dot net" <nicola@salemoche.net>
subject: email avec champs dans l'entete

coucou, ceci
est
un message
.
250 <3D8011E6007C45C8> Mail accepted
QUIT
221 mel-rta7.wanadoo.fr QUIT


Les champs sont formés d'une façon classique, le nom du champ immédiatement suivi de ':', un espace et la valeur du champ. Des champs pourront être ajoutés par les différents MTA pour ajouter des informations sur le routage du message jusqu'à son destinataire. Ces champs servent donc au MUA pour afficher l'email, le renseigner et permettre au destinataire d'y répondre. L'entête du message est séparé par une ligne blanche du corps du message. La RFC 822 décrit la liste de ces champs, et voici les plus courant :

From : from est suivi de l'adresse et de la route de l'expéditeur, on note ici la différence de notion entre adresse et route (entre chevrons). Théoriquement on peut donc avoir :

From: "nicoas@iprelax.net" <@smtp.wanadoo.fr,@smtp.iprelax.net:nicoas@iprelax.net"

Cet usage standard à finalement été détourné pour devenir : From: "Nickname" <adresse>

To : liste des destinataires principaux, on retrouve le format "Nick" . Les adresses se suivent et sont séparées par une virgule. Exemple :

To: "com" <nicola@salemoche.com>, "net" <nicols@saleoche.net>

Cc : liste des destinataires en "copy carbon". Le format est le même que pour le champ 'To'. On remarque que le protocole SMTP ne fait pas de différences entre destinataire principal (To) et destinataire en copie (Cc), chacun nécessite la même commande RCPT.

Bcc : liste des destinataires en copie cachée. Personnellement, je ne trouve que peu d'intérêt à ce champ. Les adresses contenues dans ce champ ne sont pas incluses dans les copies des messages envoyées aux destinataires principaux et secondaires (Cc). Des systèmes peuvent choisir d'inclure le texte de cette zone "Bcc" seulement dans la copie de l'auteur, alors que d'autres peuvent aussi l'inclure dans le texte envoyé à tous ce qui sont indiqué dans la liste "Bcc". Dans la plupart des cas je vous recommande de ne pas l'utiliser. Pour envoyer une copie cachée, on utilise la commande RCPT pour une adresse qui ne figurera pas dans le corps du message.

Subject : pour le sujet du message.

Return-Path : donne une adresse pour la réponse qui soit différente de l'adresse utilisée pour l'envoi (celle qui figure dans le champ 'To'). Quand le destinataire utilisera la fonction 'Répondre' de son outil de messagerie, c'est cette adresse qui sera utilisée.

Date : date du message, parfait pour antidater un message :-). Exemple de date : Wed, 25 Sep 2002 17:39:28 +0200 (CEST). Si vous ne spécifiez pas de valeur, le premier MTA s'en chargera généralement.

Le but de cet article étant d'écrire un outil d'envoi de mail, ces quelques champs sont largement suffisant, je vous renvoie à la RFC pour 'tuner' vos messages plus précisément.