Hi Andrew, hi Jeremy,

localuser_maildir:
  driver = accept
  check_local_user
  debug_print = DEBUG-HOME:$home:
  condition = ${if exists{$home/.imapmail/cur}}
  transport = local_delivery_maildir
...
Does anyone have an idea why the condition fails and what need to
be done to get it running?
Presumably you know there is actually a file or directory by that name?

Assuming yes: next step is a repeat of your debug run but with +expand
added, so we see the "if exists" being expanded.  Maybe the default
actions for the missing yes/no result cases is not working right.

yes, the directory defintely exists, but I think your hints are
already leading me into the right direction. It seems that the
problem is defintely been caused by insufficient access rights.

1. The access rights of the users home and all sub directories
   are 0700, owned by the user, by default. The exim user, under
   which the daemon is running, therefore cannot access the
   directory.

   # ls -ld /home/tom /home/tom/.imapmail /home/tom/.imapmail/cur
   drwx------ 13 tom users 12288 Oct 10 01:47 /home/tom
   drwx------ 12 tom users  4096 Oct 10 01:47 /home/tom/.imapmail
   drwx------  2 tom users  4096 Sep 23 19:18 /home/tom/.imapmail/cur

   For testing purposes I changed the access right to 0701 and the
   condition doesn't run into an error anymore.

2. Nevertheless I questioned myself why the same check is working
   as expected on another server but not on this one. I found out,
   that if I send an email from a local user to another local user
   WITHOUT sender authentication the condition check fails:

   20475 --------> localuser_maildir router <--------
   20475 local_part=tom domain=my-domain.dom
   20475 checking for local user
   20475 seeking password data for user "tom": cache not available
   20475 getpwnam() succeeded uid=2001 gid=100
   20475 checking "condition" "${if exists{$home/.imapmail/cur}}"...
   20475  ╭considering: ${if exists{$home/.imapmail/cur}}
   20475   ╭considering: $home/.imapmail/cur}}
   20475   ├──expanding: $home/.imapmail/cur
   20475   ╰─────result: /home/dumbo/.imapmail/cur
   20475  ├──condition: exists{$home/.imapmail/cur}
   20475  ├─────result: false
   20475  ├──expanding: ${if exists{$home/.imapmail/cur}}
   20475  ╰─────result:
   20475 localuser_maildir router skipped: condition failure  # <<<!!!
   20475 --------> unknown_user router <--------

3. If I send an email from a local user to another local user
   WITH sender authentication the condition check succeeds:

   17647 --------> localuser_maildir router <--------
   17647 local_part=tom domain=my-domain.dom
   17647 checking for local user
   17647 seeking password data for user "tom": cache not available
   17647 getpwnam() succeeded uid=2001 gid=100
   17647 checking "condition" "${if exists{$home/.imapmail/cur}}"...
   17647  ╭considering: ${if exists{$home/.imapmail/cur}}
   17647   ╭considering: $home/.imapmail/cur}}
   17647   ├──expanding: $home/.imapmail/cur
   17647   ╰─────result: /home/dumbo/.imapmail/cur
   17647  ├──condition: exists{$home/.imapmail/cur}
   17647  ├─────result: true
   17647  ├──expanding: ${if exists{$home/.imapmail/cur}}
   17647  ╰─────result: true
   17647 calling localuser_maildir router                     # <<<!!!
   17647 localuser_maildir router called for [email protected]
   17647 ...

My conclusion is, that although the check_local_user function is called
and the local user is found (getpwnam() succeeded uid=2001 gid=100) and the $home variable is set correctly, the access priviliges are not
changed for the following exists command which results in a condition
failure.

I've also tried to replaced the "condition" by a "require_files" statement, but this doesn't work either. So it seems that there is no way to use this condition check in combination with an unauthenticated delivery, except I would alter the directory access
rights.

Regards
Juergen
--

--
## List details at https://lists.exim.org/mailman/listinfo/exim-users
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/

Reply via email to