https://bugs.exim.org/show_bug.cgi?id=3139
Bug ID: 3139
Summary: Exim’s modern MySQL lookup syntax (servers=) doesn't
support dynamic expansions (e.g., ${perl{}}) in server
definitions, forcing users to use deprecated syntax.
Product: Exim
Version: 4.98
Hardware: x86-64
OS: Linux
Status: NEW
Severity: bug
Priority: medium
Component: Lookups
Assignee: [email protected]
Reporter: [email protected]
CC: [email protected]
Exim’s recommended modern syntax for MySQL lookups specifies servers using:
${lookup mysql,servers=SERVER_SPEC {QUERY}}
However, this syntax fails when dynamically expanded macros (e.g.,
${perl{...}}) are used within the server definition, such as dynamically
generated usernames or passwords:
Example of failing configuration:
MYSQL_USER = ${perl{get_mysql_user}}
MYSQL_PASS = ${perl{get_mysql_pass}}
MYSQL_SERVER = localhost(/run/mysqld/mysql.sock)/mail/MYSQL_USER/MYSQL_PASS
domainlist local_domains = ${lookup mysql,servers=MYSQL_SERVER { ... }}
Error received:
failed to expand "${lookup
mysql,servers=localhost(/run/mysqld/mysql.sock)/mail/${perl{get_mysql_user}}/${perl{get_mysql_pass}}
{ ... }}" while checking a list: lookup of "perl{get_mysql_user" gave DEFER:
The older, deprecated syntax:
${lookup mysql{servers=...; SELECT ...}}
successfully handles these dynamic expansions but logs deprecation warnings,
indicating this method will eventually be removed.
- Expected Behavior:
Exim’s new lookup syntax should support dynamic macro expansions within the
servers= definition.
- Actual Behavior:
Exim attempts incorrect double expansions or misinterprets expanded values as
hostnames, resulting in parsing errors and DEFER failures.
- Impact:
Users relying on dynamic server credentials (e.g., retrieved from external
scripts or secure storage via ${perl{...}}) must use deprecated syntax, facing
log warnings and future incompatibility risks.
- Suggested Resolution:
Adjust the newer syntax (servers=) to allow full dynamic expansions or clearly
document this limitation and suggest alternatives.
- Affected Version: 4.98.1
--
You are receiving this mail because:
You are on the CC list for the bug.
--
## subscription configuration (requires account):
## https://lists.exim.org/mailman3/postorius/lists/exim-dev.lists.exim.org/
## unsubscribe (doesn't require an account):
## [email protected]
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/