It looks like dovecot is trying to save the
compiled active script to the same directory as the source file,
instead of to bindir. Am I missing something?
sieve =
file:/usr/local/etc/mail/%{domain}/%{username}/sieve;
active=/usr/local/etc/mail/%{domain}/%{username}/sieve/.active.sieve;
bindir=/var/cache/mail/%{domain}/%{username}/sieve
Active= tells where to save the complied active script. In the above
config it is being told to save to
/usr/local/etc/mail/%{domain}/%{username}/sieve/.active.sieve;
Which is the same directory as the scripts set with file:
/usr/local/etc/mail/%{domain}/%{username}/sieve
If you want the compiled to save in same path as bindir then change
active to match
active=/var/cache/mail/%{domain}/%{username}/sieve/.active.sieve;