5593 links
  • GuiGui's Show

  • Home
  • Login
  • RSS Feed
  • Tag cloud
  • Picture wall
  • Daily
Links per page: 20 50 100
page 1 / 1
  • Utiliser Sieve pour ajouter une information à un courriel lors de sa réception

    Problème

    Une administration met à disposition un téléservice pour effectuer des démarches qui se déroulent sur un temps long (plusieurs années).

    Elle notifie par courriel l'avancement d'un dossier. Cette notification ne contient aucune information autre que le numéro de dossier et elle renvoie au téléservice.

    Quand on a plusieurs dossiers (en dizaines), il faut donc aller sur le téléservice ou consulter son inventaire (tableur) maison pour savoir de quel dossier il s'agit.

    Il m'est donc impossible de prioriser ma réaction en fonction du dossier sans accomplir ces formalités au préalable.

    C'est fastidieux. N'y a-t-il pas moins pénible ?


    Pistes

    J'ai deux idées reposant sur Sieve, un langage de script pour manipuler des emails côté serveur, cf. mon article sur le sujet.

    Soit ajouter un drapeau IMAP (flag) contenant le nom du dossier administratif. Usuellement, ces drapeaux sont utilisés pour marquer un état (vu, répondu, etc., cf. RFC 9051), signaler une priorité (urgent, important, etc.) ou trier (perso, pro, etc.).

    Soit ajouter le nom du dossier administratif dans le sujet du courriel.


    Réalisation

    Pour rappel, j'utilise PigeonHole, l'implémentation de Sieve de Dovecot (qui, en sus d'être un serveur IMAP / POP peut aussi être un MDA, un agent local de livraison des emails, qui s'occupe des derniers kilomètres, comme un facteur humain, nommé dovecot-lda).


    Drapeau IMAP

    D'abord, il faut utiliser l'action addflag <nom_drapeau> de l'extension imap4flags, cf. RFC 5232 :

    require ["body", "imap4flags"];
    
    if body :contains "<numéro_dossier_administratif>" {
      addflag "<nom_du_dossier_administratif>";
    
      stop;
    }

    Ensuite, il faut configurer ton logiciel de messagerie (MUA) pour qu'il affiche un libellé en fonction du drapeau. Avec Thunderbird, cela se passe dans Édition > Paramètres > onglet Général > rubrique Étiquettes.


    Modification du sujet

    Dans un courriel, comme dans un courrier, le sujet (objet) est un entête, comme la date, l'expéditeur, etc.

    Il existe l'extension Sieve « Editheader » (RFC 5293).

    Néanmoins, elle ne permet pas de modifier un entête, uniquement d'en ajouter et d'en supprimer. Dès lors, il me faudra stocker le contenu initial de l'entête entre les deux opérations.

    L'extension Sieve « Variables » (RFC 5229) est là pour ça.

    Comment affecter le contenu d'un entête existant à une variable ? Le RFC sur l'extension Variables donne la réponse : expression régulière (regex), capture, groupe de correspondance, etc. Tout cela est pris en charge par le comparateur :matches.



    Il n'y a plus qu'à assembler ces différentes briques pour composer la solution.

    Sur le web, je trouve un exemple tout prêt. Je le recopie :

    require ["body", "variables", "editheader"];
    
    if body :contains "<numéro_dossier_administratif>" {
      # On affecte le sujet existant à une variable nommée « varSubject »
      if header :matches "Subject" "*" {
        set "varSubject" "${1}";
      }
    
      deleteheader "Subject";
    
      # « last » est pour le confort : insertion de l'entête à la fin des autres entêtes, juste avant le corps
      addheader :last "Subject" "${varSubject} <nom_du_dossier_administratif>";
    
      stop;
    }



    Attention : avec Dovecot, il faut activer l'extension Editheader dans la configuration et la recharger avant de pouvoir l'utiliser dans un script, cf. la documentation (sinon : « error: require command: unknown Sieve capability `editheader' ») :

    plugin {
      sieve_extensions = +editheader
    }



    On peut également restreindre les entêtes manipulables par un script Sieve via une liste des entêtes autorisés ou une liste des entêtes interdit. Je préconise d'activer ce paramètre.


    Avantages et inconvénients

    L'inconvénient principal du drapeau, c'est qu'il faut le définir dans le script Sieve et dans le client de courriels. La duplication d'une information doit toujours être évitée pour simplifier la maintenance. De plus, l'automatisation de l'ajout des drapeaux côté Thunderbird ne va pas être facile et, vu mes dizaines de dossiers administratifs, il est hors de question que je fasse le boulot à la main.

    L'autre inconvénient, c'est qu'il faut cliquer sur un email dans Thunderbird pour voir son drapeau. Oui, un drapeau peut être associé à une couleur, mais vu le nombre de mes dossiers administratifs, c'est impossible à mémoriser.

    L'inconvénient principal de la modification d'entête, c'est la sécurité et l'intégrité. Ce n'est pas pour rien que Dovecot n'active pas cette extension par défaut et permet de restreindre la manipulation à certains entêtes. Je ne l'aurais pas activée si je n'étais pas le seul utilisateur de mon serveur de courriel. De plus, que se passe-t-il en cas d'incident (plantage, panne d'électricité, etc.) entre la suppression de l'entête et son ajout ?

    L'autre inconvénient est que c'est inutilisable sur des courriels que l'on compte utiliser comme preuves. Ce n'est pas mon cas, mais il faut y penser.


    Précaution

    Pour des raisons de performance, d'intégrité et d'évitement des faux positifs, je préconise de délimiter les emails susceptibles de faire l'objet d'une recherche dans leur corps ou de voir l'un de leur entête être modifié.


    Rigolo

    Je ne suis pas parvenu à utiliser les drapeaux prédéfinis dans Thunderbird (« Important », « Travail », « Personnel », etc.). Dans mon script Sieve, je les ai écrits en français, en anglais, en respectant la case ou non, rien à faire, Thunderbird les ignore.

    Fri 08 Aug 2025 05:13:29 PM CEST - permalink -
    - http://shaarli.guiguishow.info/?MDrpBg
Links per page: 20 50 100
page 1 / 1
Mentions légales identiques à celles de mon blog | CC BY-SA 3.0

Shaarli - The personal, minimalist, super-fast, database free, bookmarking service by the Shaarli community