When sendmail first starts to run, it calls gethostname (3) to get the name of the local machine. If that call fails, it sets that local name to be localhost . Then gethostbyname (3) is called to find the official name for the local host. If that call fails, the official name for the local host remains unchanged. The official name for the local host is assigned to $j . If the V command's version (Section 17.5) is 5 or higher, V8 sendmail discards the domain and assigns the result to $w (the short name): here.us.edu from here to end of name discarded If the version is 4 or less, $w is assigned the fully qualified name (and is identical to $j ). $w is then appended to class $=w ($=w). $=w is used internally by sendmail to screen all MX records that are found in delivering mail over the network. [24] Each such record is compared in a case-insensitive fashion to $=w . If there is a match, that MX record and all additional MX records of lower priority are skipped . This prevents sendmail from mistakenly connecting to itself.
Any of the following errors (or variations on them) indicate that $=w , $w , or $j might contain a faulty value, most likely from a bad configuration file declaration: 553 host config error: mail loops back to myself 553 Local configuration error, hostname not recognized as local 553 host hostname configuration error 553 5.3.5 host config error: mail loops back to me (MX problem?) Note that if $w is pulled from the name server and the host is running BIND, and a cache is being downloaded, $w could be periodically unresolved . In this instance, sendmail sleeps and retries the lookup. $w is defined when sendmail starts up. It can be redefined in the configuration file or as part of the command line. Once it is defined, $w doesn't change, so there is no need to prefix it with a $& when using it in rules. |