I'm trying to run some smartsieve rules on a IMAP mailbox, I can certainly do this for mails that are delivered to that mailbox, but for emails that are already in that mailbox, or ones that a moved to it (via thunderbird/outlook) the rules are not processed. Are there any applications / methods of having a rule(s) run on the mailbox ever X secconds / minutes?
By design, sieve processes mail on arrival in the user's mailbox from the outside. There is no built-in way to process folders afterwards.
It would be possible, though, to collect messages from a cyrus folder ("hotfolder"), and re-send them through the regular MTA to a special mailbox ("specialmailbox") which in turn has the sieve rules you need.
For this purpose, you could use something like this, for example, via cron:
The messages in the "hot" folder are removed from the file system without removing them from the cyrus index, this is not optimal. You could use
I Hope this helps.
Newer versions of dovecot and pidgeonhole now come with a sieve-filter command. So you can write a script to scan all mailboxes for a "INBOX.Refilter" folder, and then run sieve-filter against that folder.
This script assumes that you have structured your mail folder as /var/vmail/domain/user.