Sieve extprograms ?not exexuting?

E.B. emailbuilder88 at yahoo.com
Thu Apr 30 19:04:37 UTC 2015


>>> Debug-enabled log give me:
>>> Apr 27 04:11:36 mail dovecot: lmtp(test at example.com): Debug:
>>> qOGyA0DePHVaOyHEM/SpMA: sieve: action execute: running
>>> program: test.sh
>>> Apr 27 04:11:36 mail dovecot: lmtp(test at example.com): Debug:
>>> waiting for program `/usr/local/etc/dovecot/sieve_globals/test.sh'
>>> to finish after 0 seconds
>>>
>>> So I guess it thinks it is running my script? But simple test script
>>> does nothing. Here it is:
>>>
>>> #!/bin/sh
>>> read INPUT
>>> INPUT="Hello world: $INPUT"
>>> echo "$INPUT" >> /tmp/hello
>>> echo "---------------------------" >> /tmp/hello
>>>
>>> Permissions on this script file for now are rwxrwxrwx
>>> But nothing goes to /tmp/hello at all. Script works when I run it
>>> manually. I also tried without the "read" but I think that's required
>>> isn't it? Anyway, what else can I do to debug this?
>>
>> Well, first try with a script that cannot fail (well most likely), e.g.:
> 
> I tried your script for fun, same result. Log showing
> the script was called, but no output from the script.
> 
> I also deleted the script and made sure that debug
> log showed that sieve could not find the script. Is it
> chrooted or something weird?
> 
> I have confirmed it is being run by calling "exit 3" and
> seeing in the log that "program ... terminated with
> non-zero exit code 3" so problem is in commands
> accessing the filesystem I guess. I added this:
> 
> echo "HELLO WORLD" 1>&2
> 
> And log shows "Error: HELLO WORLD"
> 
> So it's working but no filesystem access.

I just tried this too:

touch /tmp/hello-world

And nothing. I tried to *read* from the
filesystem:

TEST=$(cat /tmp/test)
echo "TEST: $TEST" 1>&2

Nothing. I found that the script can do
other things like connect to network or
other services, but any way I try to do
something with the filesystem come up
empty.

Dont' know if calling the script via
dovecot socket service would make this
different because there is a bug that
prevents extprograms execute via socket
broken (see other thread).

Is this on purpose no filesystem
access allowed? why?

> Calling from sieve script with:
>
> execute :input "myinput" "test.sh";
>
> Also tried
>
> execute "test.sh";



More information about the dovecot mailing list