RFC 1939 : POP3 — Protocole de Bureau de Poste Version 3
Pourquoi cela existe
Au début d'Internet, la plupart des utilisateurs n'étaient pas connectés en permanence. Les connexions par modem étaient lentes et coûteuses. L'architecture e-mail s'est divisée en deux rôles :
- MTA (Mail Transfer Agent) : Un serveur toujours actif qui reçoit et met en file d'attente les e-mails via SMTP.
- MUA (Mail User Agent) : Une application cliente qui se connecte périodiquement pour récupérer les e-mails accumulés.
POP3 comble cet écart. Il fournit un moyen simple et apatride à un client de s'authentifier, de lister les messages, de les télécharger et éventuellement de les supprimer du serveur. Il a été conçu pour être implémentable avec un code minimal sur les machines aux ressources limitées — et il a réussi. POP3 reste l'un des protocoles d'accès au courrier les plus largement pris en charge sur la planète.
Fonctionnement
Connexion et états
Une session POP3 passe par trois états séquentiels :
- AUTHORIZATION : Le client se connecte (port 110, ou port 995 pour TLS implicite) et s'authentifie avec un nom d'utilisateur et un mot de passe.
- TRANSACTION : Le client émet des commandes pour lister, récupérer et marquer les messages pour suppression.
-
UPDATE : Le client envoie
QUIT. Le serveur effectue toutes les suppressions en attente et ferme la connexion.
Une session POP3 typique
-- Le client se connecte au port 995 (POP3S) -- +OK POP3 server ready USER alice@example.com +OK PASS s3cretP@ss +OK Logged in. -- Maintenant en état TRANSACTION -- STAT +OK 3 12400 ← 3 messages, 12400 octets au total LIST +OK 3 messages 1 4200 2 3800 3 4400 . RETR 1 ← télécharger le message 1 +OK 4200 octets (contenu du message RFC 5322 complet...) . DELE 1 ← marquer le message 1 pour suppression +OK Deleted. QUIT +OK Bye. ← le serveur supprime maintenant le message 1
Commandes POP3 principales
| Commande | État | Objectif |
|---|---|---|
USER / PASS
|
AUTH | S'authentifier avec un nom d'utilisateur et un mot de passe |
APOP |
AUTH | Authentification par défi-réponse (évite d'envoyer le mot de passe en texte clair) |
STAT |
TRANSACTION | Obtenir le nombre et la taille totale des messages |
LIST |
TRANSACTION | Lister les numéros et tailles des messages |
RETR |
TRANSACTION | Récupérer un message complet par numéro |
DELE |
TRANSACTION | Marquer un message pour suppression |
NOOP |
TRANSACTION | Garder la session active |
RSET |
TRANSACTION | Dédémarquer tous les messages marqués pour suppression |
TOP |
TRANSACTION | Récupérer les en-têtes plus n lignes du corps |
UIDL |
TRANSACTION | Obtenir la liste des ID uniques (utilisée pour suivre les messages déjà téléchargés) |
QUIT |
Toute | Terminer la session ; déclencher l'état UPDATE |
Détails techniques clés
Télécharger-et-supprimer vs. Garder sur le serveur
Le modèle par défaut de POP3 est télécharger-et-supprimer : le client récupère chaque message avec RETR, puis le marque avec DELE, et le serveur le supprime au QUIT. De nombreux clients offrent une option « laisser les messages sur le serveur », qui consiste simplement à sauter l'étape DELE. La commande UIDL fournit des ID uniques pour que le client puisse suivre les messages qu'il a déjà téléchargés sans les retélécharger.
Verrouillage
POP3 nécessite un verrou exclusif sur la boîte aux lettres. Un seul client peut accéder à une boîte aux lettres POP3 à la fois. Si un deuxième client tente de se connecter alors que le premier est en état TRANSACTION, il sera rejeté. Cela rend POP3 inadapté à l'accès multi-appareils.
Pas de dossiers, pas de drapeaux, pas de recherche
POP3 voit une boîte aux lettres comme une liste plate de messages numérotés. Il n'y a aucune notion de dossiers, étiquettes, drapeaux lus/non lus ou recherche côté serveur. Le serveur est purement un magasin de messages ; toute l'organisation se fait sur le client. C'est la différence fondamentale entre POP3 et IMAP.
Sécurité : APOP et TLS
L'authentification USER/PASS originale envoie le mot de passe en texte clair. APOP utilise un défi MD5 à secret partagé pour éviter cela, mais MD5 est maintenant considéré comme cryptographiquement cassé. POP3 moderne devrait toujours s'exécuter sur TLS implicite au port 995 (selon RFC 8314) ou, en dernier recours, utiliser STLS (l'équivalent POP3 de STARTTLS).
Erreurs courantes
- Utiliser POP3 avec plusieurs appareils. Parce que POP3 télécharge et supprime, un téléphone et un ordinateur portable se battront pour les messages. Un seul appareil voit chaque message. Utilisez IMAP ou JMAP à la place.
- Exécuter POP3 sur le port 110 sans TLS. Les identifiants de connexion et le contenu des messages traversent le réseau en texte clair. Utilisez toujours le port 995 avec TLS implicite.
- Se fier à APOP pour la sécurité. APOP utilise MD5, qui est vulnérable aux attaques par collision et préimage. TLS est la seule protection fiable.
- Ne pas utiliser UIDL pour le mode « laisser sur le serveur ». Sans UIDL, un client en mode « laisser sur le serveur » n'a aucun moyen fiable de savoir quels messages il a déjà téléchargés, ce qui entraîne des doublons après reconnexion.
-
Se déconnecter sans QUIT. Si le client abandonne la connexion sans envoyer
QUIT, le serveur ne rentre pas en état UPDATE. Les commandesDELEen attente sont ignorées — les messages censés être supprimés réapparaîtront. - S'attendre à des fonctionnalités côté serveur. POP3 n'a pas de recherche, pas de drapeaux, pas de dossiers. Si votre application a besoin de l'une de ces fonctionnalités, POP3 est le mauvais protocole.
Impact sur la livrabilité
- POP3 est un protocole de récupération, pas un protocole d'envoi. Il n'a aucun impact direct sur le fait que votre courrier sortant atteigne les boîtes de réception. Cependant, il affecte la manière dont les destinataires interagissent avec le courrier que vous leur envoyez.
- Confirmations de lecture et suivi. Les clients POP3 téléchargent les messages pour une lecture hors ligne. Les pixels de suivi ouvert peuvent ne pas se déclencher jusqu'à ce que l'utilisateur ouvre le message dans son client local, s'il charge du tout les images distantes.
-
Traitement des rebonds. Si vous utilisez POP3 pour sonder une boîte aux lettres de rebond, utilisez
UIDLpour éviter de retraiter les rebonds. Assurez-vous que votre intervalle d'interrogation est suffisamment fréquent pour traiter les rebonds rapidement pour l'hygiène de la liste. - Placement en boîte de réception. Les destinataires utilisant des clients POP3 reçoivent tous les messages dans une boîte de réception plate sans filtrage du spam côté serveur (sauf si le serveur filtre avant l'accès POP3). Cela peut signifier une meilleure visibilité pour vos messages — ou plus de plaintes si les destinataires se sentent submergés.