Linuxman - juillet 2000


INDEX

Mois précédent


1 7 2000

 1 7 2000

Mots Clés : gnus.

Nul besoin de préciser que le monde des lecteurs de mail est un monde cruel, surtout par la chaleur du mois de juillet (le rapport ? ), où se battent en duel pine, mutt, netscape, kmail, deux trois screenshots d'Évolution, les plus basiques elm et mail, et tout une ribambelles de contestants... Personnellement j'ai commencé avec elm, pour ensuite passer à netscape, pendant pas mal de temps, d'ailleurs, jusqu'a ce que ses aleatoires plantages ne m'incite à changer pour pine, pas mal de temps aussi ; puis c'est mutt qui me séduit, avant que je ne fasse le pas vers mon dernier amour, le sus-nommé gnus.

Je dois bien cependant reconnaître pas mal de qualité à mutt, léger, rapide, configurable, supporte les threads, affiche plein de jolies couleurs, fonctionne en texte, que demander de plus ? Peut-être un peu plus de souplesse pour la gestion de grande quantité de mails. mutt est parfait jusqu'a une centaine de mail par jour, au delà je trouve que le fait de ne pas pouvoir ouvrir plusieurs fenêtre sur les mails autrement qu'en lançant une nouvelle session, et la gestion des nouveaux messages le rendent un peu limité, mais cela n'engage que moi, finalement...

Tout cela pour dire que j'utilise maintenant gnus, un module mail sous emacs. Je lui reprocherai tout de suite une certaine lenteur, qui empêche d'utiliser efficacemment les fonctions de scores, par exemple, sur une config un peu limite (ca va sur un PIII 500, c'est plus limite sur un K6 233).

Installation
Première étape, récupérer les sources sur www.gnus.org. Xemacs possède une version de gnus incluse par défaut, mais elle est un peu vieille, mieux vaut prendre la dernière, tant qu'à faire... Personnelement j'ai pris la version CVS parce que la 5.8.6 marchait pas top avec les attachements (pas du tout même).

Donc une fois l'archive décompressée, un coup de configure, édition du Makefile, pour y mettre entre autre le chemin des fichiers lisp générés (/usr/local/share/emacs/site-lisp pour moi) et puis on contruit tout ca en faisant gaffe de spécifier si vous voulez utiliser emacs ou Xemacs en tapant respectivement make ou make EMACS=xemacs. Puis on installe tout cela tranquille avec un petit make install et le tour est joué.

Configuration
Une fois les fichiers lisps en place, il faut toucher un brin au .emacs histoire qu'emacs sache où trouver tout le bazar. Le mien ressemble à:

;;
;; gnus
;;

;; chemin des fichiers lisp
(setq load-path (cons (expand-file-name "/usr/local/share/emacs/site-lisp") load-path))

;; chemin des fichiers de doc
(setq Info-default-directory-list
        (cons "/usr/local/info" Info-default-directory-list))

;; 
;; evite d'avoir des fichiers ~ dans les répertoires de mails
;;

(defun turn-off-backup ()
 (set (make-local-variable 'backup-inhibited) t))
(add-hook 'nnfolder-save-buffer-hook 'turn-off-backup)


Cela indique donc à emacs où trouver gnus, maintenant la configuration de gnus en lui-même se fait dans un ~/.gnus de préférence, histoire de pas tout mélanger avec emacs, parce qu'ils sont copains mais pas plus. Alors voilà mon fichier .gnus commenté, sachant que je capte pas tout non plus, gnus est extrêmement configurable et il y a un paquet de trucs qui passe a 15 000 pour moi... Vous aurez bien-sûr toutes les infos que vous voudrez dans le mode info de gnus (M-x info sous emacs).
;;; -*- Lisp -*-
;;; gnus customizations

;;
;; Fonctions utiles utilisées dans la suite
;;
(defun To (u) (concat "^\\([Cc][Cc]\\|[Tt][Oo]\\|Sender\\|Mailing-List\\|X-Loop\\):.*" u))
(defun ToMml (u) (To (concat u "@\\(mandrakesoft\\|linux-mandrake\\).com")))
(defun xloop (u) (concat "^X-Loop: " u))
(defun date (u) (concat (format-time-string "%Y%m." (current-time)) u))

;;
;; Ne pose pas de question en quittant.
;;
(setq gnus-interactive-exit 'nil)

;;
;; Renseignements sur moi
;;
(setq user-full-name "Warly"
      	user-mail-address "warly@linux-france.org"
      	message-from-style 'angles
;;      gnus-local-organization "Mandrakesoft"
)

;;
;; chemins
;;
(setq gnus-article-save-directory "~/Mail/"
      message-directory "~/Mail/"
      gnus-use-long-file-name nil)

;;
;; A la casba j'utilise pas les news pour aller plus vite.
;;
(setq 	
;;	gnus-check-new-newsgroups 	'ask-server
	gnus-check-new-newsgroups 	nil
 	gnus-save-killed-list 		nil
;; 	gnus-save-newsrc-file 		nil
	nntp-connection-timeout 	10
	nntp-command-timeout 		10
)

;;
;; truc pour gérer l'expiration des mails, mais pas concluant...
;;
;(remove-hook 'gnus-mark-article-hook
;             'gnus-summary-mark-read-and-unread-as-read)
;(add-hook 'gnus-mark-article-hook 'gnus-summary-mark-unread-as-read)

;;
;; Ne sélectionne pas le premier article dès qu'on rentre dans un groupe
;;
(setq gnus-auto-select-first nil)

(setq 
;;	nntp-rlogin-command "ssh"

;; serveur de news
;;	gnus-select-method '(nntp "news.server.yop")

	mail-sources 
		'((file :path "/home/warly/Mail/mbox"))
;; 
;; Si vous voulez faire du pop à partir d'emacs, moi j'ai un fetchmail 
;; et un procmail qui le font.
;; 		(pop :server "pop3.mailserver.com" :user "myname")
;;
;; Si vous utilisez un procmail qui sépare déja votre mail en plusieurs
;; fichiers dans un répertoire
;;
;;		'((directory :path "/home/warly/Mail/raw"
;;			     :suffix ""))
;;		'((maildir :path "/home/warly/mail/"))


;; attribut des fichiers créer dans le répertoire de mail
;; ca doit etre de l'hexa si je ne m'abuse
;;
	mail-source-default-file-modes	384
 	
;;
;; il y a plusieurs facon de traiter le mail avec gnus, soit un fichier
;; par mail, c'est le défaut, soit un fichier par groupe, c'est ce que
;; je fais, soit un seul gros fichier.
;;
	gnus-secondary-select-methods
		'((nnfolder ""))
	nnfolder-inhibit-expiry		t

;; répertoire des news
	gnus-article-save-directory 	"~/News"

;; fichier de scores, pour donner un score aux artivles et les classer
  	gnus-kill-files-directory	"~/Mail/scores"


;; fichier ou je sauve les messages que j'envoie      
;; avec la methode, le fichier active associé (ce fichier
;; contient les infos sur les mails lus, pas lus...
	gnus-message-archive-group	'((date "sent.sent")) 

	gnus-message-archive-method
		'(nnfolder "archive"
          		'((nnfolder-directory (format-time-string "~/Mail" (current-time))))
          		(nnfolder-active-file "~/Mail/sent.active")
          		(nnfolder-get-new-mail nil)
;          		(nnfolder-inhibit-expiry t))
		)

;; je maîtrise pas encore vraiment le processus d'expiration
;; qui permet de detruire des mails suivant certains critères
;; après un certain temps
;	nnmail-expiry-wait 7
;	gnus-auto-expirable-newsgroups ""


;;
;; Encodage Europe de l'Ouest
;;
	message-default-charset `iso-8859-1

	gnus-group-charset-alist '(("" "iso-8859-1"))

;;
;; Comment mon mail qu'il est séparé, yo
;; pour le coup c'est des trucs bidons, mais
;; l'esprit y est :)
;;
	nnmail-split-methods 
		(list
 			(list (date "mandrake.yop") (ToMml "yop"))
			(list (date "mandrake.teouaim") (ToMml "teouaim"))
			(list (date "mandrake.in") (xloop "in"))
			(list (date "mandrake.lala") (xloop "lala"))
 			(list (date "mandrake.gap") (ToMml "gap"))
			(list (date "lkml") "linux-kernel@vger")
			(list (date "devel") (ToMml "devel"))
			(list (date "parinux") "X-list: parinux")
			(list (date "debian") "debian-devel@lists.debian.org")
			(list (date "redhat") "redhat-devel-list@redhat.com")
			(list (date "lsb") "X-Loop: lsb-discuss@lists.linuxbase.org")   
			(list (date "lsb") "X-Loop: lsb-spec@lists.linuxbase.org")
			(list (date "pote") "From:.*coyotte")
			(list (date "pote") "From:.*merite")
			(list (date "pote") "From:.*Solan Ter")
			(list (date "pote") "(From : Damon Mike|From: damy)")
			(list (date "mbox") ""))

;;
;; pour voir les groupes vide du mois courant (parce que je classe
;; par mois, mais c'est chacun son truc, c'est comme les céréales le 
;; matin... Non ça ça n'a rien à voir...
	gnus-permanently-visible-groups (date "")

;;
;; en gros ça m'affiche
;; l'attribut lu ou pas lu (U), l'attribut si j'ai repondu et des trucs dans ce genre (R)
;; le score (+ pour cool, - pour pas cool), le score total du thread sur 3 colonnes (V)
;; le nombre de mail dans le thread (t), le nombre de ligne du mail (L), l'envoyeur (a),
;; et le sujet (s) du mail...
;;
     	gnus-summary-line-format "%U%R%z%3V%I%(%3t%[%3L: %-20,20a%]%) %s\n"

;; par défaut ne montre que le premier mail des threads
      	gnus-thread-hide-subtree 	t

;; classique
	gnus-signature-file 	"~/.signature"

;; iAmAHaCk3rYo
 	gnus-novice-user		nil

;; pour faire varier les champs suivant à qui on écrit
	gnus-posting-styles
	'(
	  ("mandrake"
	     (address "warly@mandrakesoft.com")
 	     (organization "Mandrakesoft")
	     (signature "coolos carlos"))
;; ça a pas l'air de marcher comme ca...
;;	  (header "From.*To" "mandrake"
;;	     (address "warly@mandrakesoft.com"))
	  )

)

;
; bbdb, une base de données pour le carnet d'adresse
;

(require 'bbdb)
(require 'bbdb-gnus)
(bbdb-insinuate-gnus)
(require 'gnus-setup)
(setq gnus-use-bbdb t)
(add-hook 'gnus-startup-hook 'bbdb-insinuate-gnus)
(add-hook 'gnus-startup-hook 'bbdb-insinuate-message)


;;
;; utilise le packages footnotes, qui permet de faire des annotations dans les mails
;;
(require 'footnote)

;;
;; gpg
;;
(load-library "mailcrypt")
(mc-setversion "gpg")


Bon voilà pour avoir une base de fichier de config...

Bon maintenant c'est bien joli tout ça, mais c'est pas pour autant que vous maîtriserez gnus les doigts dans le nez, parce qu'il faudra apprendre deux trois raccourcis sympathiques avant de pouvoir le mettre en prod. Un fois dans emacs, on lance le bestio avec M-x gnus, pour se retrouver sous l'écran principal, à savoir celui des groupes. Et on causera de l'utilisation une prochaine fois, parce que trop n'est pas mieux que peu. Sur ce, salutations...

haut de page

Valid HTML 4.0!

Warly Home Page   Generated 2000-07-02, 11h31   Mail
Copyright © 1999,2000 Florent Villard (warly@bigfoot.com)
This site was created with daily (tar.gz, rpm)