While adding a feature I ran into a problem that is so old that I had to dig into my pre-alpha source code to find when it was introduced.
Bugfix (introduced May 19, 1997): removing a parameter setting from main.cf did not reset the parameter to its default value. File: global/mail_params.c. This has rarely been an issue because most Postfix processes run for a limited amount of time, and because people usually do "postfix reload" after making a change, so that all daemons except master terminate voluntarily. A redundant design does have benefits ... Wietse diff -bcr /var/tmp/postfix-2.6-20090106/src/global/mail_conf.c ./mail_conf.c *** /var/tmp/postfix-2.6-20090106/src/global/mail_conf.c Sat Apr 10 10:52:51 2004 --- ./mail_conf.c Thu Jan 8 20:45:10 2009 *************** *** 173,178 **** --- 173,181 ---- && geteuid() != 0) /* untrusted */ mail_conf_checkdir(var_config_dir); path = concatenate(var_config_dir, "/", "main.cf", (char *) 0); + /* In case a name=value pair is removed from main.cf. */ + if (dict_handle(CONFIG_DICT) != 0) + dict_unregister(CONFIG_DICT); dict_load_file(CONFIG_DICT, path); myfree(path); }