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