# .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 # Les sections commentées par #~# sont des features qui ne sont pas activées # par défaut. Sentez-vous libre de les décommenter pour les utiliser. # 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. # Les règles ne sont pas dans le même ordre, en effet, il est plus efficace # de mettre en premier les règles qui sont le plus souvent vérifiées pour # diminuer le temps moyen de traitement. # Vous pouvez ajouter vos propres règles de tri sans modifier ce fichier, # en effet, ce .procmailrc inclus trois autres fichiers de règles # (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 # 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 # le comportement par défaut des mailing-lists, ce qui vous permet d'en # trier certaines selon un autre schéma # * 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 ################################################################################ ##### Commentaires ##### ################################################################################ # # Les tags suivants expliquent quels membres actifs reçoivent quels mails : # $: câbleur/imprimeur # *: apprenti # +: nounou # B: bureau # T: trésorier # M: modérateur # F: admin federez # # # 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 !) # | | # | |-[$*+BT] privé (des informations confidentielles peuvent y circuler) # | | | # | | |-[B] bureau # | | |-[B] crous-crans # | | |-[+B] disconnect # | | |-[$*+] impression (sans modif_solde, munin) # | | |-[$*+] 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) # | | # | |-[+BT] paiements (rechargements des comptes impression via comnpay) # | # | # |-[*+] 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 # | | # | |-[+B] mac_prises (spoofing is being watched) # | | # | |-[*+] 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) # | | # | |-[*+] 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) # | # |-[*] Apprentis # | # |-[*+] Freebox (Vous avez un message vocal) # | # |-[*+] Nounou # | # |-[+] root # | # |-[*+] roots # # 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) # ################################################################################ ##### Variables ##### ################################################################################ ################################################################# ## Variables d'environnement ## ################################################################# ### Paths # Path du dossier où sont rangés les mails MAILDIR="${HOME}/Mail" # Dossier contenant tout le garbage procmail-related # (le .procmailrc lui-même est dans le home) PROCMAILDIR="${HOME}/.procmail" # Dossier où sont les fichiers de configuration supplémentaires pour procmail CONFIGDIR="${PROCMAILDIR}/rc" # Path du fichier de log de procmail LOGFILE="${PROCMAILDIR}/logs/procmail.log" ### Scripting # Shell à utiliser pour exécuter des commandes SHELL="/bin/bash" ################################################################# ## Noms de dossiers ## ################################################################# # /Attention à ne pas mettre de . ou d'espace au mauvais endroit…/ ### Dossiers personnels ## Dossier pour ranger les mails de Cron ## (ceux envoyés par un serveur Cr@ns seront rangés ailleurs) CRONPERSODIR=".Cron" ## Dossier de Spam SPAMDIR=".Spam" # 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" MLCLUBSDIR="${MLCAMPUSDIR}.Clubs" MLMEDDIR="${MLCLUBSDIR}.Med" MLBDLDIR="${MLCAMPUSDIR}.BDL" MLBDADIR="${MLCAMPUSDIR}.BDA" MLBDSDIR="${MLCAMPUSDIR}.BDS" MLSDADIR="${MLCAMPUSDIR}.SDA" MLGALADIR="${MLCAMPUSDIR}.Gala" MLSONODIR="${MLCAMPUSDIR}.SoNo" MLWEIDIR="${MLCAMPUSDIR}.WEI" ## Dossier où atterrira une ML non-répertoriée MLFAILSUFFIX="Fail" ### Dossier pour les MLs de promo MLPROMODIR="${MLDIR}.Promo" ### Dossier pour les MLs non répertoriées plus haut et non-MA-crans MLPERSODIR="${MLDIR}.Divers" ### Dossiers pour les Membres Actifs du Cr@ns ## Dossier racine CRANSDIR=".Cr@ns" ## Dossiers de mailing lists CRANSADMINISTRATIFDIR="${CRANSDIR}.Administratif" CRANSADMINISTRATIFPUBLICDIR="${CRANSADMINISTRATIFDIR}.public" CRANSADMINISTRATIFPRIVATEDIR="${CRANSADMINISTRATIFDIR}.prive" ## Dossiers pour les mails de monitoring 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" STATUPLOADDIR="${MONITORINGDIR}.Stats-upload" MACPRISESDIR="${MONITORINGDIR}.Mac_prises" ## Dossiers pour le mails concernant des "problèmes" # Racine PROBLEMSDIR="${CRANSDIR}.Problems" # Par ordre de gravité croissant SELFSOLVINGDIR="${PROBLEMSDIR}.0-Self-solving" SOFTDIR="${PROBLEMSDIR}.1-Soft" WILDDIR="${PROBLEMSDIR}.2-Wild" ARGHDIR="${PROBLEMSDIR}.3-Argh" HUMANPROBLEMSDIR="${PROBLEMSDIR}.4-Human-made" # Sous-dossiers FTPDIR="${SELFSOLVINGDIR}.ftp" SQLGREYDIR="${SELFSOLVINGDIR}.sql-errors" BACKUPPCDIR="${SOFTDIR}.backuppc" DJANGODIR="${SOFTDIR}.Django" INTRANET2DIR="${SOFTDIR}.Intranet2" INTRANET1DIR="${SOFTDIR}.intranet-bugreport" CRONDIR="${WILDDIR}.cron" GESTCRANSDIR="${WILDDIR}.gest_crans" NOLSDIR="${ARGHDIR}.nols" PULSARDIR="${ARGHDIR}.pulsar" MAILMANDIR="${HUMANPROBLEMSDIR}.Mailman" MULTIDECODIR="${HUMANPROBLEMSDIR}.multi-deco" ## Dossier de surveillance (= surveillance d'actions humaines) # Racine SURVEILLANCEDIR="${CRANSDIR}.Surveillance" # Par ordre de sensibilité croissant LOGCHECKDIR="${SURVEILLANCEDIR}.0-logcheck" MODERATEURSDIR="${SURVEILLANCEDIR}.1-Moderateurs" OVHMANAGERDIR="${SURVEILLANCEDIR}.2-OVH" CAMERASDIR="${SURVEILLANCEDIR}.3-Cameras" LDAPDIR="${SURVEILLANCEDIR}.4-LDAP" LDAPSOLDEDIR="${LDAPDIR}.Solde" LDAPMODIFDIR="${LDAPDIR}.Modification" CRANSPASSWORDSDIR="${SURVEILLANCEDIR}.5-cranspasswords" ## Dossier informatif (= pour se tenir au courant de ce qui se passe au Cr@ns) # Racine INFORMATIONDIR="${CRANSDIR}.Information" # Mails d'ovh autre que les notifications de connexion au manager OVHDIR="${INFORMATIONDIR}.OVH" # apt-listchanges APTLISTCHANGESDIR="${INFORMATIONDIR}.apt-listchanges" # Machines supprimées pour chambre invalide DELETEDMACHINES="${INFORMATIONDIR}.machines_supprimees" # Repositories GITDIR="${INFORMATIONDIR}.git" DARCSDIR="${INFORMATIONDIR}.darcs" # Mail envoyé quotidiennement par bcfg2 avec la liste des serveurs non synchro 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 la ML nounou NOUNOUDIR="${TECHNIQUEDIR}.Nounou" # Messages laissés sur la Freebox FREEBOXDIR="${TECHNIQUEDIR}.Freebox" # Dossier où atterriront les mails de root@ non triés ROOTDEFAULTDIR="${TECHNIQUEDIR}.root" # Mails de la ML apprentis APPRENTISDIR="${TECHNIQUEDIR}.Apprentis" ### Dossier racine pour 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" ################################################################################ ##### 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 ##### ################################################################################ # Patch pour traiter les mails qui ont été # reçus avant le 30/06/13, car certaines règles de tri du .procmailrc # n'étaient pas encore valables à l'époque. # très utile si on veut retrier tous ses mails INCLUDERC="${CONFIGDIR}/retrocompatibility_patch.rules" # Fichier de règles prioritaires à personnaliser INCLUDERC="${CONFIGDIR}/custom.high.rules" ################################################################# ## Gestion des mails d'Arpwatch ## ################################################################# :0 * ^From:.*arpwatch@crans\.org { # On trie les différents types de mails d'Arpwatch, # en faisant attention aux . et aux espaces après avoir éliminé # tout ce qui se trouve après " (". :0 * ^Subject: \/.* \( { TYPE=`echo $MATCH | sed 's/ (.*//;s/\( \|\.\)/_/g;'` :0 ${ARPWATCHDIR}.${TYPE}/ } :0 ${ARPWATCHDIR}/ } ################################################################# ## Gestion des mails de Monit ## ################################################################# # Les mails de Monit à propos du serveur A sont envoyés dans le dossier # ${MONITDIR}.A/ si le dossier n'existe pas, il est créé mais il # faut encore s'y abonner... :0 * ^(X-Mailer|User-Agent):.*monit { # Avant de tester les hostnames Cr@ns, règle spéciale utile pour # certains admin de FedeRez :0 * ^To: federez-monit@ ${FEDEREZMONITDIR}/ :0 * ^Subject:.*monit \/[^ \.]+ ${MONITDIR}.${MATCH}/ # Dossier de Monit par défaut, si Monit se met à envoyer d'autres mails :0 ${MONITDIR}/ } ################################################################# ## Gestion des mails de Nagios ## ################################################################# # Les mails de Nagios à propos du serveur A sont envoyés dans le dossier # ${NAGIOSDIR}.A/ si le dossier n'existe pas, il est créé mais il # faut encore s'y abonner :0 * ^(From: nagios@crans\.org|User-Agent:.*nagios) { # Tous les switchs vont dans le dossier ${NAGIOSSWITCHSDIR} :0 * ^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:.* [A-Z]+ - \/[a-z0-9](-*[a-z0-9]+)* ${NAGIOSDIR}.${MATCH}/ # Si l'envie prenait à Nagios de raconter un peu plus sa vie :0 ${NAGIOSDIR}/ } ################################################################# ## Gestion des mails de Cron ## ################################################################# # Attention, si on enlève la ligne qui filtre sur le To:, on catche # aussi tous les mails Cron qui ne sont pas envoyés par un serveur Cr@ns :0 * ^To:.*(roots?|postgres|www-data|list)@crans\.org * ^(X-Cron-Env|From: Anacron) { # Par défaut, on ne trie pas les mails de Cron, pensez à décommenter # le INCLUDERC (et à copier le fichier complémentaire) pour les trier INCLUDERC=${CONFIGDIR}/cron.rules :0 ${CRONDIR}/ } ################################################################# ## Gestion des mails de root@crans.org ## ################################################################# # Statistiques du serveur de news # Désolidarisé du bloc root@crans.org pour séparer les spams # sans qu'ils tombent dans ${ROOTDEFAULTDIR} :0 * ^To:.*(usenet|news)@(crans\.org|crans\.ens-cachan\.fr) { # L'intérêt c'est que plein de spam arrive sur ces addresses # et seules les stats d'inn sont censées y arriver. # Donc on peut bazarder tout ce qui n'est pas stat au Spam :0 * ^From: news@crans.org ${INNDIR}/ :0 ${SPAMINNDIR}/ } # 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) { # Spam de logcheck :0 * ^From:.*logcheck@crans\.org ${LOGCHECKDIR}/ # Mails envoyés par munin quand il trouve qu'un graphe sort des limites :0 * ^From: munin@crans\.org ${MUNINDIR}/ # Mails envoyés en cas d'erreur de synchronisation du ftp :0 * ^From: mirror@crans\.org ${FTPDIR}/ # Mails envoyés en cas d'erreur sur l'intranet2 :0 * ^Subject: \[Intranet2 Cr@ns\] ${INTRANET2DIR}/ # Mails envoyés en cas d'une autre erreur Django :0 * ^Subject: \[Django\] ${DJANGODIR}/ # Mails envoyés lors de la modification d'un fichier de mot de passe :0 * ^X-Mailer: cranspasswords ${CRANSPASSWORDSDIR}/ # Mails envoyés par OVH… :0 * ^From:.*support@ovh\.com { # …lors d'une connexion au manager :0 * ^X-Ovh-Template: nic/fr/loginNotification.model ${OVHMANAGERDIR}/ # Pour autre chose (facture, newsletter) :0 ${OVHDIR}/ } # Mail envoyés par apt-listchanges lors d'une mise à jour :0 * ^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}/ } ################################################################# ## Gestion des mails de roots@crans.org ## ################################################################# :0 * ^(To|Cc|List-Id):.*roots(@|\.lists\.)crans\.org { # Il y a aussi des apt-listchanges sur roots@ :0 * ^Subject:.*apt-listchanges ${APTLISTCHANGESDIR}/ # Mails envoyés par la baie de disques :0 * ^From: nols@crans\.org ${NOLSDIR}/ # Mails envoyés par l'onduleur :0 * ^From: pulsar@adm\.crans\.org ${PULSARDIR}/ # Mails envoyés par le script qui détecte les changements dans la base LDAP :0 * ^Subject:.*Surveillance modifications de la base LDAP ${LDAPMODIFDIR}/ # Mails envoyés lors d'une erreur sur la base de donnée sqlgrey :0 * ^From: sqlgrey@crans\.org ${SQLGREYDIR}/ # Mails envoyés par backuppc :0 * ^From: backuppc@crans\.org ${BACKUPPCDIR}/ # Souriez, vous êtes photographiés :0 * ^From:.*cameras@crans\.org { # On trie par lieu de la caméra :0 * ^Subject:.*0B ${CAMERASDIR}.0B/ :0 * ^Subject:.*0H ${CAMERASDIR}.0H/ } # I'm in your mailbox, watching your commits # Attention à bien filtrer git avant darcs parce que les mails git # contiennent aussi le header X-DarcsInfo ! :0 * ^X-GitInfo { :0 * XMAILER ?? /usr/scripts/utils/git-whatsnew ${GITDIR}.whatsnew/ :0 ${GITDIR}/ } :0 * ^X-DarcsInfo { :0 * ^X-Mailer: Python Darcs Check ${DARCSDIR}.whatsnew/ :0 ${DARCSDIR}/ } # Messages sur la Freebox :0 * ^From: telephonie\.freebox@(mevo\.)?freetelecom\.fr ${FREEBOXDIR}/ # Serveurs non synchronisés avec bcfg2 :0 * ^X-Mailer: bcfg2-reports ${BCFG2DIR}/ # Si il n'y pas de condition de tri, ça va dans le dossier Technique :0 ${ROOTSDIR}/ } ################################################################# ## Mails envoyés sur des MLs mais par des bots ## ################################################################# # Il n'y jamais de dossier par défaut, le mail sera rattrapé # au moment de la gestion gobale des mailing-lists # Sur la ML disconnect@ :0 * ^List-Id:.*disconnect\.lists\.crans\.org { # Statistiques d'upload :0 * XMAILER ?? /usr/scripts/surveillance/statistiques2.py ${STATUPLOADDIR}/ # Résumé quotidien des correspondances mac_prises :0 * 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}/ } } # Sur la ML impression@ :0 * ^List-Id:.*impression\.lists\.crans\.org { # Modification de solde :0 * ^X-Mailer: modif_solde ${LDAPSOLDEDIR}/ # Munin stock papier et toners :0 * ^From: munin@crans\.org ${MUNINIMPRESSIONDIR}/ } # Sur la ML respbats@ :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}/ ################################################################# ## Gestion des cron perso ## ################################################################# # Les Subjects des mails de (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 <[^@>]+@\/[^>]+|Anacron job .* on \/.*) { # On prend garde à ne pas créer un sous-dossier # si jamais le host contient un . ou un espace HOST_=`echo "$MATCH" | sed 's/\(\.\| \)/_/g'` :0 ${CRONPERSODIR}.${HOST_}/ } # Dans le cas (improbable) où le Subject ne matche pas :0 ${CRONPERSODIR}/ } ################################################################# ## Inclusion des règles personnelles ## ################################################################# # Fichier de règles à personnaliser INCLUDERC="${CONFIGDIR}/custom.normal.rules" ################################################################# ## Gestion des mails de Mailman ## ################################################################# # La ML mailman@ est un peu particulière :0 * ^(List-Id:.*mailman\.|(To|Cc):.*mailman-(owner|bounces)@)lists\.crans\.org { :0 * ^Subject:.*Rappel_pour_les_abonnements_aux_listes ${RAPPELMDPDIR}/ :0 ${MAILMANDIR}/ } ################################################################# ## Gestion des mailing-listes ## ################################################################# # Ajouter à la suite vos propres règles pour les mailing-listes non gérées ici :0 # On récupère tous les mails qui sont arrivés par l'intermédaire d'une ML * ^List-Id:.* { ML=`echo "${LISTID}" | sed 's/.*<\([^<>]\+\)>$/\1/'` ################################################################# ## Gestion des mailing-listes Cr@ns ## ################################################################# :0 * ^List-Id:.*lists\.crans\.org { # On veut ne garder que le nom de la ML sans le nom de domaine ML=`echo "${ML}" | sed 's/\.lists\.crans\.org//'` # 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'` ################################################################# ## Cas où la ML est une ML de membre actif du Cr@ns ## ################################################################# # MLs publiques (au sens où il n'y a pas que des cranseux abonnés) :0 * ? grep "^${ML}$" ${CONFIGDIR}/ML_MA_crans.administratif.public ${CRANSADMINISTRATIFPUBLICDIR}.${ML_}/ # MLS où il n'y a que des membres actifs abonnés # (on peut y envoyer des informations privées) :0 * ? grep "^${ML}$" ${CONFIGDIR}/ML_MA_crans.administratif.prive ${CRANSADMINISTRATIFPRIVATEDIR}.${ML_}/ # La ML federez@lists.crans.org va quand même dans le dossier FedeRez :0 * ? echo "${ML}" | grep federez ${FEDEREZDIR}.${ML_}/ # La ML modérateurs va dans le dossier Surveillance :0 * ^List-Id:.*moderateurs\.lists\.crans\.org ${MODERATEURSDIR}/ # La ML intranet-bugreport va dans le dossier Problèmes :0 * ^List-Id:.*intranet-bugreport\.lists\.crans\.org ${INTRANET1DIR}/ # La ML nounou va dans le dossier Technique :0 * ^List-Id:.*nounou\.lists\.crans\.org ${NOUNOUDIR}/ # La ML apprentis va dans le dossier Technique :0 * ^List-Id:.*apprentis\.lists\.crans\.org ${APPRENTISDIR}/ ################################################################# ## Gestion des autres mailing-list (du campus) ## ################################################################# # MLs génériques du campus (des assos et d'autres random trucs) :0 * ? grep "^${ML}$" ${CONFIGDIR}/ML_campus ${MLCAMPUSDIR}.${ML_}/ # MLs BDE :0 * ? echo "${ML}" | grep bde ${MLBDEDIR}.${ML_}/ # MLs BDA :0 * ? (grep "^${ML}$" ${CONFIGDIR}/ML_bda) || (echo "${ML}" | grep bda) ${MLBDADIR}.${ML_}/ # MLs SoNo :0 * ? (grep "^${ML}$" ${CONFIGDIR}/ML_sono) || (echo "${ML}" | grep sono) ${MLSONODIR}.${ML_}/ # MLs Med :0 * ? echo "${ML}" | grep -E "^med" ${MLMEDDIR}.${ML_}/ # MLs SDA :0 * ? echo "${ML}" | grep sda ${MLSDADIR}.${ML_}/ # MLs BDL :0 * ? echo "${ML}" | egrep "(bdl|interludes|kwei)" ${MLBDLDIR}.${ML_}/ # MLs BDS :0 * ? echo "${ML}" | egrep "bds" ${MLBDSDIR}.${ML_}/ # MLs WEI :0 * ^List-Id:.*wei\.lists\.crans\.org ${MLWEIDIR}.${ML_}/ # MLs Gala :0 * ? echo "${ML}" | egrep "(gala|geec)" ${MLGALADIR}.${ML_}/ # MLs des clubs :0 * ? (grep "^${ML}$" ${CONFIGDIR}/ML_clubs) || (echo "${ML}" | egrep '^club-') ${MLCLUBSDIR}.${ML_}/ ################################################################# ## Gestion des MLs de promo ## ################################################################# :0 * ? echo "${ML}" | egrep '^(ens-|a\.coeur)' ${MLPROMODIR}.${ML_}/ ################################################################# ## Gestion des MLs perso ## ################################################################# :0 * ? grep "^${ML}$" ${CONFIGDIR}/ML_perso ${MLPERSODIR}.${ML_}/ # Si on est tombés sur un ML non-répertoriée :0 ${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 ## ################################################################# :0 * ^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_}/ } ################################################################# ## 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/\.liste\?s\?$//;s/\(\.\| \)/_/g'` :0 ${MLDIR}.${DOMAIN_}.${ML_}/ } # Fichier de règles de faible priorité à personnaliser INCLUDERC="${CONFIGDIR}/custom.final.rules"