5. ELECTRONIC MAIL -- SMTP AND RFC-822 (Courrier électronique -- SMTP et RFC-822)
5.1 INTRODUCTION (Introduction)
Le courrier électronique est l'une des applications les plus importantes sur Internet. Il utilise deux protocoles principaux :
- RFC-822: Définit le format des messages de courrier
- SMTP: Protocole Simple de Transfert de Courrier pour l'envoi de courrier
Chaque hôte Internet DEVRAIT implémenter SMTP et RFC-822 pour l'envoi et la réception de courrier électronique (SHOULD).
5.2 PROTOCOL WALK-THROUGH (Parcours du protocole)
5.2.1 RFC-822
RFC-822 définit la syntaxe des messages de courrier. Un message de courrier se compose de :
- En-tête: Contient des champs comme From, To, Subject, Date
- Corps: Le contenu réel du message
Champs d'en-tête courants
- From: L'expéditeur du message (obligatoire)
- To: Le(s) destinataire(s) principal(-aux) (obligatoire lors de l'envoi)
- Cc: Destinataires en copie carbone
- Bcc: Destinataires en copie carbone invisible
- Subject: Ligne d'objet
- Date: Date et heure d'envoi du message
- Message-ID: Identifiant unique du message
- Received: Informations de trace
5.2.2 SMTP
SMTP est un protocole pour envoyer des messages de courrier entre hôtes. SMTP utilise le port TCP 25.
Commandes SMTP
- HELO: Identification du client au serveur
- EHLO: HELO étendu (ESMTP)
- MAIL FROM: Spécification de l'expéditeur
- RCPT TO: Spécification du destinataire
- DATA: Début du contenu du message
- RSET: Réinitialisation de la transaction
- VRFY: Vérification du destinataire
- EXPN: Expansion de la liste de diffusion
- HELP: Informations d'aide
- NOOP: Pas d'opération
- QUIT: Fermeture de la connexion
Codes de réponse SMTP
SMTP utilise des codes de réponse à trois chiffres :
- 2xx: Achèvement positif
- 3xx: Intermédiaire positif
- 4xx: Achèvement négatif transitoire
- 5xx: Achèvement négatif permanent
5.3 SPECIFIC ISSUES (Problèmes spécifiques)
5.3.1 SMTP
5.3.1.1 Sending Strategy (Stratégie d'envoi)
Un client SMTP DEVRAIT implémenter une stratégie configurable pour mettre en file d'attente et retenter les envois de courrier échoués (SHOULD). La stratégie de réessai DEVRAIT utiliser un backoff exponentiel (SHOULD).
5.3.1.2 Receiving Strategy (Stratégie de réception)
Un serveur SMTP DOIT accepter le courrier pour les destinataires locaux valides (MUST). Un serveur SMTP DEVRAIT vérifier la validité du destinataire avant d'accepter le courrier (SHOULD).
5.3.1.3 Error Handling (Gestion des erreurs)
Une implémentation SMTP DOIT gérer correctement tous les codes de réponse SMTP (MUST). Les échecs transitoires (4xx) devraient conduire à des réessais, et les échecs permanents (5xx) devraient conduire à des notifications de non-livraison.
5.3.1.4 Timeouts (Délais d'attente)
Une implémentation SMTP DOIT utiliser des timeouts appropriés (MUST) :
- Message 220 initial: 5 minutes
- Commande MAIL: 5 minutes
- Commande RCPT: 5 minutes
- Initiation DATA: 2 minutes
- Bloc DATA: 3 minutes
- Terminaison DATA: 10 minutes
5.3.2 RFC-822
5.3.2.1 Message Format (Format de message)
Les implémentations DOIVENT générer des messages conformes à la syntaxe RFC-822 (MUST). Cependant, les implémentations DEVRAIENT être libérales dans l'acceptation de messages avec des écarts mineurs (SHOULD).
5.3.2.2 Address Formats (Formats d'adresse)
RFC-822 définit plusieurs formats d'adresse. Les implémentations DOIVENT supporter les adresses de boîte aux lettres (MUST) et DEVRAIENT supporter les adresses de groupe (SHOULD).
5.3.2.3 Date and Time (Date et heure)
Chaque message de courrier DOIT inclure un champ d'en-tête Date (MUST). La date DOIT utiliser le format de date et d'heure RFC-822 (MUST).
5.4 SMTP REQUIREMENTS SUMMARY (Résumé des exigences SMTP)
| Fonctionnalité | Section | MUST | SHOULD | MAY | Remarque |
|---|---|---|---|---|---|
| Implémenter SMTP | 5.1 | ✓ | |||
| Implémenter RFC-822 | 5.1 | ✓ | |||
| Accepter le courrier pour destinataires locaux | 5.3.1.2 | ✓ | |||
| Utiliser backoff exponentiel pour réessais | 5.3.1.1 | ✓ | |||
| Gérer correctement tous les codes de réponse | 5.3.1.3 | ✓ | |||
| Utiliser des timeouts appropriés | 5.3.1.4 | ✓ | |||
| Générer messages conformes RFC-822 | 5.3.2.1 | ✓ | |||
| Inclure en-tête Date | 5.3.2.3 | ✓ |