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