On Wed, Apr 02, 2008 at 02:20:33PM +0100, Chris G wrote: > > The main requirement is that the configuration file is very simple, > not like procmail for example. My existing configuration file is > simply one line per list with the list name and my alias for it (which > is also the mailbox name). My filter program reads this file and uses > it to route the mail to the right mailbox, my muttrc uses the same > file to set up aliases, lists and subscribe lines. > > What do others here use, any recommendations that I might find useful?
I use a combination of a script and control file such as you describe, which is interpreted by a script in my own scripting language. (hey, you asked.) The file contains various keys and actions. The keys might include things like "from-address" or "sender-address" or "list-id" (and their values), and the actions might include things like built-in known keywords preceded by a '/', folder names enclosed in square brackets, or script fragments bound by curly braces. The action field can also include a priority (as a / keyword), such that if multiple keys match, the best priority wins. Most of the lines are very simple, specifying only a folder name in brackets or the simple keyword "/keep". Real examples include: list-id:dhcp-server.isc.org::[M/dhcp-server] list-id:dhcp-users.isc.org::[M/dhcp-users] list-id:dovecot.dovecot.org::[M/dovecot] return-path-address:[EMAIL PROTECTED]::/keep to-localpart:abuse::[M/abuse] cc-localpart:abuse::[M/abuse] to-localpart:webmaster::/p1:[M/role] sender-address:[EMAIL PROTECTED]::/keep The /p1 above is an example of the priority keyword specifying priority 1; it only is invoked if something else didn't match (implicitly with a priority 0). As I say, this is all interpreted by my delivery script, which means that if I have anything that can't be handled by that file, I can put it in the script instead of in the file. But the file handles an awful lot of cases. For mutt-users, the entry is: sender-address:[EMAIL PROTECTED]::sieve { \ if not exists "Mail-Followup-To" { \ addheader "Mail-Followup-To" "mutt-users@mutt.org"; } \ keep; } # The handling of this is done by a "hdrctls" script, an oldish version of which is described here: http://www.mvmf.org/mvmda/examples/hdrctls.shtml and which is invoked from my main delivery script something like this: @include "hdrctls.mfl" sieve { [ some special-case stuff here ] /* Do our header controls database checks */ elsif C { hdrctls(); } { stop; } [ more special-case stuff follows ] } Anyway, my answer seemed close enough to the question that I figured I'd give it :) I've been using this setup for well over two years and I find it quite handy. -mm-