Exim home directories for pipes

Problem Description

I’m looking at using pipes in /srv/<domain>/config/aliases and while Exim does recognise something like the following, it defers delivery.

maildump  | /opt/local/bin/maildump /srv/<domain>/var/maildump.log

That is a script that cats its stdin to the file specified for testing.

I can see a mail to the maildump@ address arriving in the queue, but when trying to deliver, Exim says:

  == | /opt/local/bin/maildump /srv/<domain>/var/maildump.log <maildump@domain> R=vhost_aliases T=address_pipe defer (2): No such file or directory: failed to chdir to /srv/<domain>/mailboxes/maildump

In the Exim config /etc/exim4/sympl.d/20-routers/25-vhost-aliases there’s these lines:

  router_home_directory    = VHOST_DIR/$domain/VHOST_MAILBOX_DIR/$local_part
  transport_home_directory = VHOST_DIR/$domain/VHOST_MAILBOX_DIR/$local_part

Does that mean that for every pipe alias I create, Sympl currently wants me to have a mailbox directory for the same local part? If so, does that negate the alias and use mailbox delivery instead?

If I remove the lines from the config, the mail can be delivered to the pipe.


  • Sympl Version [9.0/10.0]: 10
  • Sympl Testing Version? [Yes/No] No
  • Debian Version [Buster/Stretch]: Buster
  • Hardware Type? [Dedicated/Virtual/Pi] VM
  • Hosted On? [name of hosting co] DigitalOcean

Having looked at this… this is trying to deliver to an alias - an address, a filename, a directory or a pipe. For none of these is it relevant for the /$local_part to be added to the home addresses (IMHO) - VHOST_DIR/$domain/VHOST_MAILBOX_DIR should be OK. I’ve tested this and it works for pipes, addresses and files - which need to start with /.

What do you think @Kelduum?

The config/alias may work with pipes, but as far as I’m aware it’s only ever been tested with email addresses.

There’s a fair amount of Exim config changes with the routers and so on to support the normal Sympl layout, even more so with Bullseye to validate incoming mail addresses after the Exim tainting changes, so it may be able to get it to work, but it’s outside the supported setup at the moment.