[Exim] Case problem

Top Page
Delete this message
Reply to this message
Author: Patrick Boutilier
Date:  
To: exim-users
Subject: [Exim] Case problem
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?




caseful_local_part              Type: boolean                  Default:
false


     By default, routers handle the local parts of addresses in a case-
     insensitive manner, though the actual case is preserved for
transmission
     with the message. If you want the case of letters to be significant
in a
     router, you must set this option true. For individual router
options that
     contain address or local part lists (for example, "local_parts"), case-
     sensitive matching can be turned on by '+caseful' as a list item. See
     section 10.13 for more details.









My workaround for now is to add an extra transport that gets the lower
case userid from the MySql database.



mysql_cyrus_users:
driver = redirect
allow_defer
allow_fail
data = ${lookup mysql {select userid from user \
where userid='${lc:$local_part}'}}
retry_use_local_part
user = exim

local_user_cyrus:
   driver = accept
   condition = ${if eq {}{${lookup mysql {select userid from user where \
userid='${lc:$local_part}'}}}{no}{yes}}
     retry_use_local_part
#  transport = local_delivery_cyruspipe
#  transport = local_delivery_cyruslmtp
   transport = local_delivery_cyruslmtpsocket