sieve_pipe_socket_dir not created at startup for configured pipe service

Stephan Bosch stephan at rename-it.nl
Sun Dec 24 02:50:36 EET 2017


Op 12/18/2017 om 1:51 AM schreef Garth Corral:
> Hi, all
>
> I’m new to the list but not to dovecot.  I’ve been using it in a basic configuration for some time, but finally decided to tweak my deployed system to take advantage of some more dovecot features.  In particular I’m trying to set up pigeonhole to implement spam retraining with imapsieve.  All of this is with dovecot 2.2.31 (65cde28) and pigeonhole 0.4.19.
>
> Before going any further let me start by saying that I have gotten all of this to work.  It works when I can get dovecot to start up, that is.  My configuration is pretty much straight from the docs, with a few tweaks for my particular needs.  I’m trying to set up a pipe service using sieve-extprograms, and the relevant part of my config looks like this:
>
> plugin {
>
>   sieve_pipe_input_eol = lf
>
>   sieve_pipe_socket_dir = sieve-pipe
>   sieve_filter_socket_dir = sieve-filter
>   sieve_execute_socket_dir = sieve-execute
>
>   sieve_pipe_bin_dir = /usr/local/libexec/dovecot/sieve-pipe
>   sieve_filter_bin_dir = /usr/local/libexec/dovecot/sieve-filter
>   sieve_execute_bin_dir = /usr/local/libexec/dovecot/sieve-execute
> }

Define either *bin_dir or *socket_dir; not both. These are two
alternative ways of running scripts, either using a direct fork() or
through a script service, respectively.

https://wiki.dovecot.org/Pigeonhole/Sieve/Plugins/Extprograms

> service sieve-train-ham {
>   executable = script /usr/local/libexec/dovecot/sieve-pipe/train-ham.sh
>
>   # Needs access to dspam config and lockfiles.
>   user = dspam
>
>   # socket name is program-name in Sieve (without sieve-pipe/ prefix)
>   unix_listener sieve-pipe/train-ham {
>   }
> }

>
> It’s my understanding from reading the docs that the sieve_pipe_socket_dir specifies a directory that is relative to base_dir, which is the default /var/run/dovecot in my case.  The issue I’m having is that dovecot will not start, and spews the following errors:
>
> dovecot: master: Error: bind(/var/run/dovecot/sieve-pipe/train-ham) failed: No such file or directory
> dovecot: master: Fatal: Failed to start listeners

First of all, this directory does not strictly need to be relative to
/var/run/dovecot. It can be an absolute path to somewhere else.

The relative directories are indeed not currently created implicitly.
Hmm, we will discuss this internally.

> Once dovecot fails startup, it leaves /var/run/dovecot around and if I manually create the sieve-pipe directory there it will start up, create the sockets there and everything works as intended subsequently.  The problem, though, is that on normal shutdown all of /var/run/dovecot goes away and the at the next startup it fails to start again.  Needless to say this isn’t great for unintended reboots, etc.
>
> So, can anyone see anything obvious that I’m doing wrong?  I’m just assuming that dovecot should create the needed subdir since I can’t find anything in the docs to suggest a way to create it otherwise.  I’ve tried all I can think of at the moment to try to remedy this without success.  I’m happy to provide additional details as needed to try to track this down.
>


Regards,

Stephan.



More information about the dovecot mailing list