Un message est constitué de deux parties distinctes :
L'en-tête est une suite de champs, définis par la RFC 2822.
Le corps est le contenu du message proprement dit. Il est séparé de l'en-tête par au moins une ligne vide. Pendant longtemps, le contenu du corps n'était réglementé que par la RFC 2821 (lignes de 1000 caractères au maximum et caractères tronqués à 7 bits). Le standard MIME (voir section 1.8, page ) définit dorénavant une structure pour le corps.
Le reste de cette section décrit le format des en-têtes.
Chaque champ d'en-tête est constitué d'un mot-clef, du caractère « : », et des informations du champ. Si un champ est trop long, il peut continuer sur la ou les ligne(s) suivante(s). Dans ce cas, chaque ligne de continuation doit commencer par un espace ou une tabulation.
Les caractères suivants ont une signification particulière dans les champs :
Caractère Signification \
le caractère qui suit est spécial "
..."
pas d'interprétation à l'intérieur (
...)
commentaires
Les champs d'en-tête standardisés1.1 sont :
Ajouté lors de la remise physique du message, c'est-à-dire lors du dépôt dans la boîte aux lettres finale par le dernier agent de transport, pour identifier le routage vers l'expéditeur ; l'adresse qui est indiquée est celle de l'expéditeur dans l'enveloppe (voir section 1.4) ;
Ajouté par chaque agent de routage le long du chemin emprunté par le message pour signer et tracer ce chemin en cas de problème. Chaque agent peut apporter les informations suivantes :
from site émetteur by site récepteur via chemin physique with protocole utilisé id identification du message pour le récepteur for forme initiale
Par exemple :
Received: from shiva.jussieu.fr by soleil.uvsq.fr (8.12.1/jtpda-5.4) with ESMTP id JAA28176 for <pda@prism.uvsq.fr>; Fri, 23 Nov 2001 09:30:12 +0100
Identité de l'expéditeur (la personne qui a souhaité que le message soit envoyé), placée par l'UA de l'émetteur. Attention à la confusion possible entre ce champ (avec caractère « : ») et la chaîne From placée dans les boîtes aux lettres par le programme de remise physique /bin/mail sur les systèmes Unix : ces deux chaînes sont proches, mais ont un sens différent (le premier est un champ d'en-tête, véhiculé avec le message, le deuxième est un délimiteur dans la boîte aux lettres) ;
Identité de l'expéditeur réel : la personne (personne physique
ou processus) qui a composé et envoyé le message, et qui reçoit
les messages d'erreur liés au routage du message.
Ce champ ne doit pas être utilisé dans les réponses.
Le champ Sender n'est utile que s'il diffère de From. Si ce n'est pas le cas, le champ Sender est
formellement déconseillé ;
Adresse de retour, placée par l'expéditeur, utilisée par le destinataire pour les réponses. Si ce champ n'est pas spécifié, From est pris par défaut ;
Date d'expédition, placée par l'UA de l'expéditeur ;
Exemple : Date: Fri, 23 Nov 2001 09:30:15 +0100
Destinataires principaux du message, spécifiés par l'expéditeur à l'aide de son UA ;
Destinataires auxiliaires du message, spécifiés par l'expéditeur à l'aide de son UA ;
Destinataires auxiliaires, spécifiés par l'expéditeur à l'aide de son UA. Ce champ n'est pas transmis aux destinataires spécifiés par To et Cc ;
Identificateur unique du message, placé par le premier agent de routage, servant à référencer le message. Cet identificateur est souvent constitué d'une partie unique sur l'Internet (par exemple un nom de machine) et d'une partie unique sur la machine (par exemple une date et un identificateur de processus) ;
En cas de réponse, référence au message original placée automatiquement par l'UA de l'expéditeur de la réponse ;
Identification de messages (identificateurs uniques) précédemment envoyés et cités en référence ;
Mots-clefs séparés par des virgules, spécifiés par l'expéditeur à l'aide de son UA ;
Sujet du message, spécifié par l'expéditeur à l'aide de son UA ;
Commentaires (aucune utilité pour le routage du message), spécifiés par l'expéditeur à l'aide de son UA ;
Indique que le message est chiffré et spécifie la méthode utilisée ;
Les champs commençant par X- ne sont pas définis et sont réservés pour les extensions non encore standardisées ou pour des champs laissés aux utilisateurs.
Lorsque les messages sont re-routés par un utilisateur si son UA le lui permet, certains champs peuvent être ajoutés. Ce sont :
Resent-From Resent-Sender Resent-Reply-To Resent-To Resent-Cc Resent-Date Resent-Bcc Resent-Message-Id
Le standard MIME définit également des champs d'en-tête. Ceux-ci sont décrits plus loin (section 1.8).
En outre, certains champs sont définis par sendmail. Ils ne sont pas conformes à la RFC 2822, et sont généralement en voie d'obsolescence, mais peuvent encore être rencontrés dans des messages. Il s'agit de :
Si aucun champ d'en-tête ne spécifie de destinataire (ce qui est contraire à la RFC 2822), sendmaildéduit le destinataire de l'enveloppe (c'est-à-dire le nom passé en paramètre à sendmail, ou le nom qu'il reçoit par le protocole SMTP).
Ce champ n'est pas ajouté par sendmail, mais par l'expéditeur du message. Lorsque sendmailréalise la remise physique du message et que ce champ est présent, il envoie un message de confirmation de remise (ce qui ne doit pas être confondu avec un accusé de réception) à l'adresse indiquée. L'utilisation de ce champ est fortement déconseillée pour deux raisons essentielles : d'une part, il n'est reconnu que par sendmail, c'est-à-dire par une seule implémentation, et d'autre part, il peut générer des boucles de courriers lorsqu'une liste de diffusion est en jeu.
Ce mécanisme (et donc ce champ) est rendu obsolète par le DSN (Delivery Status Notification, voir section 1.7.3, page ) décrit dans les RFC 1891 à 1894, et implémenté par la version 8.8 de sendmail.
Ce champ contient le nom complet de l'expéditeur.
Si ce champ est présent, il indique la destination des messages d'erreur. Les versions récentes de sendmail rendent ce champ obsolète.
Ce champ donne la priorité devant être affectée au traitement
du message. C'est normalement un mot-clef défini dans sendmail.cf. Par exemple : Precedence: list
indique
que le message a été transmis par une liste de diffusion, et
doit donc être traité avec une basse priorité.