on 4/6/05 6:04 AM, Kyle Wheeler <[EMAIL PROTECTED]> wrote:

> On Wednesday, April  6 at 02:50 AM, quoth danielcm:
>> 
>> I don't think it needs to be that complicated, all I have is:
>> | preline yourfilter | /usr/local/bin/maildir.sh  ./Maildir/
>> 
>> My maildir.sh file is:
>> exec /usr/bin/safecat "$1"/tmp "$1"/new
>> 
>> works for me since the .qmail file is in the users home directory.
> 
> Really? When I check out the environment from one of those .qmail files
> (e.g. by creating a qmail file containing:
> 
> | printenv > /tmp/env
> 
> That file contains the line:
> 
> PWD=/var/lib/vpopmail/domains/memoryhole.net

I had confirmed the behavior he was indicating by doing something like:

    | (pwd; env) > /tmp/info

in the user/.qmail file and it confirmed that indeed the working directory
was set to the user directory, the one containing the ".qmail" file being
executed by vdelivermail.

The env output for me did not include any PWD variable.  I wonder who sets
the PWD variable on your system, and whether it can be relied on to match
what chdir sets.  Maybe this depends on which *nix you are using.

> Indicating that if I directed it to ./Maildir/ it would deliver to
> /var/lib/vpopmail/domains/memoryhole.net/Maildir/ which of course
> doesn't exist.
> 
> Just because the .qmail file is in the user's home directory doesn't
> mean it's PWD is the user's home directory.

Yes, "home directory" is not at all pertinent here, not for virtual domains.

> If vpopmail actually does
> deliver to /var/lib/vpopmail/domains/memoryhole.net/user/Maildir/ when I
> put ./Maildir/ into my user's .qmail file, then it's behaving
> incorrectly. The environment SHOULD be set identically to if the virtual
> user was a real user and qmail was doing the delivery.

The .qmail-whatever files in the domain directory are different.  For them
pwd shows the domain directory as the working directory.  But for the .qmail
file inside the user directory, vdelivermail is taking care of it, and the
vdelivermail.c code reveals that a chdir is done prior to reading the .qmail
file.  In fact it is opened simply via

    fs = fopen(".qmail","r")

The current directory in effect before opening the .qmail file appears to
remain in effect while the file is processed.

-Kurt

Reply via email to