[Exim] Simple string expansion problem

Top Page
Delete this message
Reply to this message
Author: Greg Ward
Date:  
To: exim-users
Subject: [Exim] Simple string expansion problem
I'm trying to upgrade a server from Exim 3.35 to 4.02. Said server has
Mailman 2.0.x installed, so one of the directors in the Exim 3 config is
this:

  list_director:
     driver = smartuser
     require_files = MAILMAN_HOME/lists/${lc:$local_part}/config.db
     transport = list_transport


This was changed very slightly by convert4r4 for the Exim 4 config:

  list_director:
    driver = accept
    require_files = MAILMAN_HOME/lists/${lc:$local_part}/config.db
    retry_use_local_part
    transport = list_transport


Looks fine so far, right?

Well, let's take an address that's handled by this director just fine
with Exim 3:

  $ exim -bt python-dev@???
  python-dev@???
    deliver to python-dev in domain python.org
    director = list_director, transport = list_transport


Now try it with Exim 4:

  $ exim4 -bt python-dev@???
  python-dev@??? cannot be resolved at this time:
    failed to expand "/usr/local/mailman/lists/${lc" for require_files: "${lc" is not a known operator (or a } is missing in a variable reference)


Huh? Since when is "lc" not a known operator? Naturally, this simple
expansion seems to work just fine with "exim -be". Also, if I change
the expansion to
require_files = MAILMAN_HOME/lists/${lc:${local_part}}/config.db

then Exim 4 still barfs on it.

Note that downcasing the local part seems to be quite unnecessary; if I
change the require_files line in question to
require_files = MAILMAN_HOME/lists/$local_part/config.db

then everything works fine. However, I'm deeply confused about Exim's
complaint here. What the heck is going on? Am I blind, or is there a
bug here?

        Greg
--
Greg Ward - software developer                gward@???
MEMS Exchange                            http://www.mems-exchange.org