next up previous contents
suivant: Utilisation de Mutt avec monter: Interaction avec le reste précédent: Procmail et fetchmail   Table des matières

Configurer Gnus pour qu'il utilise procmail

Éric Jacoboni a contribué cette section sur l'utilisation de Gnus conjointement à Procmail. Gnus est suffisamment important et puissant pour qu'on doive le configurer de manière à l'utiliser proprement avec procmail.

Gnus permet de créer de façon simple des dossiers de courrier selon les critères de votre choix : il suffit d'utiliser la fontion nnmail-split-methods et de spécifier, pour chaque dossier, l'expression rationnelle sur laquelle on se basera pour classer un courrier dans celui-ci.

Voici, par exemple, ce que pourrait contenir un .gnus pour activer cette possibilité :

;; On utilise le backend nnml pour le courrier (car par défaut,
;; Gnus lit les news...)
(setq 
  gnus-secondary-select-methods '((nnml ""))
  mail-sources
           '((directory
             :path "~/incoming/"   ;; cf. variable MAILDIR de .procmailrc
             :suffix "" )
            )
)

Ici, nous avons choisi d'utiliser le répertoire incoming comme source de courrier, c'est celui où procmail range ses dossiers. Gnus transférera alors les courriers dans les répertoires correspondants de Mail (c'est le répertoire par défaut).

Toutefois, cette méthode a quelques inconvénients : le principal est qu'elle fait double emploi si l'on utilise déjà procmail pour, par exemple, mettre aux oubliettes des courriers de provenance douteuse, ou pour supprimer les doublons (voir précédemment). Un autre inconvénient est qu'elle est propre à Gnus, ce qui rend obsolètes tous ces dossiers si l'on décide de changer de MUA (mais quelle idée saugrenue...).

Pour cette raison, il est plus sage de configurer Gnus pour qu'il utilise procmail pour gérer ces dossiers :

;; Utilisation du backend nnml avec procmail
;; nnmail-procmail-directory correspond à la variable MAILDIR 
;; de votre .procmailrc
(setq
  gnus-secondary-select-methods '((nnml ""))
  gnus-use-procmail t
  nnmail-spool-file "procmail"
  nnmail-procmail-directory "~/incoming/"
  nnmail-procmail-suffix ""
)

;; Pour les nouvelles versions de Gnus (>= 5.8.7)
(setq mail-sources
   (list '(directory
             :path "~/incoming/"
             :suffix "" 
          )
   )
)

et c'est tout... Gnus utilisera les règles définies dans votre .procmailrc pour créer ses dossiers de courrier.

Le principe est simple : lorsque vous lancerez Gnus, celui-ci ira consulter ~/incoming où doivent se trouver les différents fichiers créés par procmail. Si ces fichiers ne sont pas vides, il les lit et transfère les courriers qu'ils contiennent dans les sous-répertoires de ~/Mail en créant un fichier par courrier. Après cette étape, les fichiers de ~/incoming sont donc tous vides.

Si vous avez, par exemple, les règles suivantes dans votre .procmailrc :

# *FreeBSD-Stable
:0
* ^TO.*stable@FreeBSD
FreeBSD-Stable

# *Systeme
:0
* From:.*(root|news)@chezmoi
Systeme

# *Perso
:0
* ^TO.*moi
Perso

# *Le-reste
:0
* ^TO.*
Le-Reste

vous aurez les fichiers ~/incoming/FreeBSD-Stable, ~/incoming/Systeme, ~/incoming/Perso et ~/incoming/Le-Reste qui se rempliront au fur et à mesure que vous recevez des messages correspondant aux règles ci-dessus. En lançant Gnus, celui-ci créera (si ce n'est déjà fait) les répertoires ~/Mail/FreeBSD-Stable, ~/Mail/Systeme, ~/Mail/Perso et ~/Mail/Le-Reste et chacun d'eux contiendra des fichiers portant des noms sur le même principe qu'un spool de news :

% ls -l ~/incoming/Perso
-rw-------  1 moi  moi  0 26 jul 14:05 /home/moi/incoming/Perso
                       ^^^

% ls ~/Mail/Perso
1       11      13      2       4       6       8
10      12      14      3       5       7       9

L'avantage de cette méthode est de centraliser le triage du courrier en un seul endroit : .procmailrc . D'autre part, procmail dispose de moyens bien plus perfectionnés pour spécifier les expressions rationnelles (la macro ^TO_, notamment).

Par contre, Gnus considérera que chaque fichier de ~/incoming contient une liste de courriers : si vous avez donc créé un fichier msgid.cache dans ce répertoire avec la règle

:0 Wh: msgid.lock
| formail -D 8192 msgid.cache

vue plus haut, Gnus se plaindra que ce dossier n'est pas au bon format. Pour régler ce problème, il suffit de modifier cette entrée en :

:0 Wh: msgid.lock
| formail -D 8192 /tmp/msgid.cache

ce qui a l'avantage supplémentaire de nettoyer ce fichier à chaque redémarrage de votre système (s'il est configuré pour nettoyer /tmp).

Ressources :

Comme d'habitude, le fichier info de Gnus donne tous les renseignements (Rubrique 'Select Methods' -> 'Getting Mail' -> 'Mail and Procmail').

La Faq Gnus (http://www.ccs.neu.edu/software/contrib/gnus/contient également une rubrique sur cette configuration (contribution de Randal Schwartz).

Gnus RuLeZ !


next up previous contents
suivant: Utilisation de Mutt avec monter: Interaction avec le reste précédent: Procmail et fetchmail   Table des matières
Olivier Tharan 2002-06-09