After wrestling with Johannes's original plugin, I had a go at the mysql plugin that Tim wrote, as described here: http://members.plug.org.au/~linuxalien/dokuwiki/projects:dovecot-mysql-dspam...
I kept getting "Error: imap dump-capability process killed with signal 11" when attempting to start dovecot with this plugin. I traced the error to line 656 of master-settings.c in the dovecot source, in the 'get_imap_capability' function. In this function, it notes: "Reloading configuration. Don't try to execute the imap process again. Too risky and the wait() call below will break it anyway. Just use the previous capability list we already had generated."
I changed the source so that the function always ran " set->imap_generated_capability = p_strdup(settings_pool, generated_capability); return TRUE;"
instead of going through the function where it had on the wait described in the comments.
Now, voila. Dovecot starts without complaint, the plugin works, the delivery and moving of email works.
I'm assuming I've screwed something up by skipping the rest of this get_imap_capability function. My C skills are a few years rusty. What are the ramifications of skipping the remainder of this function?
Thanks, Michael