Mime-proxy
Patrick Lamaizière
<patrick(dot)softs(at)lamaiziere(dot)net>
Version 2.1.c.2 (19/07/2006)
- For outgoing articles, MP can use the article's charset instead
of the parameter "client_charset".
- trust_client_charset = 0 | 1 (default 0)
- or with a header X-MP-Trust-Client: no | yes
- The "incoming_smtp_protocol" is removed.
- Add a hack for the HELO problem with Xnews and SMTP: Xnews
uses HELO even with smtp-authentification (it should use EHLO).
- smtp_helo_to_ehlo = 0 | 1 (default 0)
+fix.
- Characters LF, CR and TAB are replaced by a space when an
encoded-word is decoded.
Version 2.1.c.1 (6/2/2006)
- I will remove the "incoming_smtp" protocol, i think it is not
usefull but tell me if you need this feature. Instead use the new
option "allow_mp_control_header". If this option is set to 0,
Mime-proxy's control headers like "X-MP-Charsets:" do nothing.
- allow_mp_control_header = 0 | 1 (Default 1 )
+fix.
- By design (!), Mime-proxy does not support the smtp
extension "PIPELINING". As a work-around, MP removes the
response "PIPELINING" at the time of the EHLO request.
- Errors are printed on STD_ERR.
Version 2.1.c.0 (1/1/2006)
- Add transliteration. Transliteration can replace a
character by others, by sample the euro symbol can be replaced by
"EUR". Transliteration works for encoding and decoding. To use
transliteration, just add "//TRANSLIT" to a charset name.
- sample for encoding:
- charsets = us-acsii, iso-8859-1, iso-8859-15//TRANSLIT, utf-8
- For decoding:
- client_decoding_charset = iso-8859-15//TRANSLIT
Version 2.0.c.3 (19/11/2005)
- Add some debuging options:
- -logsockets n ( n=1: debug connections, n=2: debug text sent
and received
- -logproxy n ( n=1: debug proxies' state)
- -logencoding (n=1: debug charset encoding and decoding)
- by sample mproxy.exe mproxy.ini -logsockets 2 -logproxy 1
-logencoding 1
+fix.
- few bugs into Yaesockets (the sockets library).
- Problem with the select() into Mime-proxy.
- Problem with empty encoded-words like =?us-ascii?Q??=
Version 2.0.c.2 (07/10/2005)
+fix
- Problem with the sockets under Darwin (MAC OS X)
- Problem with the command POST and Slrn.
Version 2.0.c.1 (02/06/2005)
- Add the management of the command BODY (protocol NNTP). As
Mime-proxy needs the headers to decode the article, it uses the command
ARTICLE and return the body to simulate a command BODY. This
work-around is for NewsRover (hello Jim)
Version 2.0.c.0 (2.0.b.1 to 2.0.b.3) (22/05/2005)
- Under *nix, Mime-proxy can fork the connections. Parameter
'fork_connection' in the section [misc]
- [misc]
- fork_connection = 1 (default 0)
If fork failed, MP rejects the
connection with an error "No more ressources available ! Try later"
- Under *nix, check the number of forked child. Parameter
'max_child' in the section [misc]. If the number of child is greater
than this number, connection is rejected with "No more ressources
available ! Try later"
- [misc]
- max_child = 25 (default 50)
- Check the number of managed sockets. Parameter
'max_managed_sockets' in the section [misc]
- [misc]
- max_managed_sockets = 200 (default 128)
MP rejects the connection if the
number of managed sockets is greater than this parameter with an error
"No more ressources available ! Try later".
MP needs one socket by local server and
two sockets by connection to handle the connection between the client
and the remote server. If connections are forked, only local server
sockets are counted.
- Add a header 'X-Original-IP' filled by the address IP of the
client. Parameter 'original_ip_header'
- [default]
- original_ip_header = 0 | 1 (default 0)
if the parameter 'original_ip_reverse'
is also set , X-Original-IP is filled with the reverse dns of the
client.
[default]
original_ip_header = 1
original_ip_reverse = 1
- Add a "search and replace characters" feature for outgoing
article. Parameter replace_characters = character_to_search - character_to_put. Characters are
specified by the unicode value in hexadecimal.
- By sample to replace the character RIGHT SINGLE QUOTATION MARK
(Unicode 0x2019) by the character APOSTROPHE (Unicode 0x27) :
- [default]
- replace_characters = 0x2019 - 0x27
- You can make more than one replacement by separate them with a
coma
- replace_characters = 0x2019 - 0x27, 0x.... - 0x ....
- Replacements can also be specified with the header
'X-Mp-Replace:'
- X-Mp-Replace: 0x2019 - 0x27
+ fix:
- Some problems with the configuration file and parameters.
- The parameter socket_buffer_capacity is in the section [misc]
+ Provide C code files to compile MP without the need of SmartEiffel or
Eiffel source code under *nix. See the C-code directory in the sources
zip file.
Version 2.0.b.0. (22/04/2005)
This is still a beta version, but it seems to work fine.
+ fix :
- Some regressions with the detection of unknown characters and bad
encoding.
- Version 2.0.a.1 did not work very well under Windows (thanks
Luca).
Version 2.0.a.0. (09/03/2005)
WARNING: This is an alpha / beta test version !
- MP uses the libiconv library instead charsets maps to translate
chararcters sets. It can handle many more charsets (see
http://www.gnu.org/software/libiconv/)
- MP needs the shared library iconv.dll, download it from my web
site or compile it by yourself. Put the dll into the Mime-proxy's
directory
- Sure there are some bugs, please report them to me.
Version 1.4.c.4. (21/01/2005)
+ fix.
- MP crashs if a header is ended by a space. I introduced this bug
in 14c2, sorry.
- With MIME multipart articles, MP introduces an empty text/plain
part at the end of the article.
Version 1.4.c.3. (11/10/2004)
+ fix.
- A bug occurs with the decoding of quoted-printable if an article
is ended by "=".
- Multiple headers (by sample Face:, Received:) are displayed now.
Thanks to pkd!
Version 1.4.c.2. (27/07/2004)
- Add an option -user username.
Username to switch after the installations of the servers; to avoid
running MP as root (under Unix only).
- sample # mime-proxy mproxy.ini -user patrick
- Into headers, multiple linear white spaces are removed : by
sample "Subject: ab cd" becomes "Subject:
ab cd"
- If MP can't encode an article, it displays for each characters
sets in the "charsets list" the character (in fact the Unicode value in
hexadecimal) which
doesn't match with the charset. By sample, your charsets list is
"charsets=us-ascii, iso-8859-1" and you want to send an article that
contains an euro symbol.
Mime-proxy will reject the article with
an error "437: Mime-proxy can't encode this article!
us-ascii:0x000020AC,iso-8859-1:0x000020AC"
It means : us-ascii is not good to send the Unicode character 0x20AC
(euro), iso-8859-1 is not good too.
+ fix.
- In Xover, a header that contains a <CRLF> not followed by a
space makes MP to loop to loop to loop to loop to loop to lo^C
Version 1.4.c.1. (26/06/2004)
- Add an option -lint to display the configuration of Mime-proxy :
mproxy.exe mproxy.ini -lint
- Add a new protocol 'none', in this case the program is only a
proxy and do nothing.
- [proxies]
- proxy = 5000, news.free.fr, 119, none
+ fix.
- An outgoing article with an Unicode character > 65535 made MP
to crash.
- The parameter
"socket_buffer_capacity" is not in the section
[misc] but in the section [proxies]
- MP now says hello ! when NNTP code response is '201'.
+ Under Windows, i use the C compiler from Microsoft (lcc-win32 does
not allow commercial applications anymore and i want to make big money).
Version 1.4.c.0. (29/02/2004)
- Utf-8 is now allowed in "client_charset" and
"client_decoding_charset" parameters. It is usefull if you want to use
MP with a newsreader using utf-8.
- MP can encode incoming headers into encoded-word (RFC2047), if
your client uses utf-8, you should set this option.
- [default]
incoming_encoded_word = 1 (default 0)
- XOVER optimization : now MP decodes only the "from" and "subject"
header.
Version 1.3.c.0. (21/09/2003)
- New protocol : "incoming_smtp". You can put Mime-proxy in front
of a SMTP server. "client_charset" (etc) parameters apply for the
server (parameters' names are very bad in this case)
- [proxies]
- smtp_in = 25, localhost, 26, incoming_smtp
- In case of raw 8 bits text in the header of an outgoing article,
MP does the conversion to a specific charset. Use "header_charset" to
set this charset, if this parameter is not set, MP uses the
"client_charset" parameter as charset (so there is no conversion).
- [default]
- header_charset = iso-8859-1
In case of RFC2047 encoding
(encoded_word=1), this parameter is not used. You can set this
parameter
for an article with the "X-Mp-Header-Charset:" header. Ex :
X-Mp-Header-Charset: iso-8859-1
- Enable or disable the "X-Mime-proxy:" header with the
"enable_mime_proxy_header" parameter.
- [default]
- enable_mime_proxy_header = 0 (default value : 1)
- Enable or disable the decoding of the header in incoming article
with
the "decode_header" parameter.
- [default]
- decode_header = 0 (default value : 1)
- You can set the size of the sockets' buffer. If you have problems
when sending big articles, try to decrease the size of this buffer.
Default value is 2048 bytes. I added a new section "[misc]".
- [misc]
- socket_buffer_capacity = 1024
+ fix.
- Data can be lost when sending big article.
- When the socket connected to the server disconnects itself, the
socket connected to the client was sometimes disconnected before the
end of
pending write operations on this socket.
- Test on the value of the Content-Transfer-Encoding field was case
sensitive.
Version 1.2.c.0. (17/07/2003)
- yEnc encoding support for incoming or outgoing articles. Add two
parameters :
- enable_incoming_yEncode = 0 | 1 (default value 0 : no support)
- enable_outgoing_yEncode = 0 | 1 (default value 0 : no
support)
You can enable/disable yEnc support for
an outgoing article with the X-Mp-yEncode: no/yes field.
Note : yEnc articles are always sent in 8 bits.
- You can use a different characters set to decode incoming
articles and to encode outgoing articles. Add the
"client_decoding_charset" parameter. Incoming articles are translated
to this characters set, outgoing articles are still translated from the
"client_charset" characters set.
- client_decoding_charset = iso-8859-15
If "client_decoding_charset" is
not set, MP uses the "client_charset" parameter by default
- Add support for the "TOP" command (pop)
- Errors messages are more helpful (i hope).
+ fix.
- MP Crashes on terminal resizing (under Linux only, SmartEiffel
1.0 bug).
- Received buffer corrupt some times (but i think it is a new
problem with SmartEiffel 1.1).
Version 1.1.c.2. (6/05/2003)
+ fix.
- Mime-proxy crashes with "Content-Type: text/plain;" in an
incoming article.
Version 1.1.c.1. (12/04/2003)
- Add a "default charset" to use if no charset is specified in the
Content-type field. Parameter "default_charset". This charset is
used for the header and the body.
[default]
default_charset = iso-8859-15
- Files names can use path. If no path is used, Mime-proxy looks
for the file into the current working directory, and after into the
installation directory.
- Works under Linux. Should work with other POSIX machines (see
compile.html for more).
+ fix.
- RFC 2047 encoding takes care about specials characters (RFC 822).
- Previous public sources don't compile - sorry.