Site perso de David ROBERT - [Accueil] [Informatique] [Electronique] [Poules] english

Recherche dans mon dossier imap :-)

Comment utiliser la recherche

Je stocke depuis quelques années les messages provenant de listes de diffusion de sécurité. Ces messages sont stokés dans un unique dossier qui peut être interrogé par ce formulaire :

La durée de recherche est variable, elle dépasse souvent 60 secondes. Désolé du délais, il faudra que je mette en place un dossier indexé.

La recherche est effectuée sur le corp des messages et non les sujets ou en-têtes. Le langage est strict mais intuitif, voici quelques exemples en guise d'explication :

"and" implicite :

Quelques explications

J'ai écrit un petit programme en python me permettant d'effectuer des recherches sur mon dossier de sécurité. Je souhaitais pouvoir avoir un langage de requète avancé et surtout totalement indépendant du langage de recherche de IMAP4. Cette abstraction a été faite pour éviter les risques d'injection de commandes imap, mais également pour pouvoir interroger d'autres sous-systèmes qu'imap.

Comme j'ai mis en place le formulaire sur mon site pour mon propre usage, autant faire en sorte que d'autres personnes en profitent (même si leur nombre est infime :-)

Plus de détails

Mon programme utilise une implémentation de lex et yacc écrite en python : ply. L'analyseur grammatical transforme ma requète en un Abre Syntaxique Abstrait (AST). Cet abre est ensuite transformé en une chaine de recherche IMAP4.

La grammaire que j'ai définie pour le langage de recherche est la suivante :

expression : expression AND term
           | expression OR term
           | term
     term  : NOT term
           | QWORDS
           | WORD
           | LPAREN expression RPAREN

Pour plus de détails, voir les sources.