]> gitweb.pimeys.fr Git - config-20-100.git/blob - .procmailrc
[procmail] Tri des ML : nom-ml.domain.list*e*s.tld est géré aussi
[config-20-100.git] / .procmailrc
1 # .procmailrc générique mis à votre disposition
2 # par les gentils membres actifs du Cr@ns
3 # Vous pouvez l'utiliser, le redistribuer, le modifier à votre convenance.
4 # Des questions, des suggestions : {nounou,ca}@lists.crans.org
5 # Licence : WTFPL
6
7 # Les sections commentées par #~# sont des features qui ne sont pas activées
8 # par défaut. Sentez-vous libre de les décommenter pour les utiliser.
9
10 # Attention : le path par défaut des fichiers de logs est $HOME/.procmail/logs
11 # Assurez-vous que le dossier en question existe avant d'utiliser ce .procmailrc
12
13 #################################################################
14 ## DISCLAIMER ##
15 #################################################################
16
17 # Ce fichier est mis à votre disposition par des cranseux sans aucune garantie.
18 # Nous sommes un certain nombre à l'utiliser nous-mêmes, souvent dans une version
19 # légèrement modifiée.
20 # * Nous ne sommes pas responsables si vous perdez des mails ou si ils sont mal triés.
21 # * Pensez à copier également les autres fichiers si vous utilisez les include.
22 # * Vous pouvez rester à jour en trackant le dépôt git : http://git.crans.org/git/fichiers_configuration.git
23 # (on corrige des trucs et on rajoute parfois des nouveaux/meilleurs tris)
24
25 #------------------------------------------------------------------------------
26 # Ce fichier commence par une grosse section de commentaire qui donne un aperçu
27 # de l'arborescence de dossiers qui sera obtenue en utilisant ce .procmailrc.
28 # Les règles ne sont pas dans le même ordre, en effet, il est plus efficace
29 # de mettre en premier les règles qui sont le plus souvent vérifiées pour
30 # diminuer le temps moyen de traitement.
31
32 # Vous pouvez ajouter vos propres règles de tri sans modifier ce fichier,
33 # en effet, ce .procmailrc inclus trois autres fichiers de règles
34 # (pour l'instant commentés par #~#)
35 # Ils doivent être tous les trois dans ${CONFIGDIR}
36 # * Le premier, custom.high.rules contient des règles qui overrident tout
37 #  le comportement ce .procmailrc, pour des mails qui doivent être classés
38 # sans autre condition.
39 # * Le deuxème, custom.normal.rules doit contenir la plupart de vos règles
40 # personnelles, il est géré après les mails envoyés par le Cr@ns mais avant
41 # le comportement par défaut des mailing-lists, ce qui vous permet d'en
42 # trier certaines selon un autre schéma
43 # * Le troisième, custom.final.rules est appliqué tout à la fin, il peut par
44 # exemple servir à définir un dossier par défaut autre que .INBOX
45
46
47 ################################################################################
48 ##### Commentaires #####
49 ################################################################################
50 #
51 # Les tags suivants expliquent quels membres actifs reçoivent quels mails :
52 # $: câbleur/imprimeur
53 # *: apprenti
54 # +: nounou
55 # B: bureau
56 # T: trésorier
57 # M: modérateur
58 # F: admin federez
59 #
60 #
61 # Si vous utilisez ce .procmailrc (et que vous recevez tous les mails concernés),
62 # votre arborescence ressemblera à ceci :
63 #
64 # Cr@ns
65 # |
66 # |-[$*+BT] Administratif (le côté administratif : bot-free !)
67 # | |
68 # | |-[$*+BT] privé (des informations confidentielles peuvent y circuler)
69 # | | |
70 # | | |-[B] bureau
71 # | | |-[B] crous-crans
72 # | | |-[+B] disconnect
73 # | | |-[$*+] impression (sans modif_solde, munin)
74 # | | |-[$*+] respbats (bot-free)
75 # | | |-[+B] spoof
76 # | | |-[T] trésorier
77 # | |
78 # | |-[$*+B] public
79 # | |
80 # | |-[$*+B] ca
81 # | |-[+B] dsi-crans
82 # | |-[*+B] install-party
83 # |
84 # |
85 # |-[*+] Information (keep up to date)
86 # | |
87 # | |-[*+] apt-listchanges (Lors des mises à jour de serveurs)
88 # | |
89 # | |-[+] bcfg2 (Serveurs non synchronisés avec bcfg2)
90 # | |
91 # | |-[*+] darcs (records)
92 # | | |
93 # | | |-[*+] whatsnew
94 # | |
95 # | |-[*+] git (commits)
96 # | | |
97 # | | |-[*+] whatsnew
98 # | |
99 #  | |-[+] inn (stats des servuers de news)
100 # | |
101 # | |-[$*+] machines_supprimees (puni !)
102 # | |
103 # | |-[+] ovh (Factures, Newsletters)
104 # | |
105 # | |-[+BT] paiements (rechargements des comptes impression via comnpay)
106 # |
107 # |
108 # |-[*+] Monitoring (une machine fait-elle de la merde ?)
109 # | |
110 # | |-[+] Arpwatch (chaque fois qu'une machine fait un truc nouveau/suspect sur le réseau)
111 # | | |
112 # | | |-[+] changed_ethernet_address
113 # | | |-[+] flip_flop
114 # | | |-[+] new_activity
115 # | | |-[+] new_station
116 # | |
117 # | |-[+B] mac_prises (spoofing is being watched)
118 # | |
119 # | |-[*+] Monit (Un truc marche pas/remarche, un disque est plein,…)
120 # | | |
121 # | | |- <un dossier par serveur>
122 # | |
123 # | |-[$*+] Munin (Graphes)
124 # | | |
125 # | | |-[$*+] Imprimante
126 # | |
127 # | |-[+] Nagios (Comme Monit, mais en mieux/moins bien/différent)
128 # | | |
129 # | | |- <un dossier pour tous les switchs, un pour toutes les bornes, puis un dossier par serveur>
130 # | |
131 # | |-[+B] Stats-upload (Qui a uplodé ?)
132 # |
133 # |
134 # |-[$*+] Problems (Classés par degré de gravité grossier)
135 # | |
136 # | |-[*+] 0-Self-solving (Just ignore that)
137 # | | |
138 # | | |-[+] ftp (Problème de synchronisation du miroir Debian)
139 # | | |-[*+] SQL errors (sqlgrey a chié dans la colle)
140 # | |
141 # | |-[+] 1-Soft (Un problème, mais pas critique)
142 # | | |
143 # | | |-[*+] backuppc (babar râle)
144 # | | |-[+] Django
145 # | | |-[+] intranet1 (normal)
146 # | | |-[+] intranet2 (fucking locks)
147 # | |
148 # | |-[*+] 2-Wild (Ce serait pas mal de regarder ce qui foire)
149 # | | |
150 # |  | |-[*+] cron
151 # | | | |- <triés selon les cronjob souvent rencontrés listés dans le fichier cron.folders>
152 # | | |
153 # | | |-[+] gest_crans (Rapports de bugs envoyés lors d'un crash de gest_crans)
154 # | |
155 # | |-[*+] 3-Argh (Il faut vite faire quelque chose !)
156 # | | |
157 # | | |-[*+] nols (La baie de disque a un problème !)
158 # | | |-[*+] pulsar (On a plus de courant !!)
159 # | |
160 # | |-[$*+] 4-Human-made (Ces mails sont générés par des gens)
161 # | |
162 # | |
163 # | |-[+] Mailman (Des mailing-list chient, ou des gens demandent de l'aide)
164 # | |
165 # | |-[$*+] print_status (Une impression a échoué)
166 # |
167 # |
168 # |-[$*+BM] Surveillance (On stalke, pour vérifier ce que font les autres. Par ordre croissant d'importance à vérifier)
169 # | |
170 # | |-[+BM] 1-Moderateurs
171 # | |
172 # | |-[+] 2-OVH (Connexions au manager)
173 # | |
174 # | |-[*+] 3-Cameras (Quelqu'un est rentré dans un local sensible)
175 # | | |
176 # | | |-[*+] 0B
177 # | | |-[*+] 0H
178 # | |
179 # | |-[$*+] 4-LDAP (Modification de la base LDAP qui mérite un coup d'oeil)
180 # | | |
181 # | | |-[*+] Modification (Changement de droit ou modification d'une machine crans)
182 # | | |-[$*+] Solde (Modification d'un solde impression)
183 # | |
184 # | |-[+] 5-cranspasswords (Quand quelqu'un modifie un mot de passe chiffré)
185 # |
186 # |
187 # |-[$*+B] Technique (les discussions et les trucs reliés)
188 # |
189 # |-[*] Apprentis
190 # |
191 # |-[*+] Freebox (Vous avez un message vocal)
192 # |
193 # |-[*+] Nounou
194 # |
195 # |-[+] root
196 # |
197 # |-[*+] roots
198 #
199 # Federez (Les mails concernant l'asso FedeRez sont dans un dossier à part)
200 # |
201 # |-[*+BF] federez (La ML de discussion principale de FedeRez)
202 # |
203 # |-[F] admin (La ML de l'équipe technique de FedeRez)
204 #  | |
205 #  | |-[F] Debian updates (Quand un serveur veut être mis à jour)
206 #  | |
207 #  | |-[F] federezpasswords (Quand quelqu'un modifie un mot de passe chiffré)
208 #  | |
209 #  | |-[F] Logcheck (Spam)
210 #  | |
211 #  | |-[F] Logwatch (Spam)
212 # | |
213 # | |-[F] OVH (Factures, Newsletters)
214 # |
215 # |-[(F)] Monit (Pour voir si un serveur ne répond plus)
216 # |
217 # |-[(F)] saclay (Pour préparer notre avenir à Saclay)
218 #
219
220
221
222 ################################################################################
223 ##### Variables #####
224 ################################################################################
225
226 #################################################################
227 ## Variables d'environnement ##
228 #################################################################
229 ### Paths
230 # Path du dossier où sont rangés les mails
231 MAILDIR="${HOME}/Mail"
232 # Dossier contenant tout le garbage procmail-related
233 # (le .procmailrc lui-même est dans le home)
234 PROCMAILDIR="${HOME}/.procmail"
235 # Dossier où sont les fichiers de configuration supplémentaires pour procmail
236 CONFIGDIR="${PROCMAILDIR}/rc"
237 # Path du fichier de log de procmail
238 LOGFILE="${PROCMAILDIR}/logs/procmail.log"
239
240
241 ### Scripting
242 # Shell à utiliser pour exécuter des commandes
243 SHELL="/bin/bash"
244
245
246 #################################################################
247 ## Noms de dossiers ##
248 #################################################################
249 # /Attention à ne pas mettre de . ou d'espace au mauvais endroit…/
250
251 ### Dossiers personnels
252 ## Dossier pour ranger les mails de Cron
253 ## (ceux envoyés par un serveur Cr@ns seront rangés ailleurs)
254 CRONPERSODIR=".Cron"
255
256 ## Dossier de Spam
257 SPAMDIR=".Spam"
258 # Spam reçu sur (usenet|news)@(crans.org|crans.ens-cachan.fr)
259 SPAMINNDIR="${SPAMDIR}.usenet"
260
261 ### Dossiers pour les MLs qui ne sont pas catchées par une autre règle
262 ## Dossier racine
263 MLDIR=".ML"
264 ## Dossier pour ranger les rappels de mots de passes envoyés par Mailman
265 RAPPELMDPDIR="${MLDIR}.rappels_mdp"
266
267 ### Dossiers pour les MLs du campus
268 MLCAMPUSDIR="${MLDIR}.Campus"
269 MLBDEDIR="${MLCAMPUSDIR}.BDE"
270 MLCLUBSDIR="${MLCAMPUSDIR}.Clubs"
271 MLMEDDIR="${MLCLUBSDIR}.Med"
272 MLBDLDIR="${MLCAMPUSDIR}.BDL"
273 MLBDADIR="${MLCAMPUSDIR}.BDA"
274 MLBDSDIR="${MLCAMPUSDIR}.BDS"
275 MLSDADIR="${MLCAMPUSDIR}.SDA"
276 MLGALADIR="${MLCAMPUSDIR}.Gala"
277 MLSONODIR="${MLCAMPUSDIR}.SoNo"
278 MLWEIDIR="${MLCAMPUSDIR}.WEI"
279
280 ## Dossier où atterrira une ML non-répertoriée
281 MLFAILSUFFIX="Fail"
282
283 ### Dossier pour les MLs de promo
284 MLPROMODIR="${MLDIR}.Promo"
285
286 ### Dossier pour les MLs non répertoriées plus haut et non-MA-crans
287 MLPERSODIR="${MLDIR}.Divers"
288
289 ### Dossiers pour les Membres Actifs du Cr@ns
290 ## Dossier racine
291 CRANSDIR=".Cr@ns"
292 ## Dossiers de mailing lists
293 CRANSADMINISTRATIFDIR="${CRANSDIR}.Administratif"
294 CRANSADMINISTRATIFPUBLICDIR="${CRANSADMINISTRATIFDIR}.public"
295 CRANSADMINISTRATIFPRIVATEDIR="${CRANSADMINISTRATIFDIR}.prive"
296
297 ## Dossiers pour les mails de monitoring
298 MONITORINGDIR="${CRANSDIR}.Monitoring"
299 MONITDIR="${MONITORINGDIR}.Monit"
300 NAGIOSDIR="${MONITORINGDIR}.Nagios"
301 NAGIOSSWITCHSDIR="${NAGIOSDIR}.0-switchs"
302 NAGIOSBORNESDIR="${NAGIOSDIR}.1-bornes"
303 ARPWATCHDIR="${MONITORINGDIR}.Arpwatch"
304 MUNINDIR="${MONITORINGDIR}.Munin"
305 MUNINIMPRESSIONDIR="${MUNINDIR}.Imprimante"
306 STATUPLOADDIR="${MONITORINGDIR}.Stats-upload"
307 MACPRISESDIR="${MONITORINGDIR}.Mac_prises"
308
309 ## Dossiers pour le mails concernant des "problèmes"
310 # Racine
311 PROBLEMSDIR="${CRANSDIR}.Problems"
312 # Par ordre de gravité croissant
313 SELFSOLVINGDIR="${PROBLEMSDIR}.0-Self-solving"
314 SOFTDIR="${PROBLEMSDIR}.1-Soft"
315 WILDDIR="${PROBLEMSDIR}.2-Wild"
316 ARGHDIR="${PROBLEMSDIR}.3-Argh"
317 HUMANPROBLEMSDIR="${PROBLEMSDIR}.4-Human-made"
318 # Sous-dossiers
319 FTPDIR="${SELFSOLVINGDIR}.ftp"
320 SQLGREYDIR="${SELFSOLVINGDIR}.sql-errors"
321 BACKUPPCDIR="${SOFTDIR}.backuppc"
322 DJANGODIR="${SOFTDIR}.Django"
323 INTRANET2DIR="${SOFTDIR}.Intranet2"
324 INTRANET1DIR="${SOFTDIR}.intranet-bugreport"
325 CRONDIR="${WILDDIR}.cron"
326 GESTCRANSDIR="${WILDDIR}.gest_crans"
327 NOLSDIR="${ARGHDIR}.nols"
328 PULSARDIR="${ARGHDIR}.pulsar"
329 MAILMANDIR="${HUMANPROBLEMSDIR}.Mailman"
330 MULTIDECODIR="${HUMANPROBLEMSDIR}.multi-deco"
331
332 ## Dossier de surveillance (= surveillance d'actions humaines)
333 # Racine
334 SURVEILLANCEDIR="${CRANSDIR}.Surveillance"
335 # Par ordre de sensibilité croissant
336 LOGCHECKDIR="${SURVEILLANCEDIR}.0-logcheck"
337 MODERATEURSDIR="${SURVEILLANCEDIR}.1-Moderateurs"
338 OVHMANAGERDIR="${SURVEILLANCEDIR}.2-OVH"
339 CAMERASDIR="${SURVEILLANCEDIR}.3-Cameras"
340 LDAPDIR="${SURVEILLANCEDIR}.4-LDAP"
341 LDAPSOLDEDIR="${LDAPDIR}.Solde"
342 LDAPMODIFDIR="${LDAPDIR}.Modification"
343 CRANSPASSWORDSDIR="${SURVEILLANCEDIR}.5-cranspasswords"
344
345 ## Dossier informatif (= pour se tenir au courant de ce qui se passe au Cr@ns)
346 # Racine
347 INFORMATIONDIR="${CRANSDIR}.Information"
348 # Mails d'ovh autre que les notifications de connexion au manager
349 OVHDIR="${INFORMATIONDIR}.OVH"
350 # apt-listchanges
351 APTLISTCHANGESDIR="${INFORMATIONDIR}.apt-listchanges"
352 # Machines supprimées pour chambre invalide
353 DELETEDMACHINES="${INFORMATIONDIR}.machines_supprimees"
354 # Repositories
355 GITDIR="${INFORMATIONDIR}.git"
356 DARCSDIR="${INFORMATIONDIR}.darcs"
357 # Mail envoyé quotidiennement par bcfg2 avec la liste des serveurs non synchro
358 BCFG2DIR="${INFORMATIONDIR}.bcfg2"
359 # Statistiques des serveurs de news
360 INNDIR="${INFORMATIONDIR}.inn"
361 # Notifications de bridage pour upload
362 DECODIR="${INFORMATIONDIR}.deconnexion"
363 # Résumés des rehargements impression comnpay
364 PAIEMENTSDIR="${INFORMATIONDIR}.paiements"
365
366 ## Dossier de discussion techniques
367 # Racine
368 TECHNIQUEDIR="${CRANSDIR}.Technique"
369 # Mails de roots@ non catchées avant
370 ROOTSDIR="${TECHNIQUEDIR}.roots"
371 # Mails de la ML nounou
372 NOUNOUDIR="${TECHNIQUEDIR}.Nounou"
373 # Messages laissés sur la Freebox
374 FREEBOXDIR="${TECHNIQUEDIR}.Freebox"
375 # Dossier où atterriront les mails de root@ non triés
376 ROOTDEFAULTDIR="${TECHNIQUEDIR}.root"
377 # Mails de la ML apprentis
378 APPRENTISDIR="${TECHNIQUEDIR}.Apprentis"
379
380 ### Dossier racine pour Federez
381 FEDEREZDIR=".FedeRez"
382 FEDEREZMONITDIR="${FEDEREZDIR}.Monit"
383 FEDEREZADMINDIR="${FEDEREZDIR}.admin"
384 FEDEREZLOGWATCHDIR="${FEDEREZADMINDIR}.Logwatch"
385 FEDEREZLOGCHECKDIR="${FEDEREZADMINDIR}.Logcheck"
386 FEDEREZDEBIANDIR="${FEDEREZADMINDIR}.Debian-updates"
387 FEDEREZPASSWORDSDIR="${FEDEREZADMINDIR}.federezpasswords"
388 FEDEREZOVHDIR="${FEDEREZADMINDIR}.OVH"
389
390
391
392 ################################################################################
393 ##### Preprocessing #####
394 ################################################################################
395
396 # On décode les champs sur lesquels ont pourrait avoir besoin de matcher
397 # plus tard la version décodée. On stocke les versions décodées
398 # dans des variables.
399 # "formail -cXHeader" récupère le champ Header (-X) en enlevant les \n (-c)
400 # si le champ fait plusieurs lignes
401 :0
402 * ^X-Mailer:
403 XMAILER=| formail -cXX-Mailer: | perl -MEncode -pe '$_=encode("utf-8",decode("MIME-Header",$_))'
404
405 :0
406 * ^Subject:
407 SUBJECT=| formail -cXSubject: | perl -MEncode -pe '$_=encode("utf-8",decode("MIME-Header",$_))'
408
409 :0
410 * ^List-ID:
411 LISTID=| formail -cXList-ID: | perl -MEncode -pe '$_=encode("utf-8",decode("MIME-Header",$_))'
412 # Pour faire fonctionner correctement le tri des mails envoyés par Discourse,
413 # Décommenter le INCLUDERC suivant
414 INCLUDERC="${CONFIGDIR}/discourse.preprocessing"
415
416 ################################################################################
417 ##### Règles #####
418 ################################################################################
419
420 # Patch pour traiter les mails qui ont été
421 # reçus avant le 30/06/13, car certaines règles de tri du .procmailrc
422 # n'étaient pas encore valables à l'époque.
423 # très utile si on veut retrier tous ses mails
424 INCLUDERC="${CONFIGDIR}/retrocompatibility_patch.rules"
425
426 # Fichier de règles prioritaires à personnaliser
427 INCLUDERC="${CONFIGDIR}/custom.high.rules"
428
429 #################################################################
430 ## Gestion des mails d'Arpwatch ##
431 #################################################################
432 :0
433 * ^From:.*arpwatch@crans\.org
434 {
435 # On trie les différents types de mails d'Arpwatch,
436 # en faisant attention aux . et aux espaces après avoir éliminé
437 # tout ce qui se trouve après " (".
438 :0
439 * ^Subject: \/.* \(
440 {
441 TYPE=`echo $MATCH | sed 's/ (.*//;s/\( \|\.\)/_/g;'`
442 :0
443 ${ARPWATCHDIR}.${TYPE}/
444 }
445
446 :0
447 ${ARPWATCHDIR}/
448 }
449
450
451 #################################################################
452 ## Gestion des mails de Monit ##
453 #################################################################
454
455 # Les mails de Monit à propos du serveur A sont envoyés dans le dossier
456 # ${MONITDIR}.A/ si le dossier n'existe pas, il est créé mais il
457 # faut encore s'y abonner...
458 :0
459 * ^(X-Mailer|User-Agent):.*monit
460 {
461 # Avant de tester les hostnames Cr@ns, règle spéciale utile pour
462 # certains admin de FedeRez
463 :0
464 * ^To: federez-monit@
465 ${FEDEREZMONITDIR}/
466
467 :0
468 * ^Subject:.*monit \/[^ \.]+
469 ${MONITDIR}.${MATCH}/
470
471 # Dossier de Monit par défaut, si Monit se met à envoyer d'autres mails
472 :0
473 ${MONITDIR}/
474 }
475
476
477 #################################################################
478 ## Gestion des mails de Nagios ##
479 #################################################################
480
481 # Les mails de Nagios à propos du serveur A sont envoyés dans le dossier
482 # ${NAGIOSDIR}.A/ si le dossier n'existe pas, il est créé mais il
483 # faut encore s'y abonner
484 :0
485 * ^(From: nagios@crans\.org|User-Agent:.*nagios)
486 {
487 # Tous les switchs vont dans le dossier ${NAGIOSSWITCHSDIR}
488 :0
489 * ^Subject:.*[A-Z]+ - (bat[a-z]-[0-9]+|backbone|minigiga)\.
490 ${NAGIOSSWITCHSDIR}/
491
492 # Toutes les bornes vont dans le dossier ${NAGIOSBORNESDIR}
493 :0
494 * ^Subject:.* [A-Z]+ - [a-z0-9](-*[a-z0-9]+)*\.wifi\.crans\.org
495 ${NAGIOSBORNESDIR}/
496
497 # Chaque serveur a son dossier
498 :0
499 * ^Subject:.* [A-Z]+ - \/[a-z0-9](-*[a-z0-9]+)*
500 ${NAGIOSDIR}.${MATCH}/
501
502 # Si l'envie prenait à Nagios de raconter un peu plus sa vie
503 :0
504 ${NAGIOSDIR}/
505 }
506
507
508 #################################################################
509 ## Gestion des mails de Cron ##
510 #################################################################
511
512 # Attention, si on enlève la ligne qui filtre sur le To:, on catche
513 # aussi tous les mails Cron qui ne sont pas envoyés par un serveur Cr@ns
514 :0
515 * ^To:.*(roots?|postgres|www-data|list)@crans\.org
516 * ^(X-Cron-Env|From: Anacron)
517 {
518 # Par défaut, on ne trie pas les mails de Cron, pensez à décommenter
519 # le INCLUDERC (et à copier le fichier complémentaire) pour les trier
520 INCLUDERC=${CONFIGDIR}/cron.rules
521
522 :0
523 ${CRONDIR}/
524 }
525
526
527 #################################################################
528 ## Gestion des mails de root@crans.org ##
529 #################################################################
530
531 # Statistiques du serveur de news
532 # Désolidarisé du bloc root@crans.org pour séparer les spams
533 # sans qu'ils tombent dans ${ROOTDEFAULTDIR}
534 :0
535 * ^To:.*(usenet|news)@(crans\.org|crans\.ens-cachan\.fr)
536 {
537 # L'intérêt c'est que plein de spam arrive sur ces addresses
538 # et seules les stats d'inn sont censées y arriver.
539 # Donc on peut bazarder tout ce qui n'est pas stat au Spam
540 :0
541 * ^From: news@crans.org
542 ${INNDIR}/
543
544 :0
545 ${SPAMINNDIR}/
546 }
547
548 # On matche tous les alias de root@crans.org
549 :0
550 * ^(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)
551 {
552 # Spam de logcheck
553 :0
554 * ^From:.*logcheck@crans\.org
555 ${LOGCHECKDIR}/
556
557 # Mails envoyés par munin quand il trouve qu'un graphe sort des limites
558 :0
559 * ^From: munin@crans\.org
560 ${MUNINDIR}/
561
562 # Mails envoyés en cas d'erreur de synchronisation du ftp
563 :0
564 * ^From: mirror@crans\.org
565 ${FTPDIR}/
566
567 # Mails envoyés en cas d'erreur sur l'intranet2
568 :0
569 * ^Subject: \[Intranet2 Cr@ns\]
570 ${INTRANET2DIR}/
571
572 # Mails envoyés en cas d'une autre erreur Django
573 :0
574 * ^Subject: \[Django\]
575 ${DJANGODIR}/
576
577 # Mails envoyés lors de la modification d'un fichier de mot de passe
578 :0
579 * ^X-Mailer: cranspasswords
580 ${CRANSPASSWORDSDIR}/
581
582 # Mails envoyés par OVH…
583 :0
584 * ^From:.*support@ovh\.com
585 {
586 # …lors d'une connexion au manager
587 :0
588 * ^X-Ovh-Template: nic/fr/loginNotification.model
589 ${OVHMANAGERDIR}/
590
591 # Pour autre chose (facture, newsletter)
592 :0
593 ${OVHDIR}/
594 }
595
596 # Mail envoyés par apt-listchanges lors d'une mise à jour
597 :0
598 * ^Subject:.*apt-listchanges
599 ${APTLISTCHANGESDIR}/
600
601 # Mail envoyé quand gest_crans plante
602 :0
603 * ^Subject: Bugreport gest_crans.py
604 ${GESTCRANSDIR}/
605
606 # Tout ce qui traîne sur root et qui n'est pas catché par quelque chose
607 :0
608 ${ROOTDEFAULTDIR}/
609 }
610
611
612 #################################################################
613 ## Gestion des mails de roots@crans.org ##
614 #################################################################
615
616 :0
617 * ^(To|Cc|List-Id):.*roots(@|\.lists\.)crans\.org
618 {
619 # Il y a aussi des apt-listchanges sur roots@
620 :0
621 * ^Subject:.*apt-listchanges
622 ${APTLISTCHANGESDIR}/
623
624 # Mails envoyés par la baie de disques
625 :0
626 * ^From: nols@crans\.org
627 ${NOLSDIR}/
628
629 # Mails envoyés par l'onduleur
630 :0
631 * ^From: pulsar@adm\.crans\.org
632 ${PULSARDIR}/
633
634 # Mails envoyés par le script qui détecte les changements dans la base LDAP
635 :0
636 * ^Subject:.*Surveillance modifications de la base LDAP
637 ${LDAPMODIFDIR}/
638
639 # Mails envoyés lors d'une erreur sur la base de donnée sqlgrey
640 :0
641 * ^From: sqlgrey@crans\.org
642 ${SQLGREYDIR}/
643
644 # Mails envoyés par backuppc
645 :0
646 * ^From: backuppc@crans\.org
647 ${BACKUPPCDIR}/
648
649 # Souriez, vous êtes photographiés
650 :0
651 * ^From:.*cameras@crans\.org
652 {
653 # On trie par lieu de la caméra
654 :0
655 * ^Subject:.*0B
656 ${CAMERASDIR}.0B/
657
658 :0
659 * ^Subject:.*0H
660 ${CAMERASDIR}.0H/
661 }
662
663 # I'm in your mailbox, watching your commits
664 # Attention à bien filtrer git avant darcs parce que les mails git
665 # contiennent aussi le header X-DarcsInfo !
666 :0
667 * ^X-GitInfo
668 {
669 :0
670 * XMAILER ?? /usr/scripts/utils/git-whatsnew
671 ${GITDIR}.whatsnew/
672
673 :0
674 ${GITDIR}/
675 }
676 :0
677 * ^X-DarcsInfo
678 {
679 :0
680 * ^X-Mailer: Python Darcs Check
681 ${DARCSDIR}.whatsnew/
682
683 :0
684 ${DARCSDIR}/
685 }
686
687 # Messages sur la Freebox
688 :0
689 * ^From: telephonie\.freebox@(mevo\.)?freetelecom\.fr
690 ${FREEBOXDIR}/
691
692 # Serveurs non synchronisés avec bcfg2
693 :0
694 * ^X-Mailer: bcfg2-reports
695 ${BCFG2DIR}/
696
697 # Si il n'y pas de condition de tri, ça va dans le dossier Technique
698 :0
699 ${ROOTSDIR}/
700 }
701
702
703 #################################################################
704 ## Mails envoyés sur des MLs mais par des bots ##
705 #################################################################
706 # Il n'y jamais de dossier par défaut, le mail sera rattrapé
707 # au moment de la gestion gobale des mailing-lists
708
709 # Sur la ML disconnect@
710 :0
711 * ^List-Id:.*disconnect\.lists\.crans\.org
712 {
713 # Statistiques d'upload
714 :0
715 * XMAILER ?? /usr/scripts/surveillance/statistiques2.py
716 ${STATUPLOADDIR}/
717
718 # Résumé quotidien des correspondances mac_prises
719 :0
720 * XMAILER ?? /usr/scripts/surveillance/mac_prises/mac_prise_analyzer.py
721 ${MACPRISESDIR}/
722
723 # Notifications de bridage pour upload
724 :0
725 * XMAILER ?? /usr/scripts/surveillance/deconnexion2.py
726 {
727 # Récidivistes
728 :0
729 * SUBJECT ?? fois ce mois
730 ${MULTIDECODIR}/
731
732 :0
733 ${DECODIR}/
734 }
735 }
736
737 # Sur la ML impression@
738 :0
739 * ^List-Id:.*impression\.lists\.crans\.org
740 {
741 # Modification de solde
742 :0
743 * ^X-Mailer: modif_solde
744 ${LDAPSOLDEDIR}/
745
746 # Munin stock papier et toners
747 :0
748 * ^From: munin@crans\.org
749 ${MUNINIMPRESSIONDIR}/
750 }
751
752
753 # Sur la ML respbats@
754 :0
755 * ^List-Id:.*respbats\.lists\.crans\.org
756 {
757 # Machines supprimées pour chambre invalide
758 :0
759 * XMAILER ?? /usr/scripts/gestion/menage/chambres_invalides.py
760 ${DELETEDMACHINES}/
761 }
762
763 # La ML paiements@
764 :0
765 * ^List-Id:.*paiements\.lists\.crans\.org
766 ${PAIEMENTSDIR}/
767
768
769 #################################################################
770 ## Gestion des cron perso ##
771 #################################################################
772 # Les Subjects des mails de (Ana)?Cron
773 # sont de la forme "Cron <user@host>" ou "Anacron job '[...]' on host"
774 # On parse pour récupérer le host et trier avec
775 :0
776 * ^(X-Cron-Env|From: Anacron)
777 {
778 # Si le mail vient de "host.domain.tld",
779 # On range ça dans le dossier "host"
780 :0
781 * ^Subject:.*(Cron <[^@>]+@\/[^>]+|Anacron job .* on \/.*)
782 {
783 # On prend garde à ne pas créer un sous-dossier
784 # si jamais le host contient un . ou un espace
785 HOST_=`echo "$MATCH" | sed 's/\(\.\| \)/_/g'`
786 :0
787 ${CRONPERSODIR}.${HOST_}/
788 }
789
790 # Dans le cas (improbable) où le Subject ne matche pas
791 :0
792 ${CRONPERSODIR}/
793 }
794
795
796 #################################################################
797 ## Inclusion des règles personnelles ##
798 #################################################################
799 # Fichier de règles à personnaliser
800 INCLUDERC="${CONFIGDIR}/custom.normal.rules"
801
802 #################################################################
803 ## Gestion des mails de Mailman ##
804 #################################################################
805 # La ML mailman@ est un peu particulière
806 :0
807 * ^(List-Id:.*mailman\.|(To|Cc):.*mailman-(owner|bounces)@)lists\.crans\.org
808 {
809 :0
810 * ^Subject:.*Rappel_pour_les_abonnements_aux_listes
811 ${RAPPELMDPDIR}/
812
813 :0
814 ${MAILMANDIR}/
815 }
816
817
818 #################################################################
819 ## Gestion des mailing-listes ##
820 #################################################################
821 # Ajouter à la suite vos propres règles pour les mailing-listes non gérées ici
822
823 :0
824 # On récupère tous les mails qui sont arrivés par l'intermédaire d'une ML
825 * ^List-Id:.*
826 {
827 ML=`echo "${LISTID}" | sed 's/.*<\([^<>]\+\)>$/\1/'`
828
829 #################################################################
830 ## Gestion des mailing-listes Cr@ns ##
831 #################################################################
832 :0
833 * ^List-Id:.*lists\.crans\.org
834 {
835 # On veut ne garder que le nom de la ML sans le nom de domaine
836 ML=`echo "${ML}" | sed 's/\.lists\.crans\.org//'`
837 # On prend garde à ne pas créer un sous-dossier
838 # si jamais le List-Id contient un . ou un espace
839 ML_=`echo "${ML}" | sed 's/\(\.\| \)/_/g'`
840
841 #################################################################
842 ## Cas où la ML est une ML de membre actif du Cr@ns ##
843 #################################################################
844
845 # MLs publiques (au sens où il n'y a pas que des cranseux abonnés)
846 :0
847 * ? grep "^${ML}$" ${CONFIGDIR}/ML_MA_crans.administratif.public
848 ${CRANSADMINISTRATIFPUBLICDIR}.${ML_}/
849
850 # MLS où il n'y a que des membres actifs abonnés
851 # (on peut y envoyer des informations privées)
852 :0
853 * ? grep "^${ML}$" ${CONFIGDIR}/ML_MA_crans.administratif.prive
854 ${CRANSADMINISTRATIFPRIVATEDIR}.${ML_}/
855
856 # La ML federez@lists.crans.org va quand même dans le dossier FedeRez
857 :0
858 * ? echo "${ML}" | grep federez
859 ${FEDEREZDIR}.${ML_}/
860
861 # La ML modérateurs va dans le dossier Surveillance
862 :0
863 * ^List-Id:.*moderateurs\.lists\.crans\.org
864 ${MODERATEURSDIR}/
865
866 # La ML intranet-bugreport va dans le dossier Problèmes
867 :0
868 * ^List-Id:.*intranet-bugreport\.lists\.crans\.org
869 ${INTRANET1DIR}/
870
871 # La ML nounou va dans le dossier Technique
872 :0
873 * ^List-Id:.*nounou\.lists\.crans\.org
874 ${NOUNOUDIR}/
875
876 # La ML apprentis va dans le dossier Technique
877 :0
878 * ^List-Id:.*apprentis\.lists\.crans\.org
879 ${APPRENTISDIR}/
880
881 #################################################################
882 ## Gestion des autres mailing-list (du campus) ##
883 #################################################################
884 # MLs génériques du campus (des assos et d'autres random trucs)
885 :0
886 * ? grep "^${ML}$" ${CONFIGDIR}/ML_campus
887 ${MLCAMPUSDIR}.${ML_}/
888
889 # MLs BDE
890 :0
891 * ? echo "${ML}" | grep bde
892 ${MLBDEDIR}.${ML_}/
893
894 # MLs BDA
895 :0
896 * ? (grep "^${ML}$" ${CONFIGDIR}/ML_bda) || (echo "${ML}" | grep bda)
897 ${MLBDADIR}.${ML_}/
898
899 # MLs SoNo
900 :0
901 * ? (grep "^${ML}$" ${CONFIGDIR}/ML_sono) || (echo "${ML}" | grep sono)
902 ${MLSONODIR}.${ML_}/
903
904 # MLs Med
905 :0
906 * ? echo "${ML}" | grep -E "^med"
907 ${MLMEDDIR}.${ML_}/
908
909 # MLs SDA
910 :0
911 * ? echo "${ML}" | grep sda
912 ${MLSDADIR}.${ML_}/
913
914 # MLs BDL
915 :0
916 * ? echo "${ML}" | egrep "(bdl|interludes|kwei)"
917 ${MLBDLDIR}.${ML_}/
918
919 # MLs BDS
920 :0
921 * ? echo "${ML}" | egrep "bds"
922 ${MLBDSDIR}.${ML_}/
923
924 # MLs WEI
925 :0
926 * ^List-Id:.*wei\.lists\.crans\.org
927 ${MLWEIDIR}.${ML_}/
928
929 # MLs Gala
930 :0
931 * ? echo "${ML}" | egrep "(gala|geec)"
932 ${MLGALADIR}.${ML_}/
933
934 # MLs des clubs
935 :0
936 * ? (grep "^${ML}$" ${CONFIGDIR}/ML_clubs) || (echo "${ML}" | egrep '^club-')
937 ${MLCLUBSDIR}.${ML_}/
938
939 #################################################################
940 ## Gestion des MLs de promo ##
941 #################################################################
942 :0
943 * ? echo "${ML}" | egrep '^(ens-|a\.coeur)'
944 ${MLPROMODIR}.${ML_}/
945
946 #################################################################
947 ## Gestion des MLs perso ##
948 #################################################################
949 :0
950 * ? grep "^${ML}$" ${CONFIGDIR}/ML_perso
951 ${MLPERSODIR}.${ML_}/
952
953 # Si on est tombés sur un ML non-répertoriée
954 :0
955 ${MLCAMPUSDIR}.${MLFAILSUFFIX}.${ML_}/
956 }
957
958 # Décommenter pour activer le tri des mails envoyés par
959 # Discourse. Attention, penser à décommener également
960 # l'INCLUDERC de discourse.preprocessing
961 # et lire https://wiki.crans.org/VieCrans/FichiersConfiguration#rc.2Fdiscourse
962 # à propos de la remarque sur le module Perl à installer
963 INCLUDERC=${CONFIGDIR}/discourse.rules
964
965 #################################################################
966 ## Gestion des mailing-listes FedeRez ##
967 #################################################################
968 :0
969 * ^List-Id:.*federez.net
970 {
971 # On veut ne garder que le nom de la ML sans le nom de domaine
972 ML=`echo "${ML}" | sed 's/\(\.lists\)\?\.federez\.net//'`
973 # On prend garde à ne pas créer un sous-dossier
974 # si jamais le List-Id contient un . ou un espace
975 ML_=`echo "${ML}" | sed 's/\(\.\| \)/_/g'`
976
977 # Gestion de la ML admin
978 :0
979 * ^List-Id:.*admin
980 {
981 :0
982 * ^Subject:.*Logwatch for.*federez\.net
983 ${FEDEREZLOGWATCHDIR}/
984
985 :0
986 * ^To:.*logcheck
987 ${FEDEREZLOGCHECKDIR}/
988
989 :0
990 * ^Subject:.*Debian package update
991 ${FEDEREZDEBIANDIR}/
992
993 :0
994 * ^From:.*federezpasswords
995 ${FEDEREZPASSWORDSDIR}/
996
997 :0
998 * ^From:.*support@ovh.com
999 ${FEDEREZOVHDIR}/
1000
1001 :0
1002 ${FEDEREZADMINDIR}/
1003 }
1004
1005 :0
1006 ${FEDEREZDIR}.${ML_}/
1007 }
1008
1009 #################################################################
1010 ## Gestion des autres mailing-listes ##
1011 #################################################################
1012 # On récupère le nom de domaine et le nom de la ML
1013 # Le nom de domaine, c'est le mot (sans .) qui précède le TLD
1014 DOMAIN=`echo "${ML}" | sed 's/.*\.\([^\.]\+\)\.[^\.]\+$/\1/'`
1015 # On ne sait jamais ce qu'on peut rencontrer…
1016 DOMAIN_=`echo "${DOMAIN}" | sed 's/ /_/g'`
1017 # On vire le domain et le TLD
1018 # On vire .list ou .lists si c'est la composante la plus à droite
1019 # du subdomain
1020 # On prend garde à ne pas créer un sous-dossier
1021 # si jamais le List-Id contient un . ou un espace
1022 ML_=`echo "${ML}" | sed 's/\.[^\.]\+\.[^\.]\+$//;s/\.liste\?s\?$//;s/\(\.\| \)/_/g'`
1023 :0
1024 ${MLDIR}.${DOMAIN_}.${ML_}/
1025 }
1026
1027 # Fichier de règles de faible priorité à personnaliser
1028 INCLUDERC="${CONFIGDIR}/custom.final.rules"