On Jan 17, 2021, at 11:06 PM, Aki Tuomi <aki.tu...@open-xchange.com> wrote:
> >> On 18/01/2021 08:56 Ron Garret <r...@flownet.com> wrote: >> >> >> On Jan 17, 2021, at 10:48 PM, Aki Tuomi <aki.tu...@open-xchange.com> wrote: >> >>> Don't touch the INBOX setting (leave it out), use the -m parameter for >>> dovecot-lda. >> >> I don’t think that will work. My MTA is postfix and it’s connected to >> dovecot via LMTP, so AFAIK postfix is talking to dovecot over a socket, and >> dovecot-lda isn’t being invoked so there is no place to pass that the -m >> parameter. But we are at the limits of my understanding of how all this >> stuff actually works under the hood so please correct me if I’m wrong here. >> >> rg > > Ah, you are using LMTP... then the easiest is to use Sieve here. I was afraid of that :-( What about just using postfix as the LDA? > You can use simple global script, e.g. /etc/dovecot/default-mbox.sieve > > ``` > require ["fileinto", "mailbox"]; > fileinto "OtherBox"; > ``` > > then sievec the script, and use > > plugin { > sieve_before = /etc/dovecot/default-mbox.sieve > } > > this way it will change the default mailbox, but allows per-user scripts to > change it. The problem is that the spam filter needs to put good messages back in INBOX. That would cause an infinite loop (unless sieve has a mechanism to prevent this that I don’t know about). So to prevent this I’d need to make the rule conditional on some header that the spam filter adds before moving the message back. The problem with *that* is that it plays badly with the strategy for training the filter, which is for the user to move false-positive messages from SPAM to INBOX. A user might then also move a good message from OtherBox to INBOX rather than wait for the spam filter to get around to processing it, and then sieve would (presumably) move it right back. So now I need *another* header that *sieve* adds before moving the message to OtherBox and make the rule conditional on *that* header. It all starts to seem very complicated and fragile. rg