OVH Cloud OVH Cloud

Regles procmail et decodage RFC 2047

4 réponses
Avatar
lfrigault
Bonjour,

J'ai besoin de faire un traitement dans procmail sur le champ Subject
pour repérer un motif particulier et faire un traitement derrière. Le
motif à repérer est en ASCII pur (pas d'accent ou autre bizzarrerie),
mais certains MUA l'encodent parfois selon la RFC 2047 en iso-8859-x,
UTF8, et autres joyeusetés ce qui casse mes expressions rationnelles de
filtrage.

Comment et surtout avec quoi (à priori un programme externe) dans
procmail convertir ce champ en ASCII avant de passer dans les
expressions de filtrage.

Lolo, qui déteste la RFC 2047
--
Laurent Frigault | <url:http://www.agneau.org/>
Votre souris a bougé, veuillez rebooter pour prendre en compte
ces changements.

4 réponses

Avatar
Xavier Roche
Laurent Frigault wrote:
Comment et surtout avec quoi (à priori un programme externe) dans
procmail convertir ce champ en ASCII avant de passer dans les
expressions de filtrage.


Un début de réponse:
http://www.natur.cuni.cz/~mmokrejs/sendmail/mime/msg00010.html

En gros il y a ce qu'il faut dans les modules perl, apparamment

Lolo, qui déteste la RFC 2047


Et encore, tu as du voir qu'on pouvait encoder en base64 dans la rfc2047 :)

Avatar
F. Senault
On Wed, 19 Nov 2003 09:57:20 +0000 (UTC), Laurent Frigault wrote:

Comment et surtout avec quoi (à priori un programme externe) dans
procmail convertir ce champ en ASCII avant de passer dans les
expressions de filtrage.


En perl, MIME::WordDecoder marche pas mal, et est assez simple à
utiliser :

use MIME::WordDecoder;
my $wd=MIME::WordDecoder->supported('ISO-8859-1');
print $wd->decode(<>);

Lolo, qui déteste la RFC 2047


Fred
--
map{${+chr}=chr}map{$_=>$_^ord$"}$=+$]..3*$=/2;
print "$J$u$s$t $a$n$o$t$h$e$r $P$e$r$l $H$a$c$k$e$rn";

Avatar
Laurent Wacrenier
Laurent Frigault écrit:
J'ai besoin de faire un traitement dans procmail sur le champ Subject
pour repérer un motif particulier et faire un traitement derrière. Le
motif à repérer est en ASCII pur (pas d'accent ou autre bizzarrerie),
mais certains MUA l'encodent parfois selon la RFC 2047 en iso-8859-x,
UTF8, et autres joyeusetés ce qui casse mes expressions rationnelles de
filtrage.


On ne peut pas le transformer proprement en ASCII, il faut l'écrire
dans un jeu de caractères universel (ex: Unicode), transcodé par
exemple en UTF-8. Vu qu'US-ASCII est un sous ensemble, ça ne devrait
pas poser de problèmes.

J'ai des fichiers C qui font ça, base64.c, base64.h et rfc2047.c dans
http://cvs.sourceforge.net/viewcvs.py/pll/lmtpd/, à compiler avec
-DWITH_ICONV et il faut un iconv() relativement propre. Quelques
lignes de C devraient faire l'affaire pour la convertion. Il y a un
test qui montre comment on s'en sert à la fin.

Il n'y a plus qu'à ajouter des lignes comme ceci dans .procmailrc :

SUBJECT=`formail -x Subject | mon_programme`

:0
* SUBJECT ?? mon-expression
...

Avatar
lfrigault
In article ,
Laurent Wacrenier <lwa@ teaser . fr> writes:

On ne peut pas le transformer proprement en ASCII, il faut l'écrire
dans un jeu de caractères universel (ex: Unicode), transcodé par
exemple en UTF-8. Vu qu'US-ASCII est un sous ensemble, ça ne devrait
pas poser de problèmes.

J'ai des fichiers C qui font ça, base64.c, base64.h et rfc2047.c dans
http://cvs.sourceforge.net/viewcvs.py/pll/lmtpd/, à compiler avec


...

Bonne idée, dès que j'ai le temps je vais explorer cette idée.

Merci

Lolo
--
Laurent Frigault | <url:http://www.agneau.org/>
La justice, c'est comme la Sainte-Vierge, si on ne la voit pas de
temps en temps, le doute s'installe. (Michel Audiard)