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.