Mime-proxy

Version 2.1.c.2 du 19 Juillet 2006. Patrick Lamaizière <patrick(dot)softs(at)lamaiziere(dot)net>



A quoi ça sert ?

    Mime-proxy ajoute un support des jeux de caractères aux logiciels lecteurs de news (comme Gravity ou Xnews) ou de courriers ne gérant pas la nome MIME. Il effectue les conversions entre les jeux de caractères à la place du logiciel lecteur de manière à afficher et envoyer correctement les articles.

    C'est un logiciel « proxy », c'est à dire qu'il sert d'intermédiaire à la connexion entre le lecteur et le serveur et qu'il traite ce qui passe entre les deux. Le lecteur se connecte sur Mime-proxy et Mime-proxy à son tour se connecte sur le serveur. Quand Mime-proxy voit « passer » un article ou un courrier, il effectue toutes les conversions qui vont bien pour que l'article soit proprement encodé, ou pour qu'il s'affiche correctement sur votre lecteur.

Caractéristiques.

Comment ça marche ?

L'encodage des articles postés.

    Lorsque Mime-proxy reçoit un article de la part du lecteur, il commence par décoder les éventuels encodages quoted-printable ou base 64 de manière à obtenir un article au format "8 bits".  La configuration indique au programme quel est le jeu de caractère utilisé par le logiciel client et MP converti l'article vers le jeu de caractères Unicode qui sert de référence. Si l'article contient des indications de jeu de caractères, elles sont ignorées (sauf si l'option trust_client_charset=1).

    Ensuite commence l'encodage proprement dit. Le programme recherche le premier jeu de caractères qui convient pour émettre l'article ; les jeux disponibles pour l'encodage sont spécifiés dans la configuration. Une fois un jeu trouvé, l'application effectue la conversion de l'article (au format Unicode) vers le jeu de caractères trouvé précédemment. Toujours suivant la configuration,  un encodage en quoted-printable ou base 64 peut ensuite être appliqué. On peut également choisir d'encoder les caractères 8 bits des entêtes sous forme de mot-encodés.

    Il n'y a plus qu'a rajouter les entêtes MIME pour correspondre à l'article encodé :

Mime-Version: 1.0
Content-Type: text/plain; charset=le jeu de caractères utilisé.
Content-Transfer-Encoding: 7bit, 8bit, quoted-printable ou base64

    Mime-proxy ne tient pas compte de ces entêtes si elles sont présentes dans l'article d'origine et les remplace. Le programme modifie également le champ User-Agent à des fins publicitaires. Une fois tout ceci exécuté, l'article est envoyé sur le serveur.

    En cas d'erreur, l'article est rejeté et une erreur est renvoyée au logiciel lecteur.

Remarques :

Les encodages en quoted-printable ou en base 64 sont strictement interdit sur Usenet-Fr.
Seul le traitement de la commande POST est implémenté pour le protocole NNTP (news) et DATA pour le protocole SMTP (courrier).
Seules les parties MIME "text/plain" sont traitées par le programme.

Le décodage des articles reçus.

    Le principe est d'obtenir un article au format 8 bits (donc sans encodage en quoted-printable ou base 64) et dans le jeu de caractères utilisé par le lecteur. Mime-proxy décode donc tout d'abord ces encodages quoted-printable ou base 64 vers du 8 bits. Si le jeu de caractère spécifié dans l'article est connu, Mime-proxy converti l'article vers Unicode puis ensuite vers le jeu de caractères utilisé par le lecteur. Si l'article ne spécifie pas de jeu de caractères, un jeu par défaut peut être employé.

Remarques :

Pour le protocole NNTP (news), Mime-proxy reconnait les commandes ARTICLE, HEAD, BODY et XOVER.
Pour le protocole POP, Mime-proxy reconnait les commandes RETR et TOP.
Seules les parties MIME "text/plain" sont traitées par le programme.

Utilisation.

L'installation
.

    Le programme nécessite la bibliothèque libiconv (une dll pour windows est disponible sur mon site) et un fichier de configuration. Extraire les fichiers de l'archive dans un répertoire puis éditer le fichier de configuration (voir configuration). Sous windows extraire libiconv dans le répertoire de mime-proxy.

    David Epelbaum, que je remercie vivement, a écrit un guide sur l'installation que vous trouverez ici : http://mproxy.gattaca.org

La désinstallation.


    Comme l'installation mais en sens inverse. Supprimez simplement les fichiers.

L'exécution.

    Mime-proxy est une application console, c'est à dire qu'il n'utilise pas de système de fenêtre, c'est une application en mode "texte".
    Le lancement s'effectue à partir de la ligne de commande avec :  

mproxy.exe fichier_de_configuration [Options]

où : 

 fichier_de_configuration : fichier de configuration de l'application (voir configuration).
Options
-free_console  :  N'utilise pas la console Windows, dans ce mode le programme n'est pas visible sauf dans le gestionnaire de tâches de Windows.

-silent  :  Aucun affichage.

-low_memory : Statégie du ramasse-miettes : économise la mémoire (au détriment de l'occupation CPU)

- default_memory : Statégie du ramasse-miettes : mode par défaut ; compromis entre low_memory et high_memory.

- high_memory : Stratégie du ramasse-miettes « gourmande »

-lint : Affiche la configuration reconnue par le proxy et se termine.

-user username : Nom d'utilisateur à utiliser pour l'exécution du programme, après installation des serveurs MP bascule sous cet utilisateur (sous Unix seulement).
 exemple :
Sous Windows, le plus simple est de créer un racourcis vers le programme. Il suffit ensuite de cliquer sur le raccourcis pour le lancer.
J'ai écris un petit utilitaire « MPLaunch » qui permet de lancer Mime-proxy dans une fenêtre ; il n'est pas indispensable et ne fonctionne que sous Windows. L'option -user ne fait strictement rien sous Windows.

Sous Posix, le principe est le même, mais les options -free_console et -silent ne fonctionnent pas. Le programme s'appelle mime-proxy (c'est plus joli que mproxy.exe)

Remarque : le nom du fichier de configuration peut contenir un chemin d'accès. En l'absence, Mime-proxy recherche le fichier dans le répertoire de travail courant, puis dans le répertoire de l'application.

La configuration.

    La configuration s'effectue par l'intermédiaire d'un fichier texte dont la syntaxe est proche d'un fichier .ini de Windows.
Editez le fichier mproxy.ini et adaptez le à votre configuration. En pratique spécifiez juste les paramètres des serveurs dans la section [proxies]. Les autres paramètres sont adaptés pour un usage avec un lecteur utilisant le jeu windows-1252 et pour un usage sur la hiérarchie de news fr.*

Vous pouvez vérifier la prise en compte des paramètres avec l'option -lint : mproxy.exe mproxy.ini -lint. Le programme affiche sa configuration et se termine.

Configuration des connexions "proxies".

Un proxy est un intermédiaire entre des clients et un serveur. Chaque proxy à l'écoute sur un port se connecte sur un seul serveur. La section [proxies] spécifie les paramètres des connexions.

[proxies]
server_alias = local_port_number, remote_host, remote_port_number [, protocol]

Où :
    serveur_alias
est un nom pour identifier le proxy dans le fichier de configuration, il est ainsi possible d'utiliser une configuration différente pour chaque proxy.
    local_port_number est le numéro du port local du proxy, c'est à dire le  numéro du port sur lequel il écoute.
    remote_host l'adresse du serveur.
    remote_port_number le numéro de port du serveur.
    protocol indique le protocole du proxy : nntp (news), pop (courrier entrant), smtp (courrier sortant), ou none (aucun). Ce paramètre est optionnel, en l'absence la valeur par défaut est nntp.

Note:
    Dans le cas du protocole "none", le programme fait office de simple proxy et ne fait aucun autre traitement.
 
Exemple :

[proxies]
; server_alias = local_port_number, remote_host, remote_port_number [,protocol]
hamster = 6000, localhost, 119
free = 6001, news.free.fr, 119
wanadoo = 6002, news.wanadoo.fr, 119, nntp
smtp_wanadoo = 25, smtp.wanadoo.fr, 25, smtp
pop_wanadoo = 6003, pop.wanadoo.fr, 110, pop
Ici, le proxy à l'écoute sur le port 6000 se connecte sur votre machine (localhost), par exemple sur un serveur local comme Hamster. Celui sur le port 6001 se connecte sur le serveur de Free (news.free.fr), le 6002 sur le serveur de news de Wanadoo (news.wanadoo.fr). Le proxy smtp_wanadoo se connecte sur le serveur de courrier sortant de Wanadoo (smtp.wanadoo.fr). Enfin le dernier proxy pop_wanadoo se connecte sur le serveur de courrier entrant de Wanadoo (pop.wanadoo.fr).

Numéros de port par défaut : Les numéros de port sont standardisés pour chaque protocole, en générale les serveurs distants écoutent sur ces ports en fonction du protocole :

Configuration de l'encodage et du décodage.

    Il est possible de spécifier une configuration différente au niveau des encodages pour chaque proxy. En l'absence de configuration, les paramètres de la section [default] sont utilisés. Pour associer une configuration à un proxy, il suffit de créer une section [server_alias] où server_alias est le nom donné au proxy dans la section [proxies].

Exemple :

[proxies]
smtp_free = 6000, smtp.free.fr, 25, smtp
news_free = 6001, news.free.fr, 119, nntp

[default]
encoded_word = 0
encode_to_qp = 0  
charsets = us-ascii, iso-8859-1, iso-8859-15, utf-8

[smtp_free]
encoded_word = 1
encode_to_qp = 1  

[news_free]
encoded_word = 0

    Ainsi, on indique au proxy d'utiliser les mots encodés (paramètre encoded_word = 1) sur le serveur de courrier de Free (alias new_free) et pas sur le serveur de news (alias smtp_free). L'indication pour le serveur de news de Free est inutile puisque la section [default] défini déjà ce paramètre à 0 (faux) par défaut. Egalement, pour le courrier sur "smpt_free" on encode en quoted-printable (paramètre encode_to_qp = 1)

Jeux de caractères.

    Mime-proxy supporte un grand nombre de jeux de caractères, la liste complète dépend de votre système et de la bibliothèque libiconv (voir http://www.gnu.org/software/libiconv ). La translitération est également supportée en ajoutant "//TRANSLIT" à un jeu de caractères. La translitération permet de remplacer un caractère par un équivalent. Par exemple le caractère euro peut être converti en "EUR" dans le jeu iso-8859-1//TRANSLIT.


Paramètres d'encodage et de décodage:

charsets : la liste des jeux de caractères à utiliser pour l'encodage des articles. Pour encoder l'article, Mime-proxy essai le premier jeu, le second, etc. Ceci jusqu'à trouver un jeu qui implémente tous les caractères de l'article.
charsets = us-ascii, iso-8859-1, iso-8859-15, utf-8
client_charset : le jeu de caractères utilisé à l'envoi par les clients (en général un lecteur de news ou de courrier). Mime-proxy encode de ce jeu de caractères vers un des jeux spécifiés dans la liste charsets.
client_charset = windows-1252

client_decoding_charset : le jeu de caractères utilisé à la lecture par les clients (en général un lecteur de news ou de courrier). Mime-proxy décode les articles vers ce jeu de caractères. Si ce paramètre n'est pas spécifié, le paramètre client_charset est utilisé à la place.

client_decoding_charset = windows-1252

date : Génération du champ Date: 

date = 0 | 1 (valeur par défaut 0)
decode_header : interdit | autorise le décodage des entêtes des articles (si decoding = 1).
decode_header = 0 | 1 (valeur par défaut 1)

decoding : interdit | autorise le décodage des articles.

decoding = 0 | 1    (valeur par défaut : 1)

default_charset : Jeu de caractères par défaut. Si un article ne contient pas de déclaration d'encodage, Mime-proxy utilise ce jeu de caractères. Ce paramètre s'applique aux entêtes, y compris lors du XOVER, et au corps de l'article.

default_charset = iso-8859-15 (valeur par défaut : aucune )
enable_incoming_yEncode : Désactive | Active le support de l'encodage yEncode pour les articles entrants (serveur vers client).

enable_incoming_yEncode = 0 | 1 ( valeur par défaut : 0 )

enable_mime_proxy_header : Désactive | Active l'entête X-Mime-proxy.

enable_mime_proxy_header = 0 | 1 (valeur par défaut : 1)

enable_outgoing_yEncode: Désactive | Active le support de l'encodage yEncode pour les articles sortants (client vers serveur).

enable_outgoing_yEncode = 0 | 1 ( valeur par défaut : 0 )

encoded_word : interdit | autorise l'usage des mots encodés lors de l'encodage (seulement si encoding = 1).

encoded_word = 0 | 1     (valeur par défaut : 0)
encoding : interdit | autorise l'encodage des articles.
encoding = 0 | 1    (valeur par défaut : 1)
encode_to_b64 : interdit | autorise l'encodage en base 64 du corps de l'article (interdit sur Usenet-Fr, utilisation pour d'autres hiérarchies) (seulement si encoding = 1).
encode_to_b64 = 0 | 1      (valeur par défaut : 0 )
encode_to_qp : interdit | autorise l'encodage en quoted-printable du corps de l'article (interdit sur Usenet-Fr, utilisation pour d'autres hiérarchies ou pour le courrier) (seulement si encoding = 1).
encode_to_qp = 0 | 1      (valeur par défaut : 0 )
header_charset : jeu de caractères à utiliser pour l'encodage des entêtes des articles si elles sont en "8bits brut". Si ce paramètre n'est pas spécifié, le paramètre client_charset est utilisé à la place. Ce paramètre n'est actif que si l'encodage en mot encodé est désactivé (encoded_word=0)
header_charset = iso-8859-15 (valeur par défaut : aucune)
incoming_encoded_word : encodage en mot encodé (RFC2047) des entêtes entrants.
   
    incoming_encoded_word = 0 | 1 (valeur par défaut : 0)
ip : adresse(s) ip autorisée(s) à se connecter sur le proxy. Par défaut, seule l'IP locale 127.0.0.1 est autorisée.
ip = ip_simple | ip1 - ip2 [, ip | ip1 - ip2]
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.

exemples :
[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
message_id : Génération du champ Message-ID. 
Le paramétrage s'effectue en spécifiant une chaîne de format : le caractère '#' suivi d'un nombre sur deux chiffres (impératifs) 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@localhost

Mime-proxy va construire un Message-Id: de la forme
Message-ID: <Xns0123456789ABCDtotoplam012@localhost>
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.

original_ip_header : ajoute une entête X-Original-IP indiquant l'adresse IP du client.
original_ip_header = 0 | 1 (valeur par défaut 0)

original_ip_reverse : Si "original_ip_header" est également spécifié, l'adresse IP du client est indiquée sous la forme de son reverse dns.
original_ip_reverse = 0 | 1 (valeur par défaut 0)

replace_characters : Spécifier des remplacements de caractères à effectuer à 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) :
[default]
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 )

smtp_helo_to_ehlo : En SMPT, Mime-proxy remplace la requête HELO du client par EHLO. Ceci est une bidouille pour Xnews qui utilise HELO au lieu de EHLO.
smtp_helo_to_ehlo = 0 | 1  (valeur par défaut : 0)

trust_client_charset : Si cette option est présente, Mime-proxy utilise les indications de jeux de caractères présents dans les articles sortants au lieu du jeu spécifié dans le paramètre client_charset.
trust_client_charset = 0 | 1 (valeur par défaut : 0)

unknown_character
: caractère de remplacement à utiliser en présence d'un caractère inconnu.
unknown_character = %    (un et un seul caractère, valeur par défaut : ?)
user_agent : Mime-proxy ne s'ajoute pas | s'ajoute au champ User-Agent.
user_agent = 0 | 1    (valeur par défaut : 1)
xover_decoding : interdit | autorise le décodage du XOVER.
xover_decoding = 0 | 1    (valeur par défaut : 1)

Entêtes de contrôles.

    Les paramètres d'encodage peuvent être forcés pour un article à partir de ses entêtes en ajoutant les champs suivants :

Spécifier une liste de jeux de caractères à utiliser pour l'encodage de l'article
    X-Mp-Charsets:  jeu1,jeu2,...

Ne pas générer | générer un champ Date :
    X-Mp-Date: no | yes

Ne pas utiliser | utiliser les mots encodés.
    X-Mp-Encoded-Word: no | yes

Ne pas encoder | encoder le corps de l'article en quoted-printable.
    X-Mp-Encode-To-Qp: no | yes

Ne pas encoder | encoder le corps de l'article en base 64.
    X-Mp-Encode-To-B64: no | yes

Interdire | autoriser l'encodage de l'article :
    X-Mp-Encoding: no | yes

Spécifier un jeu de caractères pour les entêtes (si entêtes en 8 bits brut):
    X-Mp-Header-Charset: jeu
Spécifier un format de message-id :
    X-Mp-Message-Id: chaine_de_format

Interdire | autoriser l'ajout du champ User-Agent
    X-Mp-User-Agent: no | yes

Désactiver | activer le support de l'encodage yEncode.
    X-Mp-yEncode: no | yes

Utiliser les jeux de caractères indiqués dans l'article.
   X-Mp-Trust-Client: no | yes

Ces champs sont supprimés avant envoi de l'article sur le serveur. Mime-proxy contrôle qu'un champ d'entêtes commençant par "X-Mp" correspond à un des entêtes ci-dessus. Si le champ ne correspond pas ou en cas de paramètre invalide, l'article est rejeté.

Les entêtes de contrôles peuvent-être désactivés avec l'option :
    allow_mp_control_header = 0 | 1 (par défaut : 1 )

Configuration diverse.

    La section [misc] est utilisée pour les paramètres généraux de Mime-proxy.

socket_buffer_capacity : taille en octets du buffer de communication 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.
        [misc]
        socket_buffer_capacity = 1024

fork_connection
: sous *nix, forker un processus enfant par connexion
.

[misc]
fork_connection = 0 | 1 (défaut 0)

max_child : si fork_connection, nombre maximal de processus enfants. Si le nombre de processus enfants dépasse cette valeur, les connexions sont rejetées avec une erreur "No more ressources available. Try later!".

[misc]
max_child = 25 (défaut 50)

max_managed_sockets : nombre de sockets maximal à gérer.
[misc]
max_managed_sockets = 200 (par défaut 128)

Si le nombre maximal de sockets est dépassé, les connexions sont rejetées avec une erreur "No more ressources available. Try later!".

Mime-proxy 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.

Langue.

    Il est possible de traduire les messages de l'application en fournissant un fichier mproxy.dat dans le répertoire du Mime-proxy. Voir le fichier mproxy_en.dat pour un exemple en anglais. Renommer simplement ce fichier en mproxy.dat pour utiliser ces messages.

Paramétrage des lecteurs de news ou de courrier.

    Il suffit simplement de configurer le lecteur pour se connecter sur le proxy correspondant au serveur d'origine désiré. Spécifiez l'identifiant de connexion "login" et le mot de passe comme si vous vous connectiez directement sur le serveur.

adresse du serveur : localhost (si Mime-proxy tourne sur votre machine en local).
numéro de port du serveur : numéro de port local correspondant au serveur spécifié dans la section [proxies] du fichier de configuration. Procédez de même pour l'adresse et le numéro du port du serveur de courrier sortant (SMTP).

Ça ne marche pas  !

    Ben ça devrait, chez moi ça marche (c)

En premier lieu, vérifiez que le programme se lance correctement. Vous devez avoir un affichage de la forme :

«
Mime-proxy version: 2.0.c.0

Installation sur le port : 5000, localhost, 119, nntp
Installation sur le port : 5001, news.free.fr, 119, nntp
Installation sur le port : 25, smtp.wanadoo.fr, 25, smtp
»

Si le programme rend la main, vérifiez la configuration du programme et s'il n'y a pas un conflit de socket sur un port.

Vérifiez les paramètres du lecteur, si vous utilisez un fire-wall vérifiez que ce n'est pas lui qui bloque la connexion. Vérifez en direct que le serveur fonctionne au cas où.

   Messages d'erreurs à la configuration.

"Erreur parametre incorrect :". Un paramètre de configuration est incorrect, un descriptif de l'erreur est également affiché.


"Erreur jeu de caracteres inconnu :"
. La configuration utilise un jeu de caractères inconnu, c'est à dire non gérés par la bibliothèque libiconv.

"Erreur : Format d'adresse IP incorrect : ". Une adresse ou une plage d'adresse IP spécifiée en configuration dans le paramètre "ip" est invalide.

"Erreur : Echec de l'installation sur le port : ". Le programme n'a pas pu installer un proxy sur le port. Le port est peut-être déjà occupé.

 
    Messages d'erreurs à la connexion.

    Mime-proxy rapporte les erreurs au logiciel client au travers de la connexion. Suivant le protocole utilisé, le message peut être précédé d'un numéro d'erreur. Les messages d'erreurs provenant des serveurs sont bien sûr toujours reportés, pour cette raison les messages venant de MP sont toujours précédés de "Mime-proxy :".

"Mime-proxy : Access denied". Mime-proxy vous refuse l'accès, vérifiez le paramètrage des adresses IP autorisées à se connecter sur Mime-proxy.

"Mime-proxy : Impossible de se connecter sur :". Le serveur distant indiqué ne répond pas.

"Mime-proxy : Ne peut pas encoder cet article !". Mime-proxy ne peut pas encoder cet article car aucun jeu de caractères ne convient pour l'encodage. Vérifiez qu'il n'y a pas d'incompatibilité entre des caractères (par exemple vous voulez envoyer un euro et un symbole monétaire neutre en iso-8859-1 ou iso-8859-15) ou un caractère qui n'est pas dans un jeu ISO (en particulier les caractères TM et l'apostrophe "windows". L'apostrophe windows peut être très difficile à distinguer d'une apostrophe normale).

"Mime-proxy : Erreur parametre incorrect !". Mime-proxy ne peut pas encoder cet article car un paramètre spécifié par l'intermédiaire des entêtes de l'article est incorrect.

"Mime-proxy : No more ressources available. Try later!". Mime-proxy ne dispose pas des ressources pour assurer la connexion. Attendre qu'il soit moins occupé et refaire l'essai.


 Y'a un bug !

C'est possible, envoyez moi un mail. Si c'est sur un article particulier, joignez une copie complète de l'article (avec les entêtes).
Essayez également avec et sans Mime-proxy pour voir si le problème vient bien du proxy.

Remerciements.

Le camarade David.
David Epelbaum qui a eu le courage de faire un guide de configuration.
Piotrek, un guide en polonais.
Luca, un guide en italien.

Merci aux testeurs !

Mime-proxy utilise les bibliothèques et outils suivants :

Compilateur SmartEiffel <http://SmartEiffel.loria.fr>

Bibliothèques (libres) :
EPOSIX <http://berend.gameren.nl/eposix/ >
UCSTRING <http://sourceforge.net/projects/ucstring/ >
(Mime-proxy n'utilise plus ces bibliothèques, mais merci quand même)
GOBO <http://elj.sourceforge.net/projects/other/gobo/ >
"NET" de Nenie.org < http://sourceforge.net/projects/nenie/ >
YAESOCKETS < http://sourceforge.net/projects/yaesockets/ >

Licence (fichier forum.txt).

Mime-proxy utilise la bibliothèque GNU Libiconv http://www.gnu.org/software/libiconv/, en licence LGPL (voir le fichier COPYING.LIB)

-----------------------------------------------------------------------------------------------
Mime-proxy.

Copyright (c) 2002-2006 Patrick Lamaizière <patrick(dot)softs(at)lamaiziere(dot)net>
-----------------------------------------------------------------------------------------------

Eiffel Forum Freeware License, version 1

Permission is hereby granted, without written agreement and without
license or royalty fees, to use, copy, modify and/or distribute this
package, provided that:

  - copyright notices are retained unchanged

  - any distribution of this package, whether modified or not,
    includes this file

Permission is hereby also granted, without written agreement and
without license or royalty fees, to distribute binary programs which
depend on this package, provided that:

  - if the binary program depends on a modified version of this
    package, you must publicly release the modified version of this
    package - for example by submitting it to the Eiffel Forum archive
    (http://www.eiffel-forum.org/archive/ )

THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT WARRANTY. ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE TO ANY PARTY FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THIS PACKAGE.