]> gitweb.pimeys.fr Git - config-20-100.git/blobdiff - .procmailrc
Décodage des headers avec un oneliner : adieu la dépendance à un script
[config-20-100.git] / .procmailrc
index 1449420a092090f7f49aeb4c7a243d5ea3258f6a..280b61201873640580f492b2e88fb15a59b9fd14 100644 (file)
@@ -17,7 +17,7 @@
 # Ce fichier est mis à votre disposition par des cranseux sans aucune garantie.
 # Nous sommes un certain nombre à l'utiliser nous-mêmes, souvent dans une version
 # légèrement modifiée.
-#  * Nous ne sommes pas responsable si vous perdez des mails ou si ils sont mal triés.
+#  * Nous ne sommes pas responsables si vous perdez des mails ou si ils sont mal triés.
 #  * Pensez à copier également les autres fichiers si vous utilisez les include.
 #  * Vous pouvez rester à jour en trackant le dépôt git : http://git.crans.org/git/fichiers_configuration.git
 #    (on corrige des trucs et on rajoute parfois des nouveaux/meilleurs tris)
@@ -34,7 +34,7 @@
 # (pour l'instant commentés par #~#)
 # Ils doivent être tous les trois dans ${CONFIGDIR}
 #  * Le premier, custom.high.rules contient des règles qui overrident tout
-#    le comportement ce .procmailrc,pour des mails qui doivent être classés
+#    le comportement ce .procmailrc, pour des mails qui doivent être classés
 #    sans autre condition.
 #  * Le deuxème, custom.normal.rules doit contenir la plupart de vos règles
 #    personnelles, il est géré après les mails envoyés par le Cr@ns mais avant
@@ -44,7 +44,6 @@
 #    exemple servir à définir un dossier par défaut autre que .INBOX
 
 
-
 ################################################################################
 #####                             Commentaires                             #####
 ################################################################################
 #   |    |
 #   |    |-[+] Nagios (Comme Monit, mais en mieux/moins bien/différent)
 #   |    |     |
-#   |    |     |- <un dossier pour tousles switchs et un dossier par serveur>
+#   |    |     |- <un dossier pour tous les switchs, un pour toutes les bornes, puis un dossier par serveur>
 #   |    |
 #   |    |-[+B] Stats-upload (Qui a uplodé ?)
 #   |
 #   |    |     |     |- <triés selon les cronjob souvent rencontrés listés dans le fichier cron.folders>
 #   |    |     |
 #   |    |     |-[+] gest_crans (Rapports de bugs envoyés lors d'un crash de gest_crans)
+#   |    |     |
+#   |    |     |-[$] printer_watch (L'imprimante a bourré/n'a plus d'encre)
 #   |    |
 #   |    |-[*+] 3-Argh (Il faut vite faire quelque chose !)
 #   |    |     |
 #################################################################
 ##                   Variables d'environnement                 ##
 #################################################################
+### Paths
 # Path du dossier où sont rangés les mails
 MAILDIR="${HOME}/Mail"
-# Shell à utiliser pour exécuter des commandes
-SHELL="/bin/bash"
 # Dossier contenant tout le garbage procmail-related
 # (le .procmailrc lui-même est dans le home)
 PROCMAILDIR="${HOME}/.procmail"
@@ -238,6 +238,11 @@ CONFIGDIR="${PROCMAILDIR}/rc"
 LOGFILE="${PROCMAILDIR}/logs/procmail.log"
 
 
+### Scripting
+# Shell à utiliser pour exécuter des commandes
+SHELL="/bin/bash"
+
+
 #################################################################
 ##                      Noms de dossiers                       ##
 #################################################################
@@ -295,6 +300,7 @@ MONITORINGDIR="${CRANSDIR}.Monitoring"
 MONITDIR="${MONITORINGDIR}.Monit"
 NAGIOSDIR="${MONITORINGDIR}.Nagios"
 NAGIOSSWITCHSDIR="${NAGIOSDIR}.0-switchs"
+NAGIOSBORNESDIR="${NAGIOSDIR}.1-bornes"
 ARPWATCHDIR="${MONITORINGDIR}.Arpwatch"
 MUNINDIR="${MONITORINGDIR}.Munin"
 MUNINIMPRESSIONDIR="${MUNINDIR}.Imprimante"
@@ -318,6 +324,7 @@ INTRANET2DIR="${SOFTDIR}.Intranet2"
 INTRANET1DIR="${SOFTDIR}.intranet-bugreport"
 CRONDIR="${WILDDIR}.cron"
 GESTCRANSDIR="${WILDDIR}.gest_crans"
+PRINTERWATCHDIR="${WILDDIR}.printer_watch"
 NOLSDIR="${ARGHDIR}.nols"
 PULSARDIR="${ARGHDIR}.pulsar"
 MAILMANDIR="${HUMANPROBLEMSDIR}.Mailman"
@@ -382,6 +389,21 @@ FEDEREZOVHDIR="${FEDEREZADMINDIR}.OVH"
 
 
 
+################################################################################
+#####                            Preprocessing                             #####
+################################################################################
+
+# On décode les champs sur lesquels ont pourrait avoir besoin de matcher
+# plus tard la version décodée. On stocke les versions décodées
+# dans des variables.
+# "formail -cXHeader" récupère le champ Header (-X) en enlevant les \n (-c)
+# si le champ fait plusieurs lignes
+:0
+* ^X-Mailer:
+XMAILER=| formail -cXX-Mailer: | perl -MEncode -pe '$_=encode("iso-8859-1",decode("MIME-Header",$_))'
+
+
+
 ################################################################################
 #####                                Règles                                #####
 ################################################################################
@@ -453,14 +475,19 @@ INCLUDERC="${CONFIGDIR}/custom.high.rules"
 :0
 * ^(From: nagios@crans\.org|User-Agent:.*nagios)
 {
-  # Tous les switchs vont dans le dossier ${NAGIOSSWITCH}
+  # Tous les switchs vont dans le dossier ${NAGIOSSWITCHSDIR}
   :0
-  * ^Subject:.*Alert: bat[^/]+-
+  * ^Subject:.*[A-Z]+ - (bat[a-z]-[0-9]+|backbone|minigiga)\.
   ${NAGIOSSWITCHSDIR}/
   
+  # Toutes les bornes vont dans le dossier ${NAGIOSBORNESDIR}
+  :0
+  * ^Subject:.* [A-Z]+ - [a-z0-9](-*[a-z0-9]+)*\.wifi\.crans\.org
+  ${NAGIOSBORNESDIR}/
+  
   # Chaque serveur a son dossier
   :0
-  * ^Subject:.*Alert: \/[^/\.]+
+  * ^Subject:.* [A-Z]+ - \/[a-z0-9](-*[a-z0-9]+)*
   ${NAGIOSDIR}.${MATCH}/
   
   # Si l'envie prenait à Nagios de raconter un peu plus sa vie
@@ -511,7 +538,7 @@ INCLUDERC="${CONFIGDIR}/custom.high.rules"
 
 # On matche tous les alias de root@crans.org
 :0
-* ^(To|Cc): .*(root|abuse|amavis|backup|bind|bin|clamav|daemon|ftpadm|ftpmaster|ftp-mirror|ftp|games|gnats|irc|list|logcheck|lp|mail|majordom|man|msql|munin|news|operator|postgres|proxy|sync|sys|usenet|uucp|webmaster|www-clubs|www-data|www-perso|postmaster|mailer-daemon)@(crans\.org|crans\.ens-cachan\.fr)
+* ^(To|Cc):.* (root|abuse|amavis|backup|bind|bin|clamav|daemon|ftpadm|ftpmaster|ftp-mirror|ftp|games|gnats|irc|list|logcheck|lp|mail|majordom|man|msql|munin|news|operator|postgres|proxy|sync|sys|usenet|uucp|webmaster|www-clubs|www-data|www-perso|postmaster|mailer-daemon)@(crans\.org|crans\.ens-cachan\.fr)
 {
   # Spam de logcheck
   :0
@@ -655,7 +682,7 @@ INCLUDERC="${CONFIGDIR}/custom.high.rules"
   
   # Messages sur la Freebox
   :0
-  * ^From: telephonie.freebox@freetelecom.fr
+  * ^From: telephonie\.freebox@(mevo\.)?freetelecom\.fr
   ${FREEBOXDIR}/
   
   # Serveurs non synchronisés avec bcfg2
@@ -681,7 +708,7 @@ INCLUDERC="${CONFIGDIR}/custom.high.rules"
 {
   # Statistiques d'upload
   :0
-  * ^X-Mailer: /usr/scripts/surveillance/statistiques.py
+  * ^X-Mailer: /usr/scripts/surveillance/statistiques2.py
   ${STATUPLOADDIR}/
   
   :0
@@ -712,15 +739,22 @@ ${CABLAGEDIR}/
   :0
   * ^From: munin@crans\.org
   ${MUNINIMPRESSIONDIR}/
+  
+  # L'imprimante fait des siennes
+  :0
+  * ^X-Mailer: /usr/scripts/impression/printer_watch.py
+  ${PRINTERWATCHDIR}/
 }
 
+
 # Sur la ML respbats@
+# On utilise la variable XMAILER peuplée dans la phase de Preprocessing
 :0
 * ^List-Id:.*respbats\.lists\.crans\.org
 {
   # Machines supprimées pour chambre invalide
   :0
-  * ^X-Mailer: /usr/scripts/gestion/chambres_vides.py
+  * XMAILER ?? /usr/scripts/gestion/menage/chambres_invalides.py
   ${DELETEDMACHINES}/
 }
 
@@ -858,7 +892,7 @@ INCLUDERC="${CONFIGDIR}/custom.normal.rules"
     
     # MLs Med
     :0
-    * ? echo "${ML}" | grep med
+    * ? echo "${ML}" | grep -E "^med"
     ${MLMEDDIR}.${ML_}/
     
     # MLs SDA
@@ -953,9 +987,13 @@ INCLUDERC="${CONFIGDIR}/custom.normal.rules"
   ##              Gestion des autres mailing-listes              ##
   #################################################################
   # On récupère le nom de domaine et le nom de la ML
+  # Le nom de domaine, c'est le mot (sans .) qui précède le TLD
   DOMAIN=`echo "${ML}" | sed 's/.*\.\([^\.]\+\)\.[^\.]\+$/\1/'`
   # On ne sait jamais ce qu'on peut rencontrer…
   DOMAIN_=`echo "${DOMAIN}" | sed 's/ /_/g'`
+  # On vire le domain et le TLD
+  # On vire .list ou .lists si c'est la composante la plus à droite
+  # du subdomain
   # On prend garde à ne pas créer un sous-dossier
   # si jamais le List-Id contient un . ou un espace
   ML_=`echo "${ML}" | sed 's/\.[^\.]\+\.[^\.]\+$//;s/\.lists\?$//;s/\(\.\| \)/_/g'`