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);
}