How to make cyrus not change non US-ASCII characters to "X"

Christian Schulte cs at schulte.it
Thu Nov 21 12:26:50 EST 2002


Alessandro Oliveira wrote:

> Maybe the best solution would be a filter to change the message body 
> encoding using quoted-printable instead of putting X everywhere, and 
> change headers to also use the appropriate encoding. What do you think 
> about this ?
>
> Christian Schulte escreveu:
>
>>> Is there any possibility to put this as an autoconf option?
>>>
>>> maybe something like: "./configure --enable-strict-headers | 
>>> --disable-strict-headers" would do the trick,
>>> or even better, a runtime configuration option !!!
>>>
>>> what are the REAL consequences of having 8bit characters in the 
>>> Subject header ?
>>>
>>>>> A> Date: Wed, 20 Nov 2002 09:30:31 -0200
>>>>> A> To: info-cyrus <info-cyrus at lists.andrew.cmu.edu>
>>>>>
>>>>> A> Hi,
>>>>>
>>>>> A> I'd like to know if there is a way to avoid this cyrus 
>>>>> behavior, my
>>>>> A> users are getting very angry with it.
>>>>>
>>>>> A> Thanks for any help,
>>>>>
>>>>> Yes, users do. And notice about strict 7-bit ASCII within headers
>>>>> does not help.
>>>>>
>>>>> Same problem using Cyrillic. I have not found anything else and
>>>>> used a simple hack. Locate the following 2 files in the source 
>>>>> tree: lmtpengine.c and message.c
>>>>>
>>>>> change them the following way ( by inserting `#if 0' and `#endif' 
>>>>> ) and re-compile the entire software.
>>>>>
>>>>> This eliminates the substitution unconditionally.
>>>>>
>>>>>
>>>>> lmtpengine.c:
>>>>>
>>>>> .....
>>>>>                /* ignore this whitespace, but we'll copy all the 
>>>>> rest in */
>>>>>                break;
>>>>>            } else {
>>>>>
>>>>> // HACK -- Violet
>>>>> #if 0
>>>>>                if (c >= 0x80) {
>>>>>                    if (reject8bit) {
>>>>>                        /* We have been configured to reject all 
>>>>> mail of this
>>>>>                           form. */
>>>>>                        r = IMAP_MESSAGE_CONTAINS8BIT;
>>>>>                        goto ph_error;
>>>>>                    } else {
>>>>>                        /* We have been configured to munge all 
>>>>> mail of this
>>>>>                           form. */
>>>>>                        c = 'X';
>>>>>                    }
>>>>>                }
>>>>> #endif
>>>>>                /* just an ordinary character */
>>>>>                body[off++] = c;
>>>>> .....
>>>>>
>>>>> and message.c:
>>>>>
>>>>> .....
>>>>>            else {
>>>>>                sawcr = 0;
>>>>>                blankline = 0;
>>>>> // HACK -- Violet
>>>>> #if 0
>>>>>                if (inheader && *p >= 0x80) {
>>>>>                    if (reject8bit) {
>>>>>                        /* We have been configured to reject all 
>>>>> mail of this
>>>>>                           form. */
>>>>>                        if (!r) r = IMAP_MESSAGE_CONTAINS8BIT;
>>>>>                    } else {
>>>>>                        /* We have been configured to munge all 
>>>>> mail of this
>>>>>                           form. */
>>>>>                        *p = 'X';
>>>>>                    }
>>>>>                }
>>>>> #endif
>>>>>            }
>>>>>        }
>>>>>
>>>>>        fwrite(buf, 1, n, to);
>>>>>    }
>>>>> .....
>>>>>
>>>> In 2.2 cvs you do this in message.c and spool.c
>>>
>>>
>> I thought that cyrus does not only replace non US-ASCII characters in 
>> the mail-header. If a mail with a specified enconding of US-ASCII 
>> gets send through LMTP all non US-ASCII characters in the mail body 
>> get replaced to "X" also! My users were not interested in this 
>> behaviour if that would only affect the header. The problem is that 
>> in e.g. germany all umlauts like ä,ü,ö etc. get replaced in the body 
>> if specified as US-ASCII. Of course the mail body specifies a wrong 
>> character encoding if sent as US-ASCII but containing umlauts but 
>> even a big free-mail-provider (www.web.de) in germany with millions 
>> of users sends his newsletter in US-ASCII but with umlauts! I got it 
>> done with these small source-changes but this will not change user 
>> from sending mail in wrong encodings :-(
>
>
That are things which can be done with sendmail before delivering to 
LMTP but I did not get it done right now! The convert-code in sendmail 
is quite buggy in 8.12.6 and cannot reliably convert encodings as well. 
Adding such features to lmtpd in cyrus would be great but I think that 
this is not a asap-topic.








More information about the Info-cyrus mailing list