I discovered that the code in libconfig.c that parses imapd.conf really has no way of warning you if you make a typo. It looks like someone tried to deal with this at some point, but that code is commented out because it would die on any service-specific configuration options.
The patch I propose here relies on the fact that a service-specific option must contain a '_' character in it, so this patch would at least catch simple typos to real imapd configuration options. Of course, this patch is only valid if my assumption that all service-specific options must contain an underscore is valid. Thoughts? If this would be useful, I'll throw it in bugzilla. If it's a dumb idea, I'll forget about it. --- libconfig.c.orig 2009-03-31 08:22:14.000000000 -0400 +++ libconfig.c 2009-04-15 15:04:44.000000000 -0400 @@ -589,18 +589,14 @@ /* check to make sure it's valid for overflow */ /* that is, partition names and anything that might be * used by SASL */ -/* - xxx this would be nice if it wasn't for other services who might be - sharing this config file and whose names we cannot predict - if(strncasecmp(key,"sasl_",5) - && strncasecmp(key,"partition-",10)) { + && strncasecmp(key,"partition-",10) + && (!strchr(key,'_'))) { sprintf(errbuf, "option '%s' is unknown on line %d of config file", fullkey, lineno); fatal(errbuf, EC_CONFIG); } -*/ /* Put it in the overflow hash table */ newval = xstrdup(p); -- Dave McMurtrie, SPE Email Systems Team Leader Carnegie Mellon University, Computing Services