Operations de bases
3. Opérations de bases
D’abord, l’hôte serveur lance le service POP3 en écoutant le port TCP 110. Quand un hôte client souhaite utiliser ce service, il établit une connexion TCP avec l’hôte serveur. Quand la connexion est établie, le serveur POP3 envoie un message de bienvenue. Le client et le serveur POP3 échangent alors des commandes et des réponses (respectivement) jusqu’à ce que la connexion soit fermée ou avortée.
Les commandes POP3 sont des mot-clefs (indépendants de la casse), pouvant être suivis d’un ou plusieurs arguments. Toutes les commandes sont terminées par la séquence CRLF (Retour Chariot, Saut de Ligne ASCII). Les mot-clefs et les arguments sont formés de caractères ASCII imprimables. Les mot-clefs et les arguments sont chacun séparés par un unique caractère espace (SPACE). Les mot-clefs sont formés de trois ou quatre caractères. Chaque argument peut avoir jusqu’à 40 caractères.
Les réponses POP3 sont des indicateurs d’état et un mot-clef pouvant être suivi d’informations complémentaires. Toutes les réponses sont terminées par la séquence CRLF. Il y a actuellement deux indicateurs d’état : positif (" +OK ") et négatif (" -ERR "). Les serveurs DOIVENT envoyer " +OK " et " -ERR " en majuscules.
Certaines commandes ont une réponse sur plusieurs lignes. Dans ces cas, qui sont clairement explicités ci-après, après avoir envoyé la première ligne de la réponse et la séquence CRLF, chaque ligne complémentaire est envoyée, chacune terminée par la séquence CRLF. Lorsque toutes les lignes de la réponse ont été envoyées, une ligne finale est envoyée, formée d’un point (code ASCII décimal 046, " . ") et de la séquence CRLF. Si une des lignes de la réponse commence par un point, ce point est doublé (transmis deux fois consécutivement ou " byte-stuffed "). Ainsi une réponse sur plusieurs lignes se termine par la séquence de cinq octets " CRLF.CRLF ". Lors de l’examen d’une réponse sur plusieurs lignes, le client examine si la ligne commence par un point. Si c’est le cas : si les deux octets suivants ne forment pas la séquence CRLF, le premier octet de la ligne (le point) est enlevé ; sinon (si CRLF suit immédiatement le point), la réponse du serveur POP se termine ici et la ligne (" .CRLF ") n’est pas considérée comme faisant parti de la réponse sur plusieurs lignes.
Une session POP3 évolue à travers un certains nombre d’états au cours de sa vie. Une fois que la connexion TCP a été ouverte et que le serveur POP3 a envoyé le message de bienvenue, la session entre dans l’état AUTORISATION (AUTHORIZATION). Dans cet état, le client doit s’authentifier auprès du serveur POP3. Une fois que le client a réussi a faire cela, le serveur acquiert les ressources associées au dépôt de courrier du client, et la session entre dans l’état TRANSACTION. Dans cet état, le client demande des actions de la part du serveur POP3. Quand le client a émis la commande QUIT (quitter), la session entre dans l’état MISE-A-JOUR (UPDATE). Dans cet état, le serveur POP3 libère les ressources acquises durant l’état TRANSACTION et dit au revoir. La connexion TCP est alors fermée.
Un serveur DOIT répondre à une commande non reconnue, non implémentée ou syntaxiquement incorrecte par l’indicateur d’état négatif. Un serveur DOIT répondre à une commande émise quand la session est dans un état incorrect en répondant avec un indicateur d’état négatif. Il n’y a pas de méthode générale pour un client pour faire la distinction entre un serveur qui ne possède pas une commande optionnelle et un serveur qui ne souhaite pas ou qui n’est pas capable de prendre en compte cette commande.
Un serveur POP3 PEUT implémenter un mécanisme afin de déconnecter les clients trop longtemps inactifs (inactivity autologout timer). Ce temps d’inactivité entraînant la déconnexion DOIT être d’au moins 10 minutes. La réception de n’importe qu’elle commande du client durant ce temps devrait justifier la remise à zéro de ce mécanisme. Quand ce temps expire, la session N’entre PAS dans l’état MISE-A-JOUR (UPDATE) -- le serveur devrait fermer la connexion TCP sans effacer de message et sans envoyer une réponse au client.
traducteur : Nicolas JOURDAN
|