Hello Dovecot folks ... In response to the recent announcement of Dovecot-2.3.16 and pigeonhole-0.5.16, we decided to update our installation (full disclosure: this is really an update from dovecot-1.2.x in progress; we're working on a development system where we already had dovecot-2.3.x installed and running). The update of dovecot itself (compiled from source), to version 2.3.16 was quite uneventful, and I can report that it's working. We're seeing some behaviour with indexing that will need attention, but I suspect that that's a matter of configuration, and is completely unrelated to what I'm reporting. More disclosure: we've never used nor compiled pigeonhole on our systems before. We've been using procmail for decades, but are now looking into potentially switching to sieve, and as I understand it, that means installing pigeonhole. I downloaded dovecot-2.3-pigeonhole-0.5.16 at the same time that I downloaded dovecot-2.3.16, a few days ago. My build-time configure and make for pigeonhole is relatively simple, but fails to build: ./configure --prefix=/local/pkg/pigeonhole-0.5.16/root \ --sbindir=/local/pkg/pigeonhole-0.5.16/root/bin \ --localstatedir=/var \ --mandir=/local/pkg/pigeonhole-0.5.16/root/man \ --with-dovecot=/local/pkg/dovecot-CURRENT/root/lib/dovecot make -j2 "/local/pkg/dovecot-CURRENT/root/lib/dovecot" is correct for us, if I understand the installation instructions correctly: -rw-r--r-- 1 root root 1324 Aug 3 14:03 /local/pkg/dovecot-CURRENT/root/lib/dovecot/dovecot-config The make fails, while compiling sieve-extprograms-common.c: sieve-extprograms-common.c: In function ‘sieve_extprogram_run’: sieve-extprograms-common.c:639:7: error: ‘PROGRAM_CLIENT_EXIT_STATUS_INTERNAL_FAILURE’ undeclared (first use in this function) case PROGRAM_CLIENT_EXIT_STATUS_INTERNAL_FAILURE: ^ sieve-extprograms-common.c:639:7: note: each undeclared identifier is reported only once for each function it appears in sieve-extprograms-common.c:641:7: error: ‘PROGRAM_CLIENT_EXIT_STATUS_FAILURE’ undeclared (first use in this function) case PROGRAM_CLIENT_EXIT_STATUS_FAILURE: ^ sieve-extprograms-common.c:643:7: error: ‘PROGRAM_CLIENT_EXIT_STATUS_SUCCESS’ undeclared (first use in this function) case PROGRAM_CLIENT_EXIT_STATUS_SUCCESS: ^ I decided to check against dovecot-2.3-pigeonhole-0.5.15, figuring that problems compiling that version likely would have been reported already, and sure enough I find the following difference in this file: --- ./dovecot-2.3-pigeonhole-0.5.15/src/plugins/sieve-extprograms/sieve-extprograms-common.c 2021-06-14 09:41:29.000000000 -0400 +++ ./dovecot-2.3-pigeonhole-0.5.16/src/plugins/sieve-extprograms/sieve-extprograms-common.c 2021-08-06 05:26:46.000000000 -0400 @@ -635,6 +635,14 @@ int sieve_extprogram_set_input_mail int sieve_extprogram_run(struct sieve_extprogram *sprog) { - return program_client_run(sprog->program_client); + switch (program_client_run(sprog->program_client)) { + case PROGRAM_CLIENT_EXIT_STATUS_INTERNAL_FAILURE: + return -1; + case PROGRAM_CLIENT_EXIT_STATUS_FAILURE: + return 0; + case PROGRAM_CLIENT_EXIT_STATUS_SUCCESS: + return 1; + } + i_unreached(); } ... and no mention of these PROGRAM_CLIENT_EXIT_STATUS_* constants anywhere else in the code, in either version. Have I stumbled onto an omission in the packaged sources, or is there some other package missing on my system, or is there perhaps even some other explanation for what I'm seeing? I've checked the mailing list archive and found no mention of anyone else having the same (or similar) problem, so I do think it's possible that I'm just missing something ... Thanks in advance for any insight folks might be able to give me ... -- ---------------------------------------------------------------------- Sylvain Robitaille syl@encs.concordia.ca Systems analyst / AITS Concordia University Faculty of Engineering and Computer Science Montreal, Quebec, Canada ----------------------------------------------------------------------