A friend of mine was asked to write a configuration frontend for amavis.

Poor guy: he’ll never be able to support it properly. There is just too much sick stuff you can do in amavis’ config: it’s not a config file, it’s a perl program.

Every time I upgrade amavis (to be precise: amavisd-new) on my mail server I’m cursing the developers for their stupid config file. (Note: apparently amavis-ng has a saner configuration file) Even with powerful tools such as Meld it is a PITA to merge my changes into a new version of the config file. Apart from the file being unreadable in general anyway…

Of course there are cases where you can benefit. For example, if you want to get configuration paramters from LDAP, instead of modifying the perl script code of amavis, you can just write your perl script code into the perl script config file… From what I’ve heart, using LDAP in amavis is really slow, too. (Except maybe if you spend much time on also implementing some caching, of course you can do that in the config file, instead of the script source…)

So please, whenever you write a program, design the configfile in a way such that other programs will be able to read and write it, too! (e.g. by using an XML format)