Date de publication du RFC : Décembre 2020
Auteur(s) du RFC : M. Slusarz (Open-Xchange)
Chemin des normes
Réalisé dans le cadre du groupe de travail IETF extra
Première rédaction de cet article le 19 décembre 2020
Le protocole IMAP d'accès aux boites aux lettres (RFC 3501) continue à évoluer et reçoit de nouvelles extensions. Celle normalisée dans ce RFC permet au client IMAP, le MUA, de ne récupérer qu'une partie du message, afin d'afficher un avant-gout de celui-ci à l'utilisateur humain, qui pourra ainsi mieux choisir s'il veut lire ce message ou pas.
Il y a déjà des clients de
messagerie qui présentent le début du message mais, sans
l'extension de ce RFC, cela nécessite de tout récupérer (un
FETCH BODYSTRUCTURE
pour savoir quelle partie
MIME récupérer, suivi d'un FETCH
BODY
, et sans possibilité de les exécuter en parallèle)
avant de ne sélectionner qu'une partie. Au contraire, avec
l'extension PREVIEW
(« avant-gout »), c'est le
serveur IMAP qui va sélectionner cet avant-gout. Avantages : une
présélection qui est identique sur tous les clients, moins de
travail pour le client et surtout moins de données
transmises. Avant, le client était forcé de récupérer beaucoup de
choses car il ne pouvait pas savoir à l'avance combien d'octets
récolter avant de générer l'avant-gout. Si le message était du
texte brut, OK, mais si c'était de
l'HTML, il
pouvait être nécessaire de ramasser beaucoup d'octets de formatage
et de gadgets avant d'en arriver au vrai contenu. (Ou bien, il
fallait procéder progressivement, récupérant une partie du message,
puis, si nécessaire, une autre, ce qui augmentait la latence.)
Donc, concrètement, comment ça se passe ? La section 3 de notre
RFC décrit l'extension en détail. Elle a la forme d'un attribut
PREVIEW
qui suit la commande
FETCH
(RFC 3501, section
6.4.5). Voici un exemple, la commande étant étiquetée
MYTAG01
:
Client : MYTAG01 FETCH 1 (PREVIEW) Serveur : * 1 FETCH (PREVIEW "Bonjour, voulez-vous gagner plein d'argent rapidement ?") MYTAG01 OK FETCH complete.
Idéalement, le serveur renvoie toujours le même avant-gout pour un message donné (mais le RFC ne l'impose pas car cela peut être difficile dans certains cas, par exemple en cas de mise à jour du logiciel du serveur, qui change l'algorithme de génération des avant-gouts).
La syntaxe formelle
de l'attribut PREVIEW
est
en section 6 du RFC.
Le format de l'avant-gout est forcément du texte brut, encodé en UTF-8, et ne doit pas avoir subi d'encodages baroques comme Quoted-Printable. Sa longueur est limitée à 256 caractères (caractères Unicode, pas octets, attention si vous programmez un client et que votre tampon est trop petit).
Le contenu de l'avant-gout est typiquement composé des premiers caractères du message. Cela implique qu'il peut contenir des informations privées et il ne doit donc être montré qu'aux clients qui sont autorisés à voir le message complet.
Parfois, le serveur ne peut pas générer un avant-gout, par exemple si le message est chiffré avec OpenPGP (RFC 4880) ou bien si le message est entièrement binaire, par exemple du PNG. Dans ces cas, le serveur est autorisé à renvoyer une chaîne de caractères vide.
Si le serveur génère un avant-gout lui-même (du genre « Image de
600x600 pixels, prise le 18 décembre 2020 », en utilisant les
métadonnées de l'image), il est recommandé
qu'il choisisse la langue indiquée par
l'extension LANGUAGE
(RFC 5255).
Comme l'avant-gout n'est pas forcément indispensable pour l'utilisateur, le RFC suggère (section 4) de le charger en arrière-plan, en affichant la liste des messages sans attendre tous ces avant-gouts.
Le serveur IMAP qui sait générer ces avant-gouts l'annonce via la
capacité PREVIEW
, qui est notée dans le
registre des capacités. Voici un exemple :
Client : MYTAG01 CAPABILITY Serveur : * CAPABILITY IMAP4rev1 PREVIEW MYTAG01 OK Capability command completed. Client : MYTAG02 FETCH 1 (RFC822.SIZE PREVIEW) Serveur : * 1 FETCH (RFC822.SIZE 5647 PREVIEW {200} Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur aliquam turpis et ante dictum, et pulvinar dui congue. ligula nullam ) MYTAG02 OK FETCH complete.
Attention si vous mettez en œuvre cette extension, elle nécessite davantage de travail du serveur, donc un client méchant pourrait surcharger ledit serveur. Veillez bien à authentifier les clients, pour retrouver le méchant (section 7 du RFC).
Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)
Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)