Thanks for the hint. I now use the following as my first router to
convert everything to lower case before any other routers are processed.
Judging by the output of
/usr/local/exim-test/bin/exim-4.10-4 -bd -oX 26 -d+all
this seems to be the most efficient way.
# This router lower cases everything
lower_case:
driver = redirect
data = ${lc:$local_part@$domain}
Philip Hazel wrote:
> On Thu, 8 Aug 2002, Patrick Boutilier wrote:
>
>
>>I am running into a problem with case. I am using a patched version of
>>exim to deliver directly to an Cyrus lmtp socket. ( the problem also
>>occurs with an unpatched version and delivering via lmtp as
>>/usr/cyrus/bin/deliver -l) The problem is when I send to
>>User@??? exim tries to deliver to User@??? instead of
>>user@??? and LMTP correctly denies User@??? as an
>>invalid user. Is there an option to "not preserve the actual case for
>>transmission" and send the local_part as lower case?
>
>
> Ho! Ho! Excuse my laughing, but I had to go to some trouble to
> *preserve* the case for transmission, because when early versions of
> Exim did not preserve it, people complained!
>
> What you should do is use a redirection to force the case.
>
>
>>My workaround for now is to add an extra transport that gets the lower
>>case userid from the MySql database.
>
>
> Why not just force lower case directly?
>
>
>> data = ${lookup mysql {select userid from user \
>>where userid='${lc:$local_part}'}}
>
>
> Isn't that exactly the same as
>
> data = ${lc:$local_part}
>
> ? Actually no, it isn't, because it never fails. The MySQL lookup will
> fail for non-existent users. But since you do the lookup again in the
> next router, you don't really need to do it twice.
>