Getting option changes to take effect on the MTA
Options, both MTA options and channel options, are part of the core MTA configuration. When an MTA process starts up, one of its first tasks is to get initialized with a complete view of the current "live" core MTA configuration. When a compiled configuration is in use (exists), then the current "live" core MTA configuration is the most recently compiled version of the MTA configuration; any options with values updated subsequent to the most recent compilation are not "live" (will not have an effect). When a compiled configuration is not in use, then any changes to option values are immediately "live" (though this does not mean that they will take immediate effect; see below).
Now since many MTA processes are long-running, and since they normally initialize with the MTA configuration information upon first starting up, even "live" configuration changes are not seen immediately by already running MTA processes. To update already running MTA processes with new configuration information, the
reload utility (or one of the utilities that subsumes it) must be used. Note that since most MTA processes do automatically "cycle" --- that is, time out and expire to be replaced with new processes --- changes to the "live" configuration generally will get seen eventually, if not immediately, even if the
reload utility is not used. (In particular, MTA server processes, such as SMTP server processes, and channel delivery job processes, do expire and get replaced regularly, if not immediately; such channel processes are usually the processes that need to "see" changes to configuration options. However, the two main control processes for the MTA, namely the Dispatcher and Job Controller, run indefinitely and do not automatically expire, so for option changes affecting them, waiting will not suffice and a
reload will be required.)
So in particular, when a compiled configuration is being used, then options are part of the compiled configuration. And in order to get changes to options to take effect, you must: (1) re-compile the configuration (using the
cnbuild utility or a utility that subsumes it), and furthermore for already running, long-running processes you must also (2) reload the configuration (using the
reload utility or a utility that subsumes it).