Mime-proxy
Patrick Lamaizière
<patrick(dot)softs(at)lamaiziere(dot)net>
Version 2.1.c.2 (19/7/2006)
- Pour les articles sortant, Mime-proxy peut utiliser le jeu de
caractères déclaré dans l'article au lieu du paramètre "client_charset".
- trust_client_charset = 0 | 1 (defaut : 0)
- ou avec une entête X-Mp-Trust-Client: no | yes
- Suppression du proxy « incoming_smtp ».
- Ajout d'une option "smtp_helo_to_ehlo" pour corriger un problème
de Xnews sur la commande HELO en SMTP. Il utilise HELO au lieu de EHLO
si l'authentification smtp est activée.
- smtp_helo_to_ehlo = 0 | 1 (defaut : 0)
+ correction.
- Remplacement des caractères LF, CR et TAB par un espace lors du
décodage d'un mot encodé.
Version 2.1.c.1 (6/2/2006)
- Sauf demande, je supprimerais le proxy de type « incoming_smtp »
dans une prochaine version. En remplacement, une option «
allow_mp_control_header » est introduite. Si l'option est à '0', les
entêtes de contrôles (par exemple X-Mp-Charsets: ) pour Mime-proxy sont
inopérantes.
- allow_mp_control_header = 0 (par défaut : 1 )
+ correction.
- Mime-proxy - « par conception (!) » - ne supporte pas le mode
PIPELINING du protocole ESMTP. Pour empêcher l'utilisation de ce mode,
la réponse PIPELINING lors du EHLO est suprimée.
- Les messages d'erreurs sont dirigés sur STD_ERR.
Version
2.1.c.0 (1/1/2006)
- Support des translitérations. Les translitérations permettent le
remplacement de caractères non supportés par un jeu de caractères par
un équivalent. Par exemple le caractère euro peut être translitéré par
"EUR", le e dans l'o par "eo", etc. Les translitérations sont
supportées en lecture et en écriture simplement en ajoutant à un jeu de
caractère la séquence "//TRANSLIT".
- Exemple pour l'encodage :
- charsets = us-acsii, iso-8859-1, iso-8859-15//TRANSLIT, utf-8
- Exemple pour le décodage :
- client_decoding_charset = iso-8859-15//TRANSLIT
Version 2.0.c.3. (19/11/2005)
- Ajout d'options de log pour le débogage :
- -logsockets n ( n = 1 : log des connexions sur les sockets, n =
2 : log du texte reçu et envoyé )
- -logproxy n ( n = 1 : log de l'état des proxies )
- -logencoding ( n = 1 : log des encodages / décodages )
- par exemple mproxy.exe mproxy.ini -logsockets 2 -logproxy 1
-logencoding 1
+ correction.
- La bibliothèque de sockets (Yaesockets) renvoie un mauvais numéro
de port sous UNIX.
- Correction d'un problème de Mime-proxy sur le multiplexage des
sockets et d'un autre problème potentiel sur la bibliothèque.
- Problème lors du décodage d'un mot encodé vide (et invalide donc)
+ Bug.
Mime-proxy crash au bout d'un mois environ de
lecture continue de mon serveur de news (fr.* et comp.*). Je
pense que cela vient des problèmes de multiplexage corrigés.
N'hésitez pas à me rapporter les problèmes ! (mise à jour : je l'ai
fait tourner deux mois sans soucis depuis).
Version 2.0.c.2. (02/10/2005)
+ correction.
- Problème de portabilité avec Mac OS X au niveau de la
bibliothèque de socket.
- Problème sur la commande POST utilisée par Slrn.
Version 2.0.c.1. (02/06/2005)
- Ajout du traitement de la commande BODY (protocole NNTP) qui
permet de ne récupérer que le corps d'un article. Comme Mime-proxy a
absolument besoin des entêtes pour décoder, il effectue une requête
ARTICLE et ne renvoie que le corps (décodé) pour simuler une commande
BODY. Ceci est nécessaire pour faire fonctionner Mime-proxy avec
NewsRover (il utilise la requête BODY).
Version 2.0.c.0 (2.0.b.1 à 2.0.b.3). (22/05/2005)
- Sous *nix, Mime-proxy peut «forker» la connexion entre chaque
client et serveur. Paramètre fork_connection dans la section [misc]
- [misc]
- fork_connection = 1 (par défaut 0)
Si le fork échoue, Mime-proxy rejette
la connexion avec une erreur temporaire "No more ressources available !
Try later"
- Sous *nix, contrôle du nombre d'enfants forkés. Paramètre
max_child
dans la section [misc]. Si le nombre d'enfants dépasse ce paramètre, la
connexion est refusée avec une erreur temporaire "No more ressources
available !
Try later"
- [misc]
- max_child = 25 (par défaut 50)
- Ajout d'un contrôle sur le nombre de sockets maximal à gérer,
paramètre max_managed_sockets dans la section [misc]
- [misc]
- max_managed_sockets = 200 (par défaut 128)
Si le nombre maximal de sockets est
dépassé, MP rejette la connexion avec une erreur temporaire "No more
ressources available ! Try later"
MP nécessite une socket par serveur local, plus deux par connexion d'un
client (une pour le client et une pour le serveur distant). Si les
connexions sont forkées, seules les sockets des serveurs locaux sont à
prendre en compte.
- Ajout en option d'une entête X-Original-IP indiquant l'adresse IP
du client, paramètre original_ip_header.
- [default]
- original_ip_header = 0 | 1 (defaut 0)
Si l'option original_ip_reverse est
également présente, l'IP du client est indiquée sous la forme de son
reverse dns.
- Ajout d'une option pour effectuer des remplacements de caractères
à l'envoi d'un article. Le paramètre replace_characters permet de
spécifier les remplacements sous la forme de couples "caractère à
remplacer - caractère de remplacement". Les caractères sont indiqués
par leur valeur unicode en hexadécimal.
- Par exemple pour remplacer le caractère RIGHT SINGLE QUOTATION
MARK (Unicode 0x2019) (la fameuse apostrophe windows) par une
apostrophe normale (Unicode 0x27) :
- replace_characters = 0x2019 - 0x27
Il est possible d'indiquer plusieurs
couples en les séparants par une virgule. Egalement on peut spécifier
des remplacements par une entête 'X-Mp-Replace: ' (par exemple
X-Mp-Replace: 0x2019 - 0x27 )
+ corrections.
- Dans le fichier de configuration, le paramètre client_charset
n'était pas pris en compte en cas de plusieurs sections pour les
proxies.
- Le paramètre "socket_buffer_capacity" est en fait dans la section
[misc] et non dans la section [proxies]
+ Fourniture des fichiers C permettant de compiler MP sans avoir besoin
de SmartEiffel et du code source Eiffel (pour *nix). Voir le répertoire
C-code dans le fichier
archive des sources.
Version 2.0.b.0. (22/04/2005)
C'est toujours en test, mais ça a l'air de bien marcher.
+ corrections.
- Corrige des régressions au niveau de la détection des caractères
inconnus ou non conformes.
- La version 2.0.a.1 fonctionnait mal sous Windows, problème de
link avec libiconv (merci Luca).
Version 2.0.a.1. (09/03/2005)
ATTENTION, version alpha/beta de test !
- MP utilise la bibliothèque libiconv pour effectuer la conversion
entre jeux de caractères au lieu de tables de caractères. Il reconnait
bien plus de jeux de caractères (voir
http://www.gnu.org/software/libiconv)
- MP a besoin de la bibliothèque partagée iconv.dll, téléchargez la
à partir de mon site et placer la dll iconv.dll dans le répertoire de
Mime-proxy. Vous pouvez également la compiler vous même.
- J'ai très certainement dû introduire quelques bugs, merci de me
les rapporter.
Version 1.4.c.4. (21/01/2005)
+ corrections.
- Le programme plantait si un entête se termine par un espace, bug
introduit dans la 14c2.
- Sur des articles multipart, mime-proxy introduisait une partie
vide text/plain en fin d'article.
- Petite modification sur le select des sockets afin que le
programme s'endorme en cas d'inactivité.
Version 1.4.c.3. (11/10/2004)
+ corrections.
- Sur des entêtes multiples (Face: ou Received: par exemple)
Mime-proxy n'en conservait qu'une.
- Problème lors du décodage d'un article en quoted-printable s'il
se termine par un signe '='
Version 1.4.c.2. (27/07/2004)
- Sous Unix, ajout d'une option '-user' qui indique au programme de
basculer vers un utilisateur après installation des serveurs ; ce qui
évite de le laisser tourner sous root : mime-proxy filename -user username
- Ex: mime-proxy mproxy.ini -user patrick
- Les espaces multiples sont supprimés dans les entêtes, par
exemple "Subject: ab cd" devient "Subject: ab cd".
- En cas de refus d'encodage, MP indique pour chaque jeu de
caractères, le caractère (en fait la valeur Unicode en hexadécimal) qui
a provoqué l'échec.
Par exemple, la liste des jeux de
caractères (paramètre charsets) est égale à charsets = us-ascii,
iso-8859-1, iso-8859-15 et on veut envoyer un article qui contient un
euro suivi d'un symbôle monétaire neutre.
Mime-proxy renvoie alors une erreur "437 Mime-proxy : Ne peut pas
encoder cet article !
us-ascii:0x000020AC,iso-8859-1:0x000020AC,iso-8859-15:0x000000A4"
Ce qui veut dire : l'us-ascii ne convient pas à cause du caractère
0x20AC (l'euro), l'iso-8859-1 non plus à cause de ce même caractère. Et
l'iso-8859-15 ne convient pas à cause du symbôle monétaire neutre
(0xA4). Comme aucun jeu de caractères ne convient il refuse l'article.
+ corrections.
- Le « unfolding » d'une entête bouclait indéfiniment lors du XOVER
si une entête contenait "CRLF" sans être suivie d'un espace.
Version 1.4.c.1. (26/06/2004)
- Ajout d'une option '-lint' qui affiche la configuration de
Mime-proxy ; ex : mproxy.exe mproxy.ini -lint
- Ajout d'un protocole 'none', dans ce mode Mime-proxy se contente
de relayer la connexion et fait juste office de proxy.
- [proxies]
- proxy = 5000, news.free.fr, 119, none
+ corrections.
- En émission, un caractère Unicode > 65535 faisait planter le
programme.
- Le paramètre
"socket_buffer_capacity" est en fait dans la section
[proxies] et non dans la section [misc]
- Prise en compte du code de réponse NNTP '201' pour dire 'Hello !'
+ Sous Windows, utilisation du compilateur C de Microsoft. Lcc-win32
n'autorisant plus la commercialisation et je ne vois pas pourquoi je
ne gagnerais pas plein de sous.
Version 1.4.c.0. (29/02/2004)
- L'utf-8 est maintenant supporté du coté "client" (paramètres
"client_charset", "client_decoding_charset", ...). Cela permet
d'utiliser Mime-proxy plus facilement pour corriger ou améliorer
l'encodage et décodage de certains lecteurs.
- Possibilité de réencoder les entêtes du coté client. Lors de
l'arrivée d'entêtes, MP peut décoder puis réencoder en utilisant la RFC
2047. Même but que l'ajout précédent. Paramètre "incoming_encoded_word"
ex :
- [default]
- incoming_encoded_word = 1 (par défaut 0)
Ce paramètre est pris en compte lors de
la récupération d'articles et du XOVER. L'activation de ce paramètre
est sûrement nécessaire si vous souhaiter réencoder vers l'utf-8.
- Optimisation du XOVER : afin de gagner du temps seuls les champs
"subject" et "from" sont maintenant soumis au décodage.
Version 1.3.c.0. (21/09/2003)
- Ajout d'un protocole "incoming_smtp", ceci permet de mettre
Mime-proxy à l'entrée d'un serveur SMTP. Les paramètres
"client_charset", etc s'appliquent du point de vue du serveur (les noms
sont mal choisis mais je n'avais pas pensé à ça). ex:
- [proxies]
- smtp_in = 25, localhost, 26, incoming_smtp
- A l'envoi, et en cas d'utilisation de 8 bits brut dans les
entêtes, il est possible de convertir les caractères vers le jeu de
caractères spécifié dans le paramètres "header_charset". Si ce
paramètre est absent, le jeu de caractères spécifié dans
"client_charset" est utilisé (il n'y a donc pas de conversion). Si la
conversion n'est pas possible, l'article est rejeté.
- [default]
- header_charset = iso-8859-1
Les caractères 8 bits des entêtes sont
alors convertis vers l'iso-8859-1. L'entête de contrôle
"X-Mp-Header-Charset: " permet de spécifier un jeu de caractères
pour un article. Ce paramètre n'est actif que si l'encodage RFC2047
n'est pas utilisé (paramètre encoded_word=0)
- Possibilité de désactiver l'entête X-Mime-proxy: avec le
paramètre enable_mime_proxy_header = 0 | 1 (par défaut :1)
- [default]
- enable_mime_proxy_header = 0
- Possibilité de ne pas décoder les entêtes sur les messages
entrants, paramètre decode_header = 0 | 1 (par défaut :1).
- [default]
- decode_header = 0
- Suivant les systèmes, il peut-être nécessaire de spécifier la
taille du buffer des sockets. La valeur par défaut est de 2048 octets,
si vous avez des problèmes à l'envoi de messages de grandes tailles,
essayez de la diminuer. Paramètre "socket_buffer_capacity" dans la
section [misc]
- [misc]
- socket_buffer_capacity = 1024
+ corrections.
- Sur de gros messages
le buffer d'émission des sockets pouvait saturer et produire une perte
de données.
- Lors de la déconnexion de la socket serveur, la socket cliente
pouvait être déconnectée avant la fin des opérations d'écritures en
cours. Dans
certains cas la séquence "QUIT" n'aboutissait pas car la socket cliente
étaient déconnectée trop tôt.
- Le test de la valeur du champ Content-Transfer-Encoding était
sensible à la casse.
Version 1.2.c.0. (17/07/2003)
- Ajout du support de l'encodage yEncode, à l'émission ou à la
réception. Ajout de deux paramètres :
enable_incoming_yEncode = 0 | 1 (valeur
par défaut 0 : pas de support pour les articles entrants.)
enable_outgoing_yEncode = 0 | 1 (valeur par défaut 0 : pas de
support pour les articles sortants.)
A l'envoi, il est possible d'activer / désactiver le support de
l'yEncode avec l'entête X-Mp-yEncode: yes / no
Note : Dans le cas de l'envoi d'un article comportant de l'yEncode, il
est forcément encodé en 8 bits sans tenir compte des paramètres
encode_to_qp et encode_to_b64.
- Possibilité de spécifier un jeu de caractères différent pour
l'encodage et le pour décodage du point de vue du client. Ajout du
paramètre client_decoding_charset.
- Le paramètre client_charset désigne le jeu de caractères
qu'utilise le logiciel lecteur pour l'envoi. Le nouveau paramètre
client_decoding_charset désigne le jeu de caractères des articles
renvoyés au logiciel lecteur. En l'absence de ce paramètre, le
paramètre
client_charset est utilisé à la place.
client_charset = iso-8859-15
client_decoding_charset = windows-1252
Ceci indique à Mime-proxy que le lecteur utilise le jeu iso-8859-15
lorsqu'il envoie un article. Les articles renvoyés au lecteur lui sont
fournis dans le jeu windows-1252.
- Ajout du traitement de la commande TOP pour le protocole POP3.
- Messages et contrôles d'erreurs sur la configuration plus
explicites.
+ corrections
- Crash lors du redimensionnement d'une console (Linux seulement).
Bug du compilateur.
- Corruption possible du buffer de réception des sockets (mais
peut-être du au changement du compilateur ?).
+ divers.
- Mise à jour et reprise de la documentation, que j'espère plus
claire.
- Factorisation, nettoyage de printemps du code et mise en
conformité pour SmartEiffel 1.1
Version 1.1.c.2. (6/05/2003)
+ corrections.
- Mime-proxy plante sur Content-Type en "Content-Type: text/plain;"
Version 1.1.c.1. (12/04/2003)
- Ajout d'un jeu de caractères "par défaut" à utiliser en l'absence
de déclaration du jeu de caractères. Paramètre "default_charset". Ce
jeu
par défaut s'applique aux entêtes comme au corps.
[default]
default_charset = iso-8859-15
- Les noms de fichier peuvent maintenant spécifier un chemin
d'accès. En l'absence de chemin d'accès, Mime-proxy recherche le
fichier
dans le répertoire de travail courant, et ensuite dans le répertoire où
il est installé.
- Tourne sous Linux, et devrait fonctionner sur d'autres
plateformes POSIX (voir compile.html pour la compilation). Je ne sais
pas si c'est utile mais bon.
+ corrections.
- L'encodage en mots encodés (RFC2047) encode maintenant les
caractères spéciaux de la RFC 822.
- Les sources mis à disposition ne compilaient pas - désolé.
Version 1.1.c.0. (22/02/2003)
- Les sockets sont maintenant asynchrones, en particulier
l'application ne bloque plus à la connexion sur un serveur et cela
permet d'envisager de faire du partage de connexion avec. Les
modifications sont intégrées à la bibliothèque Yaesockets (sur le
CVS).
- Réécriture du parser MIME, il était très lent.
- Possibilité d'encoder le corps en base 64 (très déconseillé sur
la hiérarchie fr.*). Ajout du paramétrage ( par défaut : faux [0] ).
[default]
encode_to_b64 = 0
encode_to_b64 = 1
ou à partir de l'article avec les entêtes :
X-Mp-Encode-To-B64: Yes | No
- Décodage du base 64 pour les corps des articles.
- Ajout d'un proxy POP (sur la commande RETR). Pour
configurer un proxy POP, spécifiez "pop" en dernier paramètre dans la
définition du proxy :
[proxies]
pop_free = 6010, pop.free.fr, 110, pop
!!! PAR PRUDENCE, N'EFFACER LES COURRIERS SUR LE SERVEUR QU'APRÈS ETRE
CERTAIN DE LA RÉCUPÉRATION !!! Merci de me signaler tous problèmes (je
n'en ai pas constaté en un mois d'utilisation, mais prudence...).
- Jolie icône plus en rapport.
- Vidage systématique (flush) des sorties consoles pour une
utilisation avec le lanceur (voir MPLaunch)
- Divers petites optimisations.
+ corrections.
- Mauvaise gestion de la fin des données durant un XOVER.
- Bug du parser MIME sur certains courriers multipart pas très
conformes.
- Le message d'erreur si le proxy ne peut pas s'installer sur un
port ne fonctionnait pas.
[Ces modifications ont été intégrées et testées sur les versions bêta
1.1.b.0 et 1.1.b.1.]
Version 1.0.c.2. (25/12/2002)
- Ajout d'un mode silencieux, sans aucun affichage. Par la ligne
de commande option « -silent ».
- Ajout d'un paramétrage des adresses IP autorisées à se connecter
sur un proxy. Cela permet d'y accèder à travers un réseau ; Mime-proxy
n'est pas vraiment fait pour faire du partage - en raison de son
architecture mono-tâche - mais j'avais besoin d'un proxy NNTP.
Le paramétrage des IP s'effectue en spécifiant une
valeur « ip » dans la section du proxy concerné, ou dans la section
default. La valeur par défaut est "127.0.0.1"
[default]
ip = ip_simple | ip1 - ip2 [, ip | ip1 - ip2]
où ip_simple désigne une adresse IP simple ( comme 127.0.0.1 )
et ip1 - ip2 une plage d'adresses IP comprises entre
les
adresses ip1 et ip2
exemple :
[default]
ip = 127.0.0.1
Ce qui autorise l'adresse ip locale 127.0.0.1
[default]
ip = 127.0.0.1, 192.168.0.1 - 192.168.0.15
Ce qui autorise l'adresse ip locale 127.0.0.1 et les adresses ip
comprises entre 192.168.0.1 et 192.168.0.15
- Possibilité de générer un champ Message-ID :
Le paramétrage s'effectue en spécifiant une chaîne de
format dans la valeur « message_id » ; dans la section du proxy
concerné.
Le caractère '#' suivi d'un nombre sur deux chiffres (impératif) permet
de générer un nombre aléatoire hexadécimal sur le nombre de chiffres
spécifié. Par exemple pour générer un nombre composé de 9 chiffres : #09
exemple :
[default]
message_id : Xns#13totoplam#03@127.0.0.1
Mime-proxy va construire un Message-Id: de la forme
Message-ID: <Xns0123456789ABCDtotoplam012@127.0.0.1>
Important : ne pas inclure les signes '<' et '>' dans la chaîne
de format. Veillez à ce que le nombre de chiffres aléatoires soit
conséquent, afin de garantir l'unicité du Message-ID.
A partir d'un article : entête X-Mp-Message-Id: chaine_de_format
- Possibilité de générer un champ Date:
Le paramétrage s'effectue dans la section du proxy
concerné, ou en ajoutant le paramètre date = 0 | 1 (defaut 0).
exemple :
[default]
date = 1
A partir d'un article : entête X-Mp-Date: no | yes
- Divers petites optimisations.
+ corrections :
- Le proxy smtp avalait le dernière caractère d'un article.
- Violation d'accès aléatoire ( exception OS Signal (11) ) à la
connexion sur un serveur (peut-être résolue, c'est très rare.)
- Prise en compte des réponses multi lignes pour le SMTP.
- Les paramètres d'encodage n'étaient pas transmis de partie en
partie (pour un article multi-parties).
- Contrôle de la transmission du caractère point '.' seul sur
une même ligne
- Bug sur l'interpretation des caractères % ( fichier ini et
chaînes de traduction. )
Version 1.0.c.1. (14/10/2002)
+ corrections :
- Le champ Content-Transfer-Encoding était en minuscule. C'est
valide mais c'est plus joli avec les majuscules.
- Bug sur la définition du Contant-Transfer-Encoding, en 8bit la
chaîne était 7bit :-(
- Les articles de controle (contenant l'entête Control:) ne sont
plus encodés.
Version 1.0.c.0. (13/10/2002)
- Implémentation de la commande HEAD du protocole NNTP qui
permet de ne récupérer que les entêtes d'un article.
- Passage en version définitive 'c' ; ça fonctionne assez bien
donc plus de version bêta.
- Possibilité de ne pas utiliser la console Windows, le programme
n'apparaît alors que dans le gestionnaire de tâches. Paramétrage par la
ligne de commande : -free_console.
- exemple : mproxy.exe mproxy.ini -free_console
- Paramétrage de la stratégie du ramasse miettes par la ligne du
commande :
- -low_memory : économise la mémoire (au détriment de
l'occupation CPU)
- -default_memory : mode par défaut du ramasse miettes (compromis
entre low_memory et high_memory)
- -high_memory : stratégie « gourmande »
- exemple : mproxy.exe mproxy.ini -low_memory
- En cas d'échec de la connexion sur un serveur, le proxy émet
un message d'erreur vers le client.
- Ajout d'un message d'erreur si le proxy ne peut pas s'installer
sur un port.
+ corrections :
- Un caractère Unicode > 65535 faisait planter le programme.
- Une faute s'est glissée dans « unknow », c'est « unknown »
- désolé -, ajouter le 'n' dans votre fichier de configuration.
Merci Jim !
- La commande ARTICLE sur certains message-id n'était pas
reconnue.
- Translation du champ « X-Mailer: » vers le champ « User-Agent: »
- Correction de l'affichage de certains messages.
Version 1.0.b.6. (04/08/2002)
- Lors de l'envoi d'un article, le proxy décode les mots
encodés éventuellement présents dans l'article original sans
tenir compte de l'encodage annoncé. Cela permet l'usage avec Star
Office, SO encode en windows-1252 et indique un iso-8859-1 frauduleux.
- Les messages de l'application peuvent être traduits en
ajoutant un fichier « mproxy.dat » dans le répertoire du
Mime-proxy. Voir le fichier mproxy_en.dat pour un exemple en
anglais. En l'absence de ce fichier, l'application est en
français.
- Ajout d'un paramétrage pour le caractère de remplacement
des caractères inconnus ( auparavant fixé en dur à '?'). Par
défaut : ?
ex
: [default]
unknown_character = % ( nb: sans apostrophe )
- Possibilité d'encoder le corps en quoted-printable (très
déconseillé sur la hiérarchie fr.* mais conseillé sur d'autres (ex:
de.*)
- Ajout du paramétrage ( par défaut : faux [0] ) :
ex: [default]
encode_to_qp = 0
encode_to_qp = 1
ou à partir de
l'article avec les entêtes :
X-Mp-Encode-To-Qp: Yes | No
- J'ai supprimé les entêtes de contrôle du type
X-Mp-...-Yes: A mon avis ça ne servait à rien. Reste la forme
X-Mp-.....: Yes | No. Si cela pose problème je les remettrais.
- Vérification des paramètres des entêtes de contrôle du
Mime-proxy. L'application vérifie aussi l'absence de champ qui
commence en X-Mp autre que ceux prévus afin de limiter les
fautes de frappes. En cas d'erreur, l'article est refusé.
- Ajout d'un proxy SMTP, ce qui permet d'encoder les courriers
envoyés par le lecteur de news. Basiquement, le traitement est
exactement le même que pour les articles de news. Pour
configurer un proxy SMTP, spécifiez "smtp" en dernier paramètre
dans la définition du proxy :
[proxies]
server_alias = local_port_number, remote_host,remote_port_number
[,protocol]
Où serveur_alias est un nom pour identifier le serveur,
local_port_number le numéro du port local du proxy,
remote_host l'url du serveur, remote_port_number le numéro
du
port du serveur. La paramètre optionnel protocol indique le
protocol du proxy : nntp ou smtp. En l'absence la
valeur
par défaut est nntp .
exemple :
[proxies]
news_free = 6000, news.free.fr, 119, nntp
smtp_free = 25, smtp.free.fr, 25, smtp
Configurez ensuite le lecteur pour se connecter sur le proxy smtp.
Remarque, avec Xnews, il n'est pas possible de configurer le port du
serveur SMTP. Mettre le proxy à l'écoute sur le port 25 et entrez «
localhost » comme serveur SMTP dans Xnews. Si vouz utilisez Hamster,
changez le numéro de port du serveur SMTP local d'Hamster.
+ corrections:
- Le logiciel change le Content-Type: et
Content-Transfer-Encoding: des articles entrants ( serveur vers client
), et indique le véritable encodage après transformation par
le proxy. Les champs originaux sont sauvegardés et précédés par «
X-Original- » .Cela limite le risque d'interférence avec le client.
En particulier, le décodage du quoted-printable dans le corps
interférait avec celui fait par Xnews et provoquait la suppression des
espaces en fin de ligne; d'où une non reconnaissane du séparateur de
signature.
+ divers:
- J'ai mis les docs en html, c'est plus joli et les fichiers
textes s'affichaient de manière pas pratique avec Netscape. J'ai
apporté des petites précisions.
Version 1.0.b.5. (20/07/2002)
- En réception, le proxy effectue un « unfolding » (enlève
les mises à la ligne) systématique des entêtes.
- L'encodage en mots encodés a été repris et les champs
suivants sont maintenant encodés : Subject, Comments, Organization,
From, Reply-To, Sender, To
+ corrections:
- Une pièce jointe de type texte (text/plain) était
malencontreusement transcodée (nb: je ne suis pas sûr que la
correction soit suffisante).
- Dans de très rares cas, la lecture d'un article échouée
(mauvaise gestion du buffer de réception coté serveur distant,
possibilité de blocages intempestifs)
Version 1.0.b.4. (08/05/2002)
+ corrections:
- Un article déclaré en us-ascii comprenant des caractères
> à 127 provoquait un mauvais décodage, l'article n'est
maintenant plus décodé.
- Prise en compte des « multi linear spaces » pour le
décodage des mots encodés.
- Un caractère non transcodable est converti en un '?'
Versions 1.0.b.2 et 1.0.b.3. (02 /05/2002)
- En cas d'impossibilité d'encoder l'article, l'article est
refusé avec une erreur « 440 », auparavant l'article était transmis au
serveur tel quel.
- Gestion des articles multiparties MIME (en fait toute la
gestion des articles a été réécrite)
- Décodage du quoted-printable.
- Décodage de l'utf-8.
- Encodage en utf-8
- Décodage du qp pour les articles sortants (client ->
serveur)
- Translation du X-Newsreader vers le champ User-Agent.
- Possibilité de spécifier une liste de jeux à partir d'une
entête X-Mp-Charsets: jeu1,jeu2,...
+ corrections:
- La commande ARTICLE sur un message-id n'était pas
reconnue.
- Le décodage de deux mots encodés acollés laissait un
espace indésirable entre les deux.
- Un champ charset= vide provoquait un crash du programme.
Version 1.0.b.1. (18/03/2002)
- Correction sur l'entête « X-Mp-Encoding »
- Correction du champ « Content-Transfer-Encoding »
Premier prototype en décembre 2001