# 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)
# (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
# 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é ?)
# |
#################################################################
## 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"
LOGFILE="${PROCMAILDIR}/logs/procmail.log"
+### Scripting
+# Shell à utiliser pour exécuter des commandes
+SHELL="/bin/bash"
+
+
#################################################################
## Noms de dossiers ##
#################################################################
MONITDIR="${MONITORINGDIR}.Monit"
NAGIOSDIR="${MONITORINGDIR}.Nagios"
NAGIOSSWITCHSDIR="${NAGIOSDIR}.0-switchs"
+NAGIOSBORNESDIR="${NAGIOSDIR}.1-bornes"
ARPWATCHDIR="${MONITORINGDIR}.Arpwatch"
MUNINDIR="${MONITORINGDIR}.Munin"
MUNINIMPRESSIONDIR="${MUNINDIR}.Imprimante"
+################################################################################
+##### 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 #####
################################################################################
: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
# 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
# Messages sur la Freebox
:0
- * ^From: telephonie.freebox@freetelecom.fr
+ * ^From: telephonie\.freebox@(mevo\.)?freetelecom\.fr
${FREEBOXDIR}/
# Serveurs non synchronisés avec bcfg2
{
# Statistiques d'upload
:0
- * ^X-Mailer: /usr/scripts/surveillance/statistiques.py
+ * ^X-Mailer: /usr/scripts/surveillance/statistiques2.py
${STATUPLOADDIR}/
:0
${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}/
}
# MLs Med
:0
- * ? echo "${ML}" | grep med
+ * ? echo "${ML}" | grep -E "^med"
${MLMEDDIR}.${ML_}/
# MLs SDA
## 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'`