When sendmail first starts up, it probes all
your network interfaces to see what hostname is assigned to
each. For all that it finds in the up
state, it adds that hostname to the class $=w
($=w), meaning that class will be considered
a valid name for the local machine.
Sometimes, however, especially when supporting virtual hosts,
sendmail should not consider all the interface
hosts as local. Because there is no way to remove a name from a
class, it is better to not have sendmail probe
the interfaces in the first place. Then, you will be able to manually
add (or add via your /etc/mail/local-host-names
file, FEATURE(use_cw_file)) just the names you want into the class
$=w.
You can disable sendmail's
initial scanning of interfaces for hostnames by declaring this
DontProbeInterfaces option:
O DontProbeInterfaces=bool configuration file (V8.10 through V8.11)
-ODontProbeInterfaces=bool command line (V8.10 through V8.11)
define(`confDONT_PROBE_INTERFACES',`bool') mc configuration (V8.10 through V8.11)
O DontProbeInterfaces=string configuration file (V8.12 and later)
-ODontProbeInterfaces=string command line (V8.12 and later)
define(`confDONT_PROBE_INTERFACES',`string') mc configuration (V8.12 and later)
The argument bool is of type
Boolean. If it is missing, the default value is
true—don't probe interfaces at startup for
hostnames. The argument string is of type
String (for V8.12 and above). If it is missing, the default value is
true—don't probe interfaces at startup for
hostnames. If the entire option is missing, the default value is
false—do probe interfaces.
Beginning with V8.12, a third alternative (to true or false) is
available. If you specify a literal loopback,
sendmail will probe interfaces at startup, but
will not probe the loopback interface.
The DontProbeInterfaces option is not safe. Even
if it is specified from the command line, it can cause
sendmail to relinquish its special privileges.