From 27c7a1545c0c61093a0d1e52d89f8db82a8c78dd Mon Sep 17 00:00:00 2001 From: Vincent Le Gallic Date: Fri, 12 Feb 2016 06:11:42 +0100 Subject: [PATCH] [procmail] Gestion du tri des mail de Discourse --- .procmail/rc/discourse.preprocessing | 26 ++++++++++++++++++++++ .procmail/rc/discourse.rules | 33 ++++++++++++++++++++++++++++ .procmailrc | 19 ++++++++++++---- 3 files changed, 74 insertions(+), 4 deletions(-) create mode 100644 .procmail/rc/discourse.preprocessing create mode 100644 .procmail/rc/discourse.rules diff --git a/.procmail/rc/discourse.preprocessing b/.procmail/rc/discourse.preprocessing new file mode 100644 index 0000000..665e1b2 --- /dev/null +++ b/.procmail/rc/discourse.preprocessing @@ -0,0 +1,26 @@ +# Complémentaire au .procmailrc générique mis à votre disposition +# par les gentils membres actifs du Cr@ns +# Vous pouvez l'utiliser, le redistribuer, le modifier à votre convenance. +# Des questions, des suggestions : {nounou,ca}@lists.crans.org +# Licence : WTFPL + +# Ce fichier doit être exécuté pour que discourse.rules puisse +# trier correctement les mails de Discourse + +#------------------------------------------------------------------------------ + +################################################################# +## Variables ## +################################################################# + +### Dossier sous lequel l'arborescence des mails envoyés par +### Discourse sera rangée +DISCOURSEDIR=.Discourse + +################################################################# +## Préprocessing ## +################################################################# +# On redécode le champ List-ID, mais cette fois-ci en en retirant +# les accents potentiels. +:0 +LISTID=| formail -cXList-ID: | perl -MEncode -MText::Unaccent::PurePerl -pE '$_=encode("utf-8",unac_string(decode("MIME-Header", $_)))' diff --git a/.procmail/rc/discourse.rules b/.procmail/rc/discourse.rules new file mode 100644 index 0000000..cf22158 --- /dev/null +++ b/.procmail/rc/discourse.rules @@ -0,0 +1,33 @@ +# Complémentaire au .procmailrc générique mis à votre disposition +# par les gentils membres actifs du Cr@ns +# Vous pouvez l'utiliser, le redistribuer, le modifier à votre convenance. +# Des questions, des suggestions : {nounou,ca}@lists.crans.org +# Licence : WTFPL + +# Ce fichier permet de trier les mails envoyés par Discourse + +#------------------------------------------------------------------------------ + +################################################################# +## Gestion des mails de Discourse ## +################################################################# +:0 +* ML ?? discourse\.crans\.org$ +{ + ML=`echo ${ML} | sed 's/discourse\.crans\.org$//;s/\.$//'` + # Le List-ID de Discourse est dans l'ordre sous-catégorie.catégorie + # pour une arborescence mail, on veut l'ordre inverse + ML=`echo ${ML} | sed "s/\./\n/g" | tac | paste -sd "."` + + # On veut s'assurer ML contient encore quelque chose (c'est-à-dire, + # n'était pas juste discourse.crans.org sans rien avant) + :0 + * ? echo $ML + * ? test -n "${ML}" + ${DISCOURSEDIR}.${ML}/ + + # Dossier par défaut + :0 + ${DISCOURSEDIR}/ +} + diff --git a/.procmailrc b/.procmailrc index d6d636b..c6d08b2 100644 --- a/.procmailrc +++ b/.procmailrc @@ -399,7 +399,12 @@ XMAILER=| formail -cXX-Mailer: | perl -MEncode -pe '$_=encode("utf-8",decode("MI * ^Subject: SUBJECT=| formail -cXSubject: | perl -MEncode -pe '$_=encode("utf-8",decode("MIME-Header",$_))' - +:0 +* ^List-ID: +LISTID=| formail -cXList-ID: | perl -MEncode -pe '$_=encode("utf-8",decode("MIME-Header",$_))' +#~# # Pour faire fonctionner correctement le tri des mails envoyés par Discourse, +#~# # Décommenter le INCLUDERC suivant +#~# INCLUDERC="${CONFIGDIR}/discourse.preprocessing" ################################################################################ ##### Règles ##### @@ -805,10 +810,9 @@ INCLUDERC="${CONFIGDIR}/custom.normal.rules" :0 # On récupère tous les mails qui sont arrivés par l'intermédaire d'une ML -* ^List-Id:.*\/<[^<>]+>$ +* ^List-Id:.* { - ML=$MATCH - ML=`echo "${ML}" | sed 's///'` + ML=`echo "${LISTID}" | sed 's/[^<]*//'` ################################################################# ## Gestion des mailing-listes Cr@ns ## @@ -929,6 +933,13 @@ INCLUDERC="${CONFIGDIR}/custom.normal.rules" ${MLCAMPUSDIR}.${MLFAILSUFFIX}.${ML_}/ } + #~# # Décommenter pour activer le tri des mails envoyés par + #~# # Discourse. Attention, penser à décommener également + #~# # l'INCLUDERC de discourse.preprocessing + #~# # et lire https://wiki.crans.org/VieCrans/FichiersConfiguration#rc.2Fdiscourse + #~# # à propos de la remarque sur le module Perl à installer + #~# INCLUDERC=${CONFIGDIR}/discourse.rules + ################################################################# ## Gestion des mailing-listes FedeRez ## ################################################################# -- 2.39.2