On Thu 03 Sep, Robert Zilbauer wrote:
> In case anyone else has this problem in the future, here's what fixed it
> (though I don't quite understand why).
I have saved this as a suggestion for adding to the FAQ when I next
update it.
> This continually and consistently resulted in a permission denied error as
> Exim wouldn't change EUID to the user (with or without the "user =
> ${local_part}" line in the procmail_pipe transport).
Thinking the problem was in the transport was what misled me. The
problem is that Exim wouldn't change EUID to the user *in the director*,
when trying to do the require_files check.
> procmail:
> driver = localuser
> require_files = ${local_part}:${home}/.procmailrc:+/usr/local/bin/procmail
> transport = procmail_pipe
>
> This now works flawlessly. Exim switches EUID/EGID as it's supposed to. Why?
Exim now switches EUID/EGID in the director, before calling stat() in
order to check the existence of $home/.procmailrc. It does this because
of the first item in the list, ${local_part}. If any item in a
require_files list contains no slashes, it is interpreted as a user
name, and subsequent files are checked under the uid/gid of that user.
> procmail director deferred zilbauer
> message: file existence defer in procmail director: Permission denied
...confirming that the problem was in the director, not the transport.
> And so ends a rather mysterious (and somewhat frustrating) chapter in 'My Life
> with Exim'.
Sorry about that.
--
Philip Hazel University of Cambridge Computing Service,
ph10@??? Cambridge, England. Phone: +44 1223 334714.
--
*** Exim information can be found at
http://www.exim.org/ ***