1. Introduction
L'objectif du protocole Simple Mail Transfer Protocol (SMTP, Protocole Simple de Transfert de Courrier) est de transférer le courrier de manière fiable et efficace.
SMTP est indépendant du sous-système de transport particulier et nécessite uniquement un canal de flux de données ordonné et fiable. Bien que ce document se concentre spécifiquement sur l'utilisation de SMTP sur TCP, d'autres transports sont possibles. Les annexes de ce document fournissent des informations importantes sur TCP et d'autres détails d'implémentation.
1.1. Transport du courrier électronique (Transport of Electronic Mail)
Le courrier électronique est transmis d'un serveur au suivant jusqu'à ce qu'il atteigne le système de destination. Plus précisément, le courrier est transmis d'un agent de transfert de messages (Message Transfer Agent, MTA) à un autre en utilisant SMTP. Le MTA de destination est responsable de la livraison du courrier à la boîte aux lettres de l'utilisateur ou de son transfert à un autre système.
Les utilisateurs ne interagissent pas directement avec SMTP. Au lieu de cela :
- Les agents utilisateurs (User Agents, UAs) ou agents de soumission de courrier (Mail Submission Agents, MSAs) soumettent le courrier aux MTAs
- Les agents d'accès au courrier (Mail Access Agents, MAAs) permettent aux utilisateurs de récupérer le courrier des boîtes aux lettres en utilisant des protocoles tels que POP3 ou IMAP
1.2. Historique et contexte de ce document (History and Context for This Document)
SMTP a été spécifié pour la première fois dans RFC 821 en août 1982. Depuis lors, il a fait l'objet de nombreuses mises à jour et clarifications :
- RFC 821 (1982) : Spécification SMTP originale
- RFC 1123 (1989) : Exigences pour les hôtes Internet - clarifié et mis à jour SMTP
- RFC 1869 (1995) : Introduit le mécanisme d'extension de service SMTP (ESMTP)
- RFC 2821 (2001) : Consolidé et clarifié les spécifications précédentes
- RFC 5321 (2008) : Ce document - spécification actuelle
Ce document obsolète RFC 2821 et met à jour RFC 1123. Il incorpore l'expérience et les meilleures pratiques des deux dernières décennies de déploiement SMTP sur Internet.
Modifications clés par rapport à RFC 2821
- Clarifications : Langage plus précis sur le comportement des commandes
- Meilleures pratiques : Conseils mis à jour basés sur l'expérience opérationnelle
- Considérations de sécurité : Guidance de sécurité étendue
- Interopérabilité : Amélioration de la guidance pour gérer les systèmes hérités
1.3. Conventions du document (Document Conventions)
Les mots-clés "MUST" (DOIT), "MUST NOT" (NE DOIT PAS), "REQUIRED" (REQUIS), "SHALL" (DOIT), "SHALL NOT" (NE DOIT PAS), "SHOULD" (DEVRAIT), "SHOULD NOT" (NE DEVRAIT PAS), "RECOMMENDED" (RECOMMANDÉ), "MAY" (PEUT) et "OPTIONAL" (OPTIONNEL) dans ce document doivent être interprétés comme décrit dans RFC 2119.
Signification des mots-clés RFC 2119
- MUST / REQUIRED / SHALL : Exigence absolue de la spécification
- MUST NOT / SHALL NOT : Interdiction absolue
- SHOULD / RECOMMENDED : Il peut exister des raisons valables d'ignorer, mais les implications doivent être comprises
- SHOULD NOT / NOT RECOMMENDED : Il peut exister des raisons valables quand le comportement est acceptable, mais les implications doivent être comprises
- MAY / OPTIONAL : L'élément est vraiment optionnel
Notations
Dans ce document :
- Les exemples de protocole utilisent "C:" pour les lignes du client et "S:" pour les lignes du serveur
- La syntaxe est spécifiée en utilisant Augmented Backus-Naur Form (ABNF, Forme Augmentée de Backus-Naur) comme défini dans RFC 5234
- Les termes définis dans ce document sont mis en évidence lors de leur première utilisation
Exemple de session SMTP
S: 220 smtp.example.com ESMTP Postfix
C: EHLO client.example.com
S: 250-smtp.example.com
S: 250-SIZE 52428800
S: 250-8BITMIME
S: 250 STARTTLS
C: MAIL FROM:<[email protected]>
S: 250 Ok
C: RCPT TO:<[email protected]>
S: 250 Ok
C: DATA
S: 354 End data with <CR><LF>.<CR><LF>
C: From: [email protected]
C: To: [email protected]
C: Subject: Test
C:
C: This is a test message.
C: .
S: 250 Ok: queued as 12345
C: QUIT
S: 221 Bye