• [^] # Re: adresses

    Posté par (site web personnel) . En réponse au journal De l'usage du courrier électronique en 2018. Évalué à 3. Dernière modification le 07 août 2018 à 23:57.

    J'ai mis un moment a trouver ce découpage, avant, j'avais un classement ultra simpliste: {pseudo,prénom}-dossier.sous-dossier@domaine et c'est devenu très vite ingérable parce que je ne retrouvais plus aucun mail et j'avais trop de dossiers IMAP pour la majorité des clients mails.

    En pratique, les nouvelles catégories que j'ai trouvées, je ne les utilise pas encore vraiment. J'ai tous les alias des années passées que je redirige à la main via des conditions spécifiques (que j'ai enlevées dans le script ci-dessous). Mais à l'utilisation dans le mailer (j'utilise claws-mail) c'est top.

    Ce sont des alias, pas des adresses mail séparées que j'utilise. Le tout est classé par un script sieve coté serveur. Le script ressemble globalement à:

    require [
     "fileinto",
     "copy",
     "mailbox",
     "imap4flags",
     "variables",
     "envelope",
     "reject",
     "mime",
     "regex"
    ];
    set "category" ""; # mail category
    set "subcategory" ""; # mail subcategory
    set "inbox" ""; # Inbox to use, if not set defaults to INBOX.<category>
    set "subinbox" ""; # Subfolder of inbox
    set "suffix" ""; # mail inbox suffix
    set "list_id" ""; # mailing List-Id if that can be detected
    #
    # Detect List-Id
    #
    if header :matches "List-Id" ["<blah>"] {
     set "list_id" "blah";
    } elsif header :matches "List-Id" ["<*.googlegroups.com>"] {
     set "list_id" "${1}";
    } elsif header :matches "List-Id" ["<blah>"] {
     set "list_id" "blah";
    }
    ################################################################################
    #
    # Lists
    #
    if not string "${list_id}" "" {
     set "category" "Lists";
     set "subinbox" "${list_id}";
     set "subcategory" "${list_id}";
     if string "${list_id}" ["listes", "que", "je", "suis", "activement"] {
     # Keep it in INBOX.Lists
     } else {
     # Autres listes que je regarde moins souvent
     set "inbox" "Lists";
     set "suffix" "all";
     }
    #
    # Postmaster
    #
    } elsif header :matches "Delivered-To" [
     "<postmaster@*>",
     "<abuse@*>",
     "<admin@*>",
     "<dmarc-*@*>"] {
     set "category" "Postmaster";
    #
    # Work
    #
    } elsif header :matches "Delivered-To" [
     "<prénom-travail@*>"] {
     set "category" "Work";
    #
    # Perso
    #
    } elsif header :regex "Delivered-To" [
     "<prénom[0-9]*@.*>",
     "<pseudo[0-9]*@.*>",
     "<prénom-mobile@.*>"] {
     set "category" "Perso";
    } elsif allof(header :matches "Delivered-To" "<robot-mobile@*>", header :matches "From" "*Voicemail*") {
     set "category" "Perso";
    #
    # Shop - shopping
    #
    } elsif header :matches "Delivered-To" [
     "<shop-*@*>"] {
     set "category" "Shop";
     set "subcategory" "${1}";
    #
    # Ads - advertisement
    #
    } elsif header :matches "Delivered-To" [
     "<ads-*@*>"] {
     set "category" "Ads";
     set "subcategory" "${1}";
    #
    # Dev - dev work, bugs, ...
    #
    } elsif header :matches "Delivered-To" [
     "<dev-*@*>"] {
     set "category" "Dev";
     set "subcategory" "${1}";
    #
    # Robot - any robot message
    #
    } elsif header :matches "Delivered-To" [
     "<robot-*@*>"] {
     set "category" "Robot";
     if header :matches "Delivered-To" ["<*-*@*>"] {
     set "subcategory" "${2}";
     }
    #
    # News - any newsletters with reading material
    #
    } elsif header :matches "Delivered-To" [
     "<news-*@*>"] {
     set "category" "News";
     set "subcategory" "${1}";
    #
    # Other - anything else
    #
    } else {
     set "category" "Other";
    }
    ################################################################################
    addflag "flags" "category.${category}";
    if not string "${subcategory}" "" { # add flag if subcategory set
     addflag "flags" "category.${category}.${subcategory}";
    }
    if not string "${list_id}" "" { # add flag if list_id set
     addflag "flags" "ml.${list_id}";
    }
    if string "${inbox}" "" { # Apply inbox category
     set "inbox" "INBOX.${category}";
    }
    if not string "${suffix}" "" { # Apply inbox suffix
     set "inbox" "${inbox}-${suffix}";
    }
    if not string "${subinbox}" "" { # Apply subinbox
     set "inbox" "${inbox}.${subinbox}";
    }
    ################################################################################
    fileinto :create :flags "${flags}" "${inbox}";