[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: exim and pipe aliases?



On Thu, Jan 16, 2003 at 07:01:28PM -0500, Robert L. Harris wrote:

>   Users don't need to exist.

In case exim understands the command line to pipe the mail to as
usernames, the mail cannot be delivered to those users if they do not
exist.

> There's a setting in /etc/exim/exim.conf that tells it what user to
> execute the process as.  If I put a long sleep in the script I can
> see user "mail" or even "robert" executing the script.  I've put
> some touch commands and debug commands as well in the script and
> they get created and with the right ownership.

Hm, does that work even in case you get the error message? The message
was:

> Neither the system_aliases director nor the address_pipe transport
> set a uid for local delivery of | /usr/local/bin/Pager.pl 6787586413

Searching for 'address_pipe' in the exim documentation, I've found the
following statements (Node: The pipe transport):

> The "pipe" transport is used to deliver messages via a pipe to a
> command running in another process. This can happen when when a
> director explicitly directs a message to a "pipe" transport, and
> also when an address is expanded via an alias,
> [...]
> As "pipe" is a local transport, it is always run in a separate
> process, normally under a non-privileged uid and gid. In the common
> case, these are the uid and gid belonging to the user whose
> `.forward' file directed the message at the pipe. In other cases the
> uid and gid have to be specified explicitly, either on the transport
> or on the director or router that handled the address.  Current and
> `home' directories are also controllable. See chapter "Environment
> for running local transports" for details of the local delivery
> environment.

Considering that, my guess is that you either didn't specify the user
to run the script as correctly (though you seem to see it running) in
the director in the exim configuration, or that the specification is
correct, but doesn't work for some reason.

Afaics, the user to run the script as *must* exist. If that user does
not exist, exim won't be able to find out his UID, what would
correspond to the error message you get. Also, it is a possible reason
why the specification of the user to execute the script as doesn't
work.

The first thing I'd try is quoting the command in /etc/aliases as
described in my previous mail.

The second thing would be to create a ~/.forward file for an existing
user as '# Exim filter' and have it pipe all mails sent to that user
to your script. You could output some variables from that ~/.forward
file to check what becomes of the command, so to get a clue of what
happens.

What setting did you use to specify the user to run your script as in
the exim configuration? In my case, it looks like that:


system_aliases:
  driver = aliasfile
  file_transport = address_file
  pipe_transport = address_pipe
  file = /etc/aliases
  search_type = lsearch
  user = listar


There's only a user specified in that director, but no group (user
'listar' is in group 'listar'). Nevertheless it works fine.

> If I execute the command from CLI by hand everything works the same
> except I don't get the failures such as the undefined scheme in
> Protocols.pm.  I tried setting the scheme, I can even read it and
> it's set.

Hm?


GH



Reply to: