[Exim] backslash in .forward files

Top Page
Delete this message
Reply to this message
Author: Phil Chambers
Date:  
To: exim-users
Subject: [Exim] backslash in .forward files
I have encountered a problem which may be a bug with the forwardfile driver. The
use of "\" before a username in a .forward file is specified with sendmail as
suppressing subsequent re-use of the .forward file to prevent looping. Although I
see it used in an example under "check_ancestor" in section 22.6, I can't find any
reference to its effect in exim. It appears to force "qualify_preserve_domain",
is this intended? Am I misunderstanding things?

I have the director:

userforward:
driver = forwardfile
domain = user
file_transport = address_file
pipe_transport = address_pipe
reply_transport = address_reply
[no_]qualify_preserve_domain (experimented with both)
no_verify
no_expn
check_ancestor

I have tried the combinations of "Username" or "\Username" in the .forward file
with "no_qualify_preserve_domain" and "qualify_preserve_domain" in the director
and found that the "\" results in the "qualify_preserve_domain" behaviour even
when "no_qualify_preserve_domain" is set. I enclose the relevant output from
"exim -d9 -bt" for the various combinations below: (the username is "DCannon",
qualify_recipient is "exeter.ac.uk" and the director is only used for the domain
"user".)

.forward = DCannon and no_qualify_preserve_domain give:
...
user in "user"? yes (matched user)
calling userforward director
userforward director: file = .forward
successful stat of /usr/people/DCannon
8 bytes read from /usr/people/DCannon/.forward
file is not a filter file
parse_extract_addresses: DCannon

extract item: DCannon
DCannon@??? in *@^([^.]*)$? no (end of list)
...

.forward = DCannon and qualify_preserve_domain give:
...
user in "user"? yes (matched user)
calling userforward director
userforward director: file = .forward
successful stat of /usr/people/DCannon
8 bytes read from /usr/people/DCannon/.forward
file is not a filter file
parse_extract_addresses: DCannon

extract item: DCannon
DCannon@user in *@^([^.]*)$? yes (*@^([^.]*)$)
...

.forward = \DCannon with no_qualify_preserve_domain or qualify_preserve_domain
both give:
...
user in "user"? yes (matched user)
calling userforward director
userforward director: file = .forward
successful stat of /usr/people/DCannon
9 bytes read from /usr/people/DCannon/.forward
file is not a filter file
parse_extract_addresses: \DCannon

extract item: \DCannon
DCannon@user in *@^([^.]*)$? yes (*@^([^.]*)$)
...

Phil.
---------------------------------------
Phil Chambers (postmaster@???)
University of Exeter