From: eric@CS.Berkeley.EDU (Eric Allman)
Newsgroups: comp.mail.sendmail
Subject: Re: Host search path in subdomain?
Date: 7 Jan 1993 23:30:38 GMT
Organization: UC Berkeley Mammoth Project
Distribution: world
Reply-To: eric@CS.Berkeley.EDU
NNTP-Posting-Host: mastodon.cs.berkeley.edu

In article <1993Jan6.173047.16456@dde.dk>, fll@dde.dk (Flemming Lau) writes:
|> Why does sendmail not like all other nice net-utilities use the res_search()
|> routine to resolve a not fully qualified name?
|> 
|> Example: 
|> 
|> 	Our domain is dde.dk
|> 	We have a subdomain bqa.dde.dk
|> 	There is a host Kurt in the dde.dk domain
|> 	I can ping the name Kurt on a host in the bqa.dde.dk subdomain
|> 	I can NOT mail a user on Kurt from the same host. 
|> 
|> Sendmail.cf files insist on as they cannot find a CNAME for Kurt to 
|> define it as Kurt.bqa.dde.dk which does not exist. Whereas ping etc.
|> will try Kurt.bqa.dde.dk, Kurt.dde.dk etc. and succeed. 
|> 
|> Why is this and what do I do about it?
|> 
|> 
|> Thanks for any help!

The answer to this is unfortunately quite complicated, and it starts
with "it depends on what version you are running."  I know Berkeley
sendmail best, so I'll describe that.

My intent was always that sendmail would do appropriate domain
searching.  In particular, the .cf syntax $[ ... $] was intended
to do the searching and replace an abbreviated hostname with a fully
qualified hostname.

However, I had left Berkeley during the period when DNS was introduced.
The entire file domain.c was not written by me, and it introduced some
bugs -- notably, a fully qualified domain was replaced => only if the
short name referred to a CNAME (canonical name, a.k.a. host alias) <=.

Also, the person who put this in apparently assumed that the .cf file
would fully qualify the name before declaring it as an SMTP host name
(via the $# mailer $@ hostname syntax), and hence turned off RES_DNSRCH
when actually opening the mailer connection.

The point of all of this was to avoid the possibility of conflicts
with top level domains.  The most common conflict in university
computer science departments was with Czechoslovakia -- or .CS.  If
you were in a CS Department (e.g., CS.Berkeley.EDU) and you happen to
have a host with the same name as something in Czechoslovakia (e.g.,
vse.CS), then does "vse.CS" mean the one in Czechoslovakia or the
local one (vse.CS.Berkeley.EDU)?

Because of this, some versions of sendmail have disabled domain searching
entirely, even for $[ ... $] syntax.

Sendmail release 6 (just released) tries to get around this by searching
first the name as given then with the local domain extension.  For
example, in CS.Berkeley.EDU, the name vse.CS is tried as:

	vse.CS
	vse.CS.CS.Berkeley.EDU
	vse.CS.Berkeley.EDU

If you are just talking about using the name "Kurt" from within
bqa.dde.dk, you can do this pretty easily -- since all domain names
must include at least one dot, you can assume that a name with no dots
must be in your subdomain.  This doesn't help you if you also have
hosts in your superdomain (e.g., Kristin.dde.dk).

Sorry this is so long.  Unfortunately, the decision to not include an
explicit root node in DNS names made it inevitable.

eric
Newsgroups: comp.mail.sendmail