# * Le troisième, custom.final.rules est appliqué tout à la fin, il peut par
# exemple servir à définir un dossier par défaut autre que .INBOX
-# Attention, certaines règles (pour l'instant commentées par #~#)
-# font appel à des scripts.
-# Pour qu'elles fonctionnent correctement, il faut que vous
-# possédiez les scripts correspondant et que vous adaptiez
-# la partie "Scripting" des variables de configuration.
-# (cf https://wiki.crans.org/VieCrans/FichiersConfiguration#scripting)
-
################################################################################
##### Commentaires #####
# | | |-[B] bureau
# | | |-[B] crous-crans
# | | |-[+B] disconnect
-# | | |-[$*+] impression (sans modif_solde, munin, print_status)
+# | | |-[$*+] impression (sans modif_solde, munin)
# | | |-[$*+] respbats (bot-free)
# | | |-[+B] spoof
# | | |-[T] trésorier
# | |-[$*+] machines_supprimees (puni !)
# | |
# | |-[+] ovh (Factures, Newsletters)
+# | |
+# | |-[+BT] paiements (rechargements des comptes impression via comnpay)
# |
# |
# |-[*+] Monitoring (une machine fait-elle de la merde ?)
# | | |-[+] new_activity
# | | |-[+] new_station
# | |
+# | |-[+B] mac_prises (spoofing is being watched)
+# | |
# | |-[*+] Monit (Un truc marche pas/remarche, un disque est plein,…)
# | | |
# | | |- <un dossier par serveur>
# | |
# | |-[+] 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 !)
# | | |
# |
# |-[$*+B] Technique (les discussions et les trucs reliés)
# |
-# |-[$*+] Cablages (Il faut aller brancher un truc)
-# |
# |-[*+] Freebox (Vous avez un message vocal)
# |
# |-[*+] Nounou
# |-[+] root
# |
# |-[*+] roots
-# |
-# |-[*+B] tracker (Todolist)
#
# Federez (Les mails concernant l'asso FedeRez sont dans un dossier à part)
# |
### Scripting
# Shell à utiliser pour exécuter des commandes
SHELL="/bin/bash"
-## Scripts
-# Dossier où sont rangés les scripts
-SCRIPTSFOLDER="${HOME}/scripts/crans_toolbox/"
-# Scripts pour décoder les headers MIME
-DECODEHEADERSCRIPT="${SCRIPTSFOLDER}decode_header.pl"
#################################################################
# Spam reçu sur (usenet|news)@(crans.org|crans.ens-cachan.fr)
SPAMINNDIR="${SPAMDIR}.usenet"
-
### Dossiers pour les MLs qui ne sont pas catchées par une autre règle
## Dossier racine
MLDIR=".ML"
## Dossier pour ranger les rappels de mots de passes envoyés par Mailman
RAPPELMDPDIR="${MLDIR}.rappels_mdp"
-
### Dossiers pour les MLs du campus
MLCAMPUSDIR="${MLDIR}.Campus"
MLBDEDIR="${MLCAMPUSDIR}.BDE"
MONITDIR="${MONITORINGDIR}.Monit"
NAGIOSDIR="${MONITORINGDIR}.Nagios"
NAGIOSSWITCHSDIR="${NAGIOSDIR}.0-switchs"
+NAGIOSBORNESDIR="${NAGIOSDIR}.1-bornes"
ARPWATCHDIR="${MONITORINGDIR}.Arpwatch"
MUNINDIR="${MONITORINGDIR}.Munin"
MUNINIMPRESSIONDIR="${MUNINDIR}.Imprimante"
STATUPLOADDIR="${MONITORINGDIR}.Stats-upload"
+MACPRISESDIR="${MONITORINGDIR}.Mac_prises"
## Dossiers pour le mails concernant des "problèmes"
# Racine
INTRANET1DIR="${SOFTDIR}.intranet-bugreport"
CRONDIR="${WILDDIR}.cron"
GESTCRANSDIR="${WILDDIR}.gest_crans"
-PRINTERWATCHDIR="${WILDDIR}.printer_watch"
NOLSDIR="${ARGHDIR}.nols"
PULSARDIR="${ARGHDIR}.pulsar"
MAILMANDIR="${HUMANPROBLEMSDIR}.Mailman"
-PRINTSTATUSDIR="${HUMANPROBLEMSDIR}.print_status"
MULTIDECODIR="${HUMANPROBLEMSDIR}.multi-deco"
## Dossier de surveillance (= surveillance d'actions humaines)
BCFG2DIR="${INFORMATIONDIR}.bcfg2"
# Statistiques des serveurs de news
INNDIR="${INFORMATIONDIR}.inn"
+# Notifications de bridage pour upload
+DECODIR="${INFORMATIONDIR}.deconnexion"
+# Résumés des rehargements impression comnpay
+PAIEMENTSDIR="${INFORMATIONDIR}.paiements"
## Dossier de discussion techniques
# Racine
TECHNIQUEDIR="${CRANSDIR}.Technique"
# Mails de roots@ non catchées avant
ROOTSDIR="${TECHNIQUEDIR}.roots"
-# Mails de câblages demandé/effectué
-CABLAGEDIR="${TECHNIQUEDIR}.Cablages"
-# Mails du tracker
-TRACKERDIR="${TECHNIQUEDIR}.Tracker"
# Mails de la ML nounou
NOUNOUDIR="${TECHNIQUEDIR}.Nounou"
# Messages laissés sur la Freebox
+################################################################################
+##### 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("utf-8",decode("MIME-Header",$_))'
+
+:0
+* ^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 #####
################################################################################
: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
* ^X-GitInfo
{
:0
- * ^X-Mailer: /usr/scripts/utils/git-whatsnew
+ * XMAILER ?? /usr/scripts/utils/git-whatsnew
${GITDIR}.whatsnew/
:0
${DARCSDIR}/
}
- # Tracker
- :0
- * ^X-Mailer:.*Redmine
- ${TRACKERDIR}/
-
# Messages sur la Freebox
:0
* ^From: telephonie\.freebox@(mevo\.)?freetelecom\.fr
{
# Statistiques d'upload
:0
- * ^X-Mailer: /usr/scripts/surveillance/statistiques.py
+ * XMAILER ?? /usr/scripts/surveillance/statistiques2.py
${STATUPLOADDIR}/
+ # Résumé quotidien des correspondances mac_prises
:0
- * ^Subject:.*fois.*en un mois
- ${MULTIDECODIR}/
+ * XMAILER ?? /usr/scripts/surveillance/mac_prises/mac_prise_analyzer.py
+ ${MACPRISESDIR}/
+
+ # Notifications de bridage pour upload
+ :0
+ * XMAILER ?? /usr/scripts/surveillance/deconnexion2.py
+ {
+ # Récidivistes
+ :0
+ * SUBJECT ?? fois ce mois
+ ${MULTIDECODIR}/
+
+ :0
+ ${DECODIR}/
+ }
}
-# Câblage demandé/effectué
-:0
-* ^X-Crans-Intranet: cablage
-${CABLAGEDIR}/
-
# Sur la ML impression@
:0
* ^List-Id:.*impression\.lists\.crans\.org
* ^X-Mailer: modif_solde
${LDAPSOLDEDIR}/
- # Informations de print_status
- :0
- * ^X-Mailer: /usr/scripts/impression/print_status.py
- ${PRINTSTATUSDIR}/
-
# Munin stock papier et toners
: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@
-#~# # L'ancienne version de ce filtre ne fonctionne plus car les headers
-#~# # de ces mails sont maintenant correctement encodé.
-#~# # C'est bien pour le respect des RFC, mais c'est un peu pain in the ass
-#~# # p our le trier avec procmail, donc on besoin d'un script
-#~# # Ne pas décommenter si vous n'avez pas le script associé.
-#~# # (cf https://wiki.crans.org/VieCrans/FichiersConfiguration#scripting)
-#~# :0
-#~# * ^List-Id:.*respbats\.lists\.crans\.org
-#~# * ^X-Mailer:\/.*
-#~# {
-#~# # Machines supprimées pour chambre invalide
-#~# :0
-#~# * ? echo "${MATCH}" | ${DECODEHEADERSCRIPT} | grep /usr/scripts/gestion/chambres_vides.py
-#~# ${DELETEDMACHINES}/
-#~# }
+:0
+* ^List-Id:.*respbats\.lists\.crans\.org
+{
+ # Machines supprimées pour chambre invalide
+ :0
+ * XMAILER ?? /usr/scripts/gestion/menage/chambres_invalides.py
+ ${DELETEDMACHINES}/
+}
+
+# La ML paiements@
+:0
+* ^List-Id:.*paiements\.lists\.crans\.org
+${PAIEMENTSDIR}/
#################################################################
: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/<//;s/>//'`
+ ML=`echo "${LISTID}" | sed 's/.*<\([^<>]\+\)>$/\1/'`
#################################################################
## Gestion des mailing-listes Cr@ns ##
# MLs BDL
:0
- * ? echo "${ML}" | egrep "(bdl|interludes)"
+ * ? echo "${ML}" | egrep "(bdl|interludes|kwei)"
${MLBDLDIR}.${ML_}/
# MLs BDS
${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 ##
#################################################################