X-Git-Url: http://gitweb.pimeys.fr/?a=blobdiff_plain;f=.procmailrc;h=af1bace600f116b34aee00f1177fc6ffc37e1479;hb=5dbfa1d90be28bc1021a2f1839bbea900da87317;hp=d7cd35cbbe0cfc4e8d68264dded2dd41663b57c5;hpb=c5f63d247136fae88e99cba6c5d3a7dcce322e71;p=config-20-100.git diff --git a/.procmailrc b/.procmailrc index d7cd35c..af1bace 100644 --- a/.procmailrc +++ b/.procmailrc @@ -1,7 +1,3 @@ -################################################################################ -### Still being tested. Use at your own risks… ### -################################################################################ - # .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. @@ -14,6 +10,18 @@ # Attention : le path par défaut des fichiers de logs est $HOME/.procmail/logs # Assurez-vous que le dossier en question existe avant d'utiliser ce .procmailrc +################################################################# +## DISCLAIMER ## +################################################################# + +# 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 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) + #------------------------------------------------------------------------------ # Ce fichier commence par une grosse section de commentaire qui donne un aperçu # de l'arborescence de dossiers qui sera obtenue en utilisant ce .procmailrc. @@ -26,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 @@ -35,6 +43,12 @@ # * 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) ################################################################################ @@ -50,148 +64,164 @@ # M: modérateur # F: admin federez # -### /!\ pour cron, faire attention à ne pas envoyer les mails cron perso sur -### zamok dans les dossiers cron ! -### -### pour les ml : faire des sous-dossiers bounces --> IDEA DROPPED -### -### dans le main procmailrc : (ouais enfin finalement on met tout dans le même) -### - le bidule pour trier les crons persos --> DONE -### - le truc trop bien de Harry pour trier les ml du campus --> DONE -### -### Multi-déco upload dans un autre dossier --> DONE # +# Si vous utilisez ce .procmailrc (et que vous recevez tous les mails concernés), +# votre arborescence ressemblera à ceci : +# # Cr@ns # | -# ./|-[$*+BT] Administratif (le côté administratif : bot free !) -# ./| | -# ./| |-[$*+B] public -# ./| | | -# ./| | |-[$*+B] ca -# ./| | |-[+B] dsi-crans -# ./| | |-[*+B] install-party -# ./| | |-[B] crans-crous -# ./| | -# ./| |-[$*+BT] privé -# ./| | -# ./| |-[B] bureau -# ./| |-[T] trésorier -# ./| |-[$*+] respbats (bot free) -# ./| |-[$*+] impression (sans modif_solde, munin, print_status) -# ./| |-[+B] spoof -# ./| |-[+B] disconnect (sans les bots) -# ./| -# ./| -# ./|-[*+BF] Federez (bah, federez quoi !) -# ./| | -# ./| |-[*+B] federez -# ./| |-[F] admin -# ./| |-[(F)] monit -# ./| -# ./| -# ./|-[$*+BM] Surveillance (on stalke, pour vérifier ce que font les autres) -# ./| | -# ./| |-[+] Irrelevant : logcheck -# ./| | -# ./| |-[+BM] modérateur -# ./| | -# ./| |-[+] ovh (connexions au manager) -# ./| | -# ./| |-[*+] caméras (à trier) -# ./| | -# ./| |-[$*+] LDAP -# ./| | | -# ./| | |-[$*+] modif-solde -# ./| | |-[*+] modifications de la base ldap -# ./| | -# ./| |-[+] cranspasswords -# ./| -# ./| -# ./|-[*+] Monitoring (une machine fait-elle de la merde ?) -# ./| | -# ./| |-[*+] monit -# ./| | | -# ./| | |- trier dynamiquement par serveur ! -# ./| | -# ./| |-[+] nagios -# ./| | | -# ./| | |- trier dynamiquement par serveur ! -# ./| | -# ./| |-[$*+] munin -# ./| | | -# ./| | |-[$*+] impression -# ./| | -# ./| |-[+] arpwatch -# ./| | | -# ./| | |-[+] changed ethernet address -# ./| | |-[+] flip-flop -# ./| | |-[+] new_activity -# ./| | |-[+] new_station -# ./| | -# ./| |-[+B] stats d'upload --> À vérifier que le X-Mailer marche -# ./| -# ./| -# ./|-[$*+] Problèmes (à regarder avant d'aller se coucher) -# ./| | -# ./| |-[*+] self-sloving -# ./| | | -# ./| | |-[*+] SQL errors -# ./| | |-[+] ftp -# ./| | -# ./| |-[+] modéré -# ./| | | -# ./| | |-[+] intranet1 -# ./| | |-[+] intranet2 (en fait, django en général) -# ./| | |-[*+] backuppc -# ./| | -# ./| |-[*+] attention (cron) -# ./| | | -# ./|  | |-[*+] à trier : roots/root ou par serveur -# ./| | -# ./| |-[*+] Argh -# ./| | | -# ./| | |-[*+] nols -# ./| | |-[*+] pulsar -# ./| | -# ./| |-[$*+] Humain -# ./| | -# ./| |-[$*+] print_status -# ./| | -# ./| |-[+] mailman -# ./| | -# ./| |-[B+] déco N fois en un mois -# ./| -# ./| -# ./|-[*+] Information (keep up to date) -# ./| | -# ./| |-[*+] apt-listchanges -# ./| | -# ./| |-[+] ovh (newsletters, factures) -# ./| | -# ./| |-[$*+] machines supprimées -# ./| | -# ./| |-[*+] git (commits) -# ./| | | -# ./| | |-[*+] what's new -# ./| | -# ./| |-[*+] darcs (records) -# ./| | | -# ./| | |-[*+] what's new -# ./| | -# ./| |-[+] bcfg2 (Serveurs non synchronisés avec bcfg2) -# ./| | -# ./| |-[+] inn (stats des servuers de news) -# ./| -# ./| -# ./|-[$*+B] Technique (les discussions et les trucs reliés) -# ./ | -# ./ |-[*+] Nounou -# ./ | -# ./ |-[*+] Roots -# ./ | -# ./ |-[$*+] câblages à effectuer -# ./ | -# ./ |-[*+B] tracker +# |-[$*+BT] Administratif (le côté administratif : bot-free !) +# | | +# | |-[$*+BT] privé (des informations confidentielles peuvent y circuler) +# | | | +# | | |-[B] bureau +# | | |-[B] crous-crans +# | | |-[+B] disconnect +# | | |-[$*+] impression (sans modif_solde, munin, print_status) +# | | |-[$*+] respbats (bot-free) +# | | |-[+B] spoof +# | | |-[T] trésorier +# | | +# | |-[$*+B] public +# | | +# | |-[$*+B] ca +# | |-[+B] dsi-crans +# | |-[*+B] install-party +# | +# | +# |-[*+] Information (keep up to date) +# | | +# | |-[*+] apt-listchanges (Lors des mises à jour de serveurs) +# | | +# | |-[+] bcfg2 (Serveurs non synchronisés avec bcfg2) +# | | +# | |-[*+] darcs (records) +# | | | +# | | |-[*+] whatsnew +# | | +# | |-[*+] git (commits) +# | | | +# | | |-[*+] whatsnew +# | | +#  | |-[+] inn (stats des servuers de news) +# | | +# | |-[$*+] machines_supprimees (puni !) +# | | +# | |-[+] ovh (Factures, Newsletters) +# | +# | +# |-[*+] Monitoring (une machine fait-elle de la merde ?) +# | | +# | |-[+] Arpwatch (chaque fois qu'une machine fait un truc nouveau/suspect sur le réseau) +# | | | +# | | |-[+] changed_ethernet_address +# | | |-[+] flip_flop +# | | |-[+] new_activity +# | | |-[+] new_station +# | | +# | |-[*+] Monit (Un truc marche pas/remarche, un disque est plein,…) +# | | | +# | | |- +# | | +# | |-[$*+] Munin (Graphes) +# | | | +# | | |-[$*+] Imprimante +# | | +# | |-[+] Nagios (Comme Monit, mais en mieux/moins bien/différent) +# | | | +# | | |- +# | | +# | |-[+B] Stats-upload (Qui a uplodé ?) +# | +# | +# |-[$*+] Problems (Classés par degré de gravité grossier) +# | | +# | |-[*+] 0-Self-solving (Just ignore that) +# | | | +# | | |-[+] ftp (Problème de synchronisation du miroir Debian) +# | | |-[*+] SQL errors (sqlgrey a chié dans la colle) +# | | +# | |-[+] 1-Soft (Un problème, mais pas critique) +# | | | +# | | |-[*+] backuppc (babar râle) +# | | |-[+] Django +# | | |-[+] intranet1 (normal) +# | | |-[+] intranet2 (fucking locks) +# | | +# | |-[*+] 2-Wild (Ce serait pas mal de regarder ce qui foire) +# | | | +# |  | |-[*+] cron +# | | | |- +# | | | +# | | |-[+] 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 !) +# | | | +# | | |-[*+] nols (La baie de disque a un problème !) +# | | |-[*+] pulsar (On a plus de courant !!) +# | | +# | |-[$*+] 4-Human-made (Ces mails sont générés par des gens) +# | | +# | | +# | |-[+] Mailman (Des mailing-list chient, ou des gens demandent de l'aide) +# | | +# | |-[$*+] print_status (Une impression a échoué) +# | +# | +# |-[$*+BM] Surveillance (On stalke, pour vérifier ce que font les autres. Par ordre croissant d'importance à vérifier) +# | | +# | |-[+BM] 1-Moderateurs +# | | +# | |-[+] 2-OVH (Connexions au manager) +# | | +# | |-[*+] 3-Cameras (Quelqu'un est rentré dans un local sensible) +# | | | +# | | |-[*+] 0B +# | | |-[*+] 0H +# | | +# | |-[$*+] 4-LDAP (Modification de la base LDAP qui mérite un coup d'oeil) +# | | | +# | | |-[*+] Modification (Changement de droit ou modification d'une machine crans) +# | | |-[$*+] Solde (Modification d'un solde impression) +# | | +# | |-[+] 5-cranspasswords (Quand quelqu'un modifie un mot de passe chiffré) +# | +# | +# |-[$*+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) +# | +# |-[*+BF] federez (La ML de discussion principale de FedeRez) +# | +# |-[F] admin (La ML de l'équipe technique de FedeRez) +#  | | +#  | |-[F] Debian updates (Quand un serveur veut être mis à jour) +#  | | +#  | |-[F] federezpasswords (Quand quelqu'un modifie un mot de passe chiffré) +#  | | +#  | |-[F] Logcheck (Spam) +#  | | +#  | |-[F] Logwatch (Spam) +# | | +# | |-[F] OVH (Factures, Newsletters) +# | +# |-[(F)] Monit (Pour voir si un serveur ne répond plus) +# | +# |-[(F)] saclay (Pour préparer notre avenir à Saclay) # @@ -203,10 +233,9 @@ ################################################################# ## 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" @@ -216,6 +245,16 @@ CONFIGDIR="${PROCMAILDIR}/rc" LOGFILE="${PROCMAILDIR}/logs/procmail.log" +### 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" + + ################################################################# ## Noms de dossiers ## ################################################################# @@ -246,6 +285,7 @@ MLCLUBSDIR="${MLCAMPUSDIR}.Clubs" MLMEDDIR="${MLCLUBSDIR}.Med" MLBDLDIR="${MLCAMPUSDIR}.BDL" MLBDADIR="${MLCAMPUSDIR}.BDA" +MLBDSDIR="${MLCAMPUSDIR}.BDS" MLSDADIR="${MLCAMPUSDIR}.SDA" MLGALADIR="${MLCAMPUSDIR}.Gala" MLSONODIR="${MLCAMPUSDIR}.SoNo" @@ -294,6 +334,8 @@ DJANGODIR="${SOFTDIR}.Django" 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" @@ -347,8 +389,14 @@ FREEBOXDIR="${TECHNIQUEDIR}.Freebox" ROOTDEFAULTDIR="${TECHNIQUEDIR}.root" ### Dossier racine pour Federez -FEDEREZDIR="${CRANS_FOLDER}.FedeRez" +FEDEREZDIR=".FedeRez" FEDEREZMONITDIR="${FEDEREZDIR}.Monit" +FEDEREZADMINDIR="${FEDEREZDIR}.admin" +FEDEREZLOGWATCHDIR="${FEDEREZADMINDIR}.Logwatch" +FEDEREZLOGCHECKDIR="${FEDEREZADMINDIR}.Logcheck" +FEDEREZDEBIANDIR="${FEDEREZADMINDIR}.Debian-updates" +FEDEREZPASSWORDSDIR="${FEDEREZADMINDIR}.federezpasswords" +FEDEREZOVHDIR="${FEDEREZADMINDIR}.OVH" @@ -397,7 +445,7 @@ INCLUDERC="${CONFIGDIR}/custom.high.rules" :0 * ^(X-Mailer|User-Agent):.*monit { - # Avant de tester les hotsnames Cr@ns, règle spéciale utile pour + # Avant de tester les hostnames Cr@ns, règle spéciale utile pour # certains admin de FedeRez :0 * ^To: federez-monit@ @@ -481,7 +529,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 +* ^(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 @@ -532,6 +580,11 @@ INCLUDERC="${CONFIGDIR}/custom.high.rules" * ^Subject:.*apt-listchanges ${APTLISTCHANGESDIR}/ + # Mail envoyé quand gest_crans plante + :0 + * ^Subject: Bugreport gest_crans.py + ${GESTCRANSDIR}/ + # Tout ce qui traîne sur root et qui n'est pas catché par quelque chose :0 ${ROOTDEFAULTDIR}/ @@ -620,7 +673,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 @@ -677,36 +730,45 @@ ${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@ +# 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 - * ^X-Mailer: /usr/scripts/gestion/chambres_vides.py + * ? echo "${MATCH}" | ${DECODEHEADERSCRIPT} | grep /usr/scripts/gestion/chambres_vides.py ${DELETEDMACHINES}/ } -#WIP# ############################################################################### -#WIP# # ^^^^^^^ Classés le plus possible par ordre de spammage décroissant - -#WIP# # vvvvvvv Les MLs, à laisser en bas -#WIP# ############################################################################### - ################################################################# ## Gestion des cron perso ## ################################################################# # Les Subjects des mails de (Ana)?Cron -# sont de la forme "(Ana)?Cron " +# sont de la forme "Cron " ou "Anacron job '[...]' on host" # On parse pour récupérer le host et trier avec :0 * ^(X-Cron-Env|From: Anacron) { + # Si le mail vient de "host.domain.tld", + # On range ça dans le dossier "host" :0 - * ^Subject:.*Cron <[^@>]+@\/[^>]+ + * ^Subject:.*(Cron <[^@>]+@\/[^>]+|Anacron job .* on \/.*) { # On prend garde à ne pas créer un sous-dossier # si jamais le host contient un . ou un espace @@ -715,7 +777,7 @@ ${CABLAGEDIR}/ ${CRONPERSODIR}.${HOST_}/ } - # Dans le cas (improbable) où le Subject de matche pas + # Dans le cas (improbable) où le Subject ne matche pas :0 ${CRONPERSODIR}/ } @@ -823,11 +885,11 @@ INCLUDERC="${CONFIGDIR}/custom.normal.rules" # MLs SoNo :0 * ? (grep "^${ML}$" ${CONFIGDIR}/ML_sono) || (echo "${ML}" | grep sono) - ${MLBDADIR}.${ML_}/ + ${MLSONODIR}.${ML_}/ # MLs Med :0 - * ? echo "${ML}" | grep med + * ? echo "${ML}" | grep -E "^med" ${MLMEDDIR}.${ML_}/ # MLs SDA @@ -840,6 +902,11 @@ INCLUDERC="${CONFIGDIR}/custom.normal.rules" * ? echo "${ML}" | egrep "(bdl|interludes)" ${MLBDLDIR}.${ML_}/ + # MLs BDS + :0 + * ? echo "${ML}" | egrep "bds" + ${MLBDSDIR}.${ML_}/ + # MLs Gala :0 * ? echo "${ML}" | egrep "(gala|geec)" @@ -872,15 +939,43 @@ INCLUDERC="${CONFIGDIR}/custom.normal.rules" ################################################################# ## Gestion des mailing-listes FedeRez ## ################################################################# - # On veut ne garder que le nom de la ML sans le nom de domaine - ML=`echo "${ML}" | sed 's/\.lists\.federez\.net//'` - # 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/\(\.\| \)/_/g'` - :0 - * ^List-Id:.*lists.federez.net + * ^List-Id:.*federez.net { + # On veut ne garder que le nom de la ML sans le nom de domaine + ML=`echo "${ML}" | sed 's/\(\.lists\)\?\.federez\.net//'` + # 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/\(\.\| \)/_/g'` + + # Gestion de la ML admin + :0 + * ^List-Id:.*admin + { + :0 + * ^Subject:.*Logwatch for.*federez\.net + ${FEDEREZLOGWATCHDIR}/ + + :0 + * ^To:.*logcheck + ${FEDEREZLOGCHECKDIR}/ + + :0 + * ^Subject:.*Debian package update + ${FEDEREZDEBIANDIR}/ + + :0 + * ^From:.*federezpasswords + ${FEDEREZPASSWORDSDIR}/ + + :0 + * ^From:.*support@ovh.com + ${FEDEREZOVHDIR}/ + + :0 + ${FEDEREZADMINDIR}/ + } + :0 ${FEDEREZDIR}.${ML_}/ } @@ -889,9 +984,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'`