[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Utiliser procmail [pour le ddtc]



hello,

voici ma configuration pour utiliser le ddtc avec procmail. Je sais que
d'autres ont déjà donné des configs qui marchent, mais la mienne est mieux ;)

Pour ceuce qui utilisent des programmes de mail « conviviaux » ne permettant
pas de passer un message sur l'entrée standard d'une commande (mais oui,
mais oui, je parle d'evolution), je rappelle qu'utiliser procmail est la
solution à leur probleme. Ce tri est effectué avant que le programme ne mail
ne recoive votre courrier. Voir la fin du mail.

Pour ceuce qui sont sur debian-user-french et qui savent meme pas ce que
c'est que le ddts, c'est ce qu'on utilise pour traduire la description des
paquets Debian. C'est assez simple à utiliser, et vous pourriez avoir envie
de nous rejoindre sur debian-l10n-french pour aider, et rendre à la
communauté tous les bienfaits qu'elle vous offre ;)
Bon. La raison principale de ce mail sur la liste duf, c'est pas ce
paragraphe de propagande (encore que...), c'est la fin de ce mail : 
"Utiliser procmail en 3 leçons".

----------------------------
# copie de sécurité dans ddts
:0 c
* From: desc@ddtp.debian.org
ddts

# on passe le mail au script
:0 w
* From: desc@ddtp.debian.org
| /usr/bin/ddts-script parse

# et si on arrive la, c'est que le script a échoué (sinon, on s'arrete la
# regle d'avant). Dans ce cas, on range le mail dans ddts-error
:0
* From: desc@ddtp.debian.org
ddts-errors

# Capte les messages que le script m'envoi à moi meme
:0
* Subject: nothing fr.*
ddts

#Ne garder qu'une fois les messages
:0 Wh: msgid.lock
| formail -D 524288 msgid.cache

-----------------------------
Les grosses différences avec les autres configs que j'ai vu ici ou la, c'est:

 - comme ca, on place les messages ayant provoqué une erreur dans un folder
   à part.
 - Seuls les mails qui *viennent* du ddts sont traités par le script. C'est
   que si on oublie le 'From:' sur les trois premieres regles, elle est
   appliqué aux mails qui parlent de cette adresse dans le titre, et, plus 
   grave, aux réponses à des mails du robot.
   Ainsi, si un traducteur veut répondre à votre rapport de bogue, il y a
   fort à parier qu'il va simplement cliquer sur 'répondre' au message recu
   du ddts. Et quand il arrivera dans votre boite, votre regle procmail va
   s'y appliquer alors qu'elle devrait pas.
 - les erreurs sont rangées dans un folder séparé. De cette facon, plus
   besoin de regarder ce qu'il y a dans le folder principal, on est sur que
   ca s'est bien passé pour ces messages la. 
   Ce que j'avais lu jusque la permettait d'emmettre un message d'erreur
   dans logmail. Mais je recois entre 150 et 300 mails tous les jours. Alors
   vous pensez bien que je ne prend pas la peine de vérifier mon logmail à
   tous les coups...

 - J'ai indiqué ici la regle formail qui n'a pas grand rapport avec la
   choucroute, puisqu'elle permet de ne garder qu'un seul exemplaire des
   mails que je recois (pour contrer le fait qu'on me réponde personnellement 
   en plus de répondre aux listes où je suis abonné).

   Evidement, il n'est pas necessaire de mettre cette regle pour que le ddtc
   marche, mais je voulais juste rappeller que c'est une bonne idée de
   mettre les regles du ddtc *avant* celle de formail.
   Une intuition me dit que ddtc et ddtp peuvent avoir des ptits soucis, et
   qu'il est possible qu'ils oublient parfois de changer l'identificateur du
   mail, ce qui ferait que le second mail serait mangé par formail.
   
   Je ne suis pas sur de mon coup sur cette histoire, mais ca ne mange pas
   de pain de mettre les regles ddtc avant celle formail, et c'est une bonne
   idée si mon intuition est avérée (soit en ce moment, soit à l'avenir).

Aller. Je suis bien luné (ie, j'ai pas envie de bosser), alors je me fend
d'un :

                   #################################
                   # Utiliser procmail en 3 lecons #
                   #################################

Avertissement: je ne suis pas un dieu du procmail, et y'a certaines
fonctionnalités que je ne sais pas utiliser. Mais j'en utilise déjà
beaucoup, et ceux qui en veulent plus peuvent aller consulter la doc de
l'outil ;)

##########################
# Lecon 1 : Intro, usage #
##########################
procmail est un outil mamouthesque. Il est capable de faire des choses
extraordinaires, mais faut faire gaffe à pas merder, car sinon, on peut
perdre des mails. procmail n'a cependant rien de magique. Pour que ca
marche, il faut faire en sorte qu'il soit invoqué sur votre machine au bon
moment. pour ce faire, on peut soit mettre un .forward en place, soit
demander à votre serveur de mail de se servir de procmail. Comme exim
utilise procmail par défaut (au moins sous Debian), vous n'avez rien besoin
de faire par défaut.

###################################
# Lecon 2 : configuration de base #
###########"#######################
la configuration doit se trouver dans le fichier ~/.procmailrc Y'a un entete
qui défini des trucs, puis une liste de regles qui sont appliquées les unes
apres les autres jusqu'a ce qu'on en trouve une qui indique ce qu'il faut
faire du mail. L'entete que j'ai ici est :
-------------------
PATH=/bin:/usr/bin:/usr/local/bin
MAILDIR=$HOME/Mail      #you'd better make sure it exists
DEFAULT=$MAILDIR/mbox   #completely optional
LOGFILE=$MAILDIR/logmail   #recommended
SHELL=/bin/sh    # for other shells, this might need adjustment
LOCKEXT=lockext
--------------------
Il est dit que tous mes mails sont rangés quelque part sous $HOME/Mail, que
si on ne trouve pas de regle pour un mail donné, faut le coller dans le
folder mbox, et qu'il faut écrire tout ce qu'on fait dans logmail
(indispensable pour vérifier qu'on s'est pas gourré dans la config)

la suite du fichier est donc composée de regles séparées par une ligne vide.
Une regle est un entete, une ou plusieurs conditions, et une action. Des que
procmail trouve une regle dont toutes les conditions sont remplies, il
applique l'action, et s'arrete la. Bon. C'est presque toujours vrai. On peut
demander sur l'entete à ce que procmail ne s'arrete pas la, et autres
variations.
Toutes les conditions doivent etre remplies. C'est un ET entre les
conditions, pas un OU.

La ligne d'entete classique est la suivante:
:0 [les drapeaux que vous voulez]
En général, y'a pas besoin de drapeau.

La ligne d'action classique est la suivante:
<nom du folder ou vous voulez ranger le message>
Une variante est:
| <ligne de commande à laquelle vous voulez passer le message>


La condition classique est la suivante:
* <expression réguliere avec laquel les entetes du message doivent correspondre>

Si vous voulez que l'expression réguliere soit testée uniquement sur le
corps du message, utilisez le drapeau 'B' sur l'entete. 'HB' demande à ce
que le message entier (entete + corps) soit examiné.

Exemple:
-------------
:0 HB
* ^Content-Type.*\.(exe|vbs|doc|dot|xls)
spam
-------------
Signification : j'aime pas qu'on m'envoi un fichier [exécutable] windows
(mais j'efface pas tout de suite, on sait jamais, j'ai des amis qui
utilisent windows, aussi ;)

Autre exemple :
---------------
:0
* ^(From|Subject|Content-Type):.*=["?]?(euc-kr|big5|ks_c)
/dev/null
---------------
Signification : je ne parle pas japonais ni chinois, et donc si je recois un
message encodé pour ces langues, c'est du spam et je l'efface directement
(tres pratique pour les listes Debian, malheureusement).

Dernier exemple pour l'instant :
--------------
:0:
* ^Content-Type: text/html.*
spam
--------------
Signification : J'aime pas le HTML. Mais cette regle ne capture que les
mails exclusivement en HTML. Elle laisse passer ceux qui ont HTML + text en
alternatives MIME.

#############################
# Lecon 3 : aller plus loin #
#############################
On peut modifier le comportement avec des drapeaux sur l'entete de la regle:
  - 'c' indique qu'il faut faire une copie du mail si la condition
    s'applique. Donc, on fait une copie, et on en fait ce que l'action
    indique. et avec l'original, on continu de parcourir le fichier pour
    trouver une regle qui s'applique [aussi].

  - 'w' indique que l'action est un programme, et que si le programme
    retourne un code d'erreur, il ne faut pas considere le mail comme
    traité, mais continuer avec les regles suivantes.
Voir la doc pour d'autres drapeaux.

Les expressions régulieres ne sont pas la seule possibilité. je suis par
exemple modérateur d'une liste dont l'une des regles de base est que la
taille des messages doit etre inférieure à 10k :
--------------
:0:
* ^From.*<sympa@cines.fr>
* > 10240
ARP/TRASH
--------------

De plus, on peut utiliser une partie de l'expression réguliere dans l'action:
--------------
:0 H
* ^X-Mailing-List:.*[<].*lists\.debian\.org[>]
* ^X-Mailing-List:.*[<] *debian-\/[^ ][^@]*
debian/$MATCH
--------------
Signification : on range le courrier arrivant sur les listes debian dans un
folder "debian/"<le nom de la liste privé du "debian-" du debut>. ie, $MATCH
contient ce qui est correspond à apres le \/ 


Voila, j'en sais pas plus. Mais c'est largement suffisant pour mes besoins,
et pour les besoins de la plupart de ceux qui ne sont pas encore des gourous
procmail, je pense. 

Encore une fois, il faut faire attention en utilisant procmail. chaque fois
qu'on change la config, il faut etudier attentivement Mail/logmail, pour
voir si tout se passe comme prévu. Dans le cas contraire, vous etes peut
etre en train de perdre des mails ;)

Bye, Mt.

-- 
Si les grands esprits se rencontrent, les petits esprits, eux, se cognent.



Reply to: