Commandes POP3 optionnelles



7. Commandes POP3 optionnelles

Les commandes POP3 présentées ci-après doivent être supportées par toutes les implémentations minimales de serveurs POP3.

Les commandes POP3 optionnelles décrites ci-après donnent à un client POP3 une plus grande liberté de manipulation des messages, tout en préservant une implémentation simple d’un serveur POP3.

NOTE : Ce document encourage FORTEMENT les implémentations à supporter ces commandes plutôt que d’augmenter le nombre d’informations présentes dans les listings de scan et les listings de dépôt. En résumé, la philosophie de ce document est de mettre plus d’intelligence dans les clients POP3 que dans les serveurs POP3.

TOP msg n

Arguments :

un numéro de message (nécessaire) qui NE peut PAS faire référence à un message marqué comme effacé et un nombre non négatif de lignes (nécessaire)

Restrictions :

ne peut être donné que dans l’état TRANSACTION

Discussion :

Si le serveur POP3 émet une réponse positive, alors la réponse est composée de plusieurs lignes. Après la séquence initiale " +OK ", le serveur POP3 envoie les en-têtes du message désigné par le numéro de message, la ligne vierge séparant les en-têtes du corps du message, puis les n premières lignes demandées du corps du message, en faisant attention aux lignes commençant par un point (comme pour toutes les réponses comportant plusieurs lignes).

Il faut noter que si le nombre de lignes demandé par le client POP3 est plus grand que le nombre de lignes dans le corps du message, alors le serveur POP3 envoie le message entier.

Réponses possibles :

+OK le début du message ci-après

-ERR numéro de message invalide

Exemples :

C : TOP 1 10
S : +OK
S : <Le serveur POP3 envoie les en-têtes du message, une ligne vierge, et les 10 premières lignes du corps du message>
S : .

C : TOP 100 3
S : -ERR no such message

UIDL [msg]

Arguments :

un numéro de message (optionnel), qui, s’il est présent, NE peut PAS faire référence à un message marqué comme effacé

Restrictions :

ne peut être donné que dans l’état TRANSACTION

Discussion :

Si un argument a été donné et que le serveur POP3 émet une réponse positive, cette ligne contient des informations sur ce message. Cette ligne est appelée un " listing d’identificateur unique " (" unique-id listing ") pour ce message.

S’il n’y a pas d’argument et que le serveur POP3 émet une réponse positive, alors la réponse comporte plusieurs lignes. Après la séquence initiale " +OK ", pour chaque message dans le dépôt de courrier, le serveur POP3 répond par une ligne qui contient des informations sur ce message. Cette ligne est aussi appelée " listing d’identificateur unique " pour ce message.

Dans le but de simplifier l’analyse, tous les serveurs POP3 doivent utiliser un certain format pour les listings d’identificateur unique. Un listing d’identificateur unique est formé du numéro de message du message, suivi par un simple espace puis par le numéro d’identificateur unique du message. Il n’y a pas d’autre information après l’identificateur unique dans le listing d’identificateur unique.

L’identificateur unique d’un message est une chaîne de caractères arbitraire déterminée par le serveur, caractères dont la valeur ASCII est l’une des 70 valeurs de 0x21 à 0x7E, qui identifie de façon unique un message à l’intérieur d’un dépôt de courrier et qui ne change pas entre les sessions, et cela même si une session se termine sans entrer dans l’état MISE-A-JOUR (UPDATE). Le serveur ne devrait jamais réutiliser un identificateur unique dans un dépôt de courrier donné, aussi longtemps que l’entité qui se sert de cet identificateur unique existe.

Il faut noter que les messages marqués comme effacés ne sont pas listés.

Bien qu’il soit généralement préférable pour des implémentations de serveurs d’enregistrer arbitrairement les identificateurs uniques assignés dans le dépôt de courrier, cette spécification propose que les identificateurs uniques soient calculés à partir d’une partie du message. Les clients devraient être capable de gérer une situation où deux copies identiques d’un message dans un dépôt de courrier ont le même identificateur unique.

Réponses possibles :

+OK suivi du listing d’identificateur unique

-ERR numéro de message invalide

Exemples :

C : UIDL
S : +OK
S : 1 whqtsw0OOWBw418f9t5JxYwZ
S : 2 QhdPYR:00WBw1Ph7x7

C : UIDL 2
S : +OK 2 QhdPYR:00WBw1Ph7x7

C : UIDL 3
S : -ERR no such message, only 2 messages in maildrop

USER nom

Arguments :

une chaîne de caractères identifiant une boite aux lettres (nécessaire), qui a une signification UNIQUEMENT pour le serveur

Restrictions :

peut être donné uniquement dans l’état AUTORISATION (AUTHORIZATION) après le message POP3 de bienvenue ou après une commande USER ou PASS non valide

Discussion :

Pour s’authentifier en utilisant la combinaison de commandes USER et PASS, le client doit d’abord envoyer la commande USER. Si le serveur POP3 répond par un indicateur d’état positif (" +OK "), alors le client peut émettre soit la commande PASS pour terminer l’authentification, soit la commande QUIT pour terminer la session POP3. Si le serveur POP3 répond par un indicateur d’état négatif (" -ERR ") à la commande USER, alors le client peut soit émettre une nouvelle commande d’authentification, soit émettre la commande QUIT.

Le serveur peut retourner une réponse positive même s’il n’existe pas une telle boite aux lettres. Le serveur peut retourner une réponse négative si la boite aux lettres existe, mais n’accepte pas une authentification par mot de passe en clair (plaintext password).

Réponses possibles :

+OK le nom est une boite aux lettres valide

-ERR ne connaît pas cette boite aux lettres

Exemples :

C : USER frated
S : -ERR sorry, no mailbox for frated here

C : USER mrose
S : +OK mrose is a real hoopy frood

PASS chaîne-de-caractères

Arguments :

un mot de passe spécifique à cette boite aux lettres sur ce serveur (nécessaire)

Restrictions :

peut être donné uniquement dans l’état AUTORISATION (AUTHORIZATION) immédiatement après une commande USER valide

Discussion :

Quand le client émet une commande PASS, le serveur POP3 utilise les deux arguments fournis par les commandes USER et PASS pour déterminer si le client peut accéder au dépôt de courrier approprié.

Puisque la commande PASS a exactement un seul argument, un serveur POP3 peut traiter les espaces de l’argument comme faisant partis du mot de passe, plutôt que comme séparateurs d’arguments.

Réponses possibles :

+OK accès à la boite aux lettres verrouillé et boite aux lettres prête

-ERR mot de passe non valide

-ERR impossible de verrouiller l’accès à la boite aux lettres

Exemples :

C : USER mrose
S : +OK mrose is a real hoopy frood
C : PASS secret
S : -ERR maildrop already locked

C : USER mrose
S : +OK mrose is a real hoopy frood
C : PASS secret
S : +OK mrose’s maildrop has 2 messages (320 octets)

APOP nom somme-de-contrôle

Arguments :

une chaîne de caractères identifiant une boite aux lettres et une somme de contrôle (digest) de type MD5 (tous les deux nécessaires)

Restrictions :

peut être donné uniquement dans l’état AUTORISATION (AUTHORIZATION) après le message POP3 de bienvenue ou après une commande USER ou PASS non valide

Discussion :

Normalement, chaque session POP3 commence par un échange USER/PASS. De cela résulte que le mot de passe spécifique à l’utilisateur sur le serveur sera transmis en clair sur le réseau. Pour une utilisation intermittente de POP3, cela peut ne pas introduire un risque très important. Cependant, un grand nombre d’implémentations de client POP3 se connecte au serveur POP3 périodiquement -- pour savoir si du courrier est arrivé. L’intervalle de temps entre les sessions peut même parfois être de l’ordre de cinq minutes. Aussi, le risque d’interception du mot de passe est fortement augmenté.

Une autre méthode d’authentification est nécessaire, permettant à la fois d’authentifier l’origine et de protéger les réponses, mais qui n’implique pas l’envoi du mot de passe en clair sur le réseau. La commande APOP fournit cette fonctionnalité.

Un serveur POP3 qui implémente la commande APOP mettra un timbre-à-date (timestamp) dans son message de bienvenue. La syntaxe de ce timbre-à-date respecte les spécifications des identificateurs de message (msg-id) du [RFC822], et DOIT être différent chaque fois qu’un serveur POP3 émet un message de bienvenue. Par exemple, pour une implémentation UNIX dans laquelle un processus UNIX séparé est utilisé pour chaque instance de serveur POP3, la syntaxe d’un timbre-à-date pourrait être :

<identificateur-de-processus.heure@nom-de-l’hôte>

où l’identificateur de processus est la valeur décimale du PID du processus, l’heure est la valeur décimale de l’heure système et le nom de l’hôte est le nom complet du nom de domaine correspondant à l’hôte sur lequel tourne le serveur POP3.

Le client POP3 prend note du timbre-à-date et émet la commande APOP. Le paramètre " nom " a exactement le même sens que le paramètre " nom " de la commande USER. Le paramètre " somme de contrôle " est calculé en appliquant l’algorithme MD5 du [RFC1321] à la chaîne de caractères formée du timbre-à-date (incluant les symboles <>) suivi du secret partagé. Le secret partagé est une chaîne de caractères connue uniquement par le client et le serveur POP3. Certaines précautions devraient être prises afin que le secret ne soit pas dévoilé, car chacun a conscience qu’il permet a n’importe qui de prendre l’identité de l’utilisateur " nom " sur le serveur. Le paramètre " somme de contrôle " lui-même est une valeur de 16 octets envoyée dans un format hexadécimal, en utilisant les caractères ASCII minuscules.

Quand le serveur POP3 reçoit la commande APOP, il vérifie la somme de contrôle donnée en paramètre. Si la somme de contrôle est correcte, le serveur POP3 émet une réponse positive et la session POP3 entre dans l’état TRANSACTION. Sinon, une réponse négative est émise et la session POP3 reste dans l’état AUTORISATION (AUTHORIZATION).

Il faut noter que lorsque la longueur du secret partagé augmente, la difficulté de trouver ce secret à partir de sommes de contrôle augmente d’autant. Aussi, les secrets partagés devraient être de longues chaînes de caractères (beaucoup plus longues que l’exemple de 8 caractères ci-après).

Réponses possibles :

+OK accès à la boite aux lettres verrouillé et boite aux lettres prête

-ERR permission non accordée

Exemples :

S : +OK POP3 server ready <1896.697170952@dbc.mtview.ca.us>
C : APOP mrose c4c9334bac560ecc979e58001b3e22fb
S : +OK maildrop has 1 message (369 octets)

Dans cet exemple, le secret partagé est la chaîne de caractères " tanstaaf ". Aussi, l’algorithme MD5 est appliqué à la chaîne " <1896.697170952@dbc.mtview.ca.us>tanstaaf " qui produit la somme de contrôle " c4c9334bac560ecc979e58001b3e22fb ".





traducteur : Nicolas JOURDAN