Hi everyone

Upon further inspection, I think that the bitwise operations are correct..
(not 100% sure, but looks alright to me)

And also, the code already goes wrong before checking the
DICT_FLAG_FOLD_MUL flag...

Because the source code says:

    if (msg_verbose)
msg_info("%s: key %s", myname, key);

    /*
     * Optionally fold the key.
     */
    if (dict->flags & DICT_FLAG_FOLD_MUL) {

And the printed message with msg_info already contains the wrong
(lowercase) key there:

Dec 27 22:53:09 synio postfix/cleanup[31933]: mail_addr_map: i...@domain.com
-> 0: *SRS0*=xxxx=yy=domain.com=i...@otherdomain.com
Dec 27 22:53:09 synio postfix/cleanup[31933]: dict_tcp_lookup: key *srs0*
=xxxx=yy=domain.com=i...@otherdomain.com

So perhaps the UTF8 module changed the case to lowercase before handing it
off to dict_tcp_lookup or something..?
I really don't know...

Kind regards
Wesley S.

Op do 27 dec. 2018 om 23:48 schreef Wesley van Synio <wes...@syn.io>:

> Hi Wietse and others
>
> I was looking through src/util/dict/utf8.c and I saw the following piece
> of code:
>
>     /*
>      * Proxy the request with casefolding turned off.
>      */
>     *saved_flags = (dict->flags & DICT_FLAG_FOLD_ANY);*
>     *dict->flags &= ~DICT_FLAG_FOLD_ANY;*
>     backup = dict->utf8_backup;
>     value = backup->lookup(dict, fold_res);
>     *dict->flags |= saved_flags;*
>
> Perhaps something is going wrong there?
> I need to brush up on bitwise operations before I can say for sure..
> but it does look like it might be the possible culprit?
>
> Kind regards
> Wesley
>
> Op do 27 dec. 2018 om 23:39 schreef Wesley van Synio <wes...@syn.io>:
>
>> Hi Wietse and others
>>
>> *I found the root cause of the problem..*
>>
>> I grepped through the dict and found out that utf8 module is changing the
>> dict settings,
>> so I wondered if anything would change if I would comment out
>> smtputf8_enable = yes
>>
>> And a new test has revealed that the problem is fixed without this
>> configuration! See below:
>>
>> # postmap -v -q "SRS0=xxxx=YY=domain.com=i...@otherdomain.com"
>> tcp:localhost:10001
>> postmap: name_mask: ipv4
>> postmap: inet_addr_local: configured 5 IPv4 addresses
>> postmap: dict_open: tcp:localhost:10001
>> postmap: dict_tcp_lookup: key *SRS0=xxxx=YY=domain.com
>> <http://domain.com>=i...@otherdomain.com <i...@otherdomain.com>*
>> postmap: trying... [127.0.0.1]
>> postmap: dict_tcp_lookup: send: get SRS0=xxxx=YY=domain.com=
>> i...@otherdomain.com
>> postmap: dict_tcp_lookup: recv: 200 SRS1=Ftpn=otherdomain.com==xxxx=YY=
>> domain.com=i...@synio.be
>> postmap: dict_tcp_lookup: found: SRS1=Ftpn=otherdomain.com==xxxx=YY=
>> domain.com=i...@synio.be
>> SRS1=Ftpn=otherdomain.com==xxxx=YY=domain.com=i...@synio.be
>>
>> But... I do want full UTF8 support..
>>
>> *So what is going wrong with the combination of UTF8 + dict_tcp_lookup?*
>> Any ideas how to fix this in my configuration? Or is this a bug?
>>
>> Kind regards
>> Wesley S.
>>
>> Op do 27 dec. 2018 om 23:28 schreef Wietse Venema <wie...@porcupine.org>:
>>
>>> Wesley van Synio:
>>> > Is this DICT_FLAG_FOLD_MUL something that I should configure in another
>>> > way..?
>>>
>>> This is the flag that according to my searches is not set anywhere
>>> in Postfix. That's why I was asking for verbose logs as a last resort.
>>>
>>>         Wietse
>>>
>>
>>
>> --
>> *Synio*
>> *Ilgatlaan 9*
>> *3500 Hasselt*
>> *0477 71 79 25*
>>
>
>
> --
> *Synio*
> *Ilgatlaan 9*
> *3500 Hasselt*
> *0477 71 79 25*
>


-- 
*Synio*
*Ilgatlaan 9*
*3500 Hasselt*
*0477 71 79 25*

Reply via email to