Most database maps are declared directly with the
K configuration command (Section 23.2). Others are declared internally by
sendmail, such as the host
and alias maps. The -d38.2
debugging switch (there is no -d38.1 information)
first shows database maps being initialized:
map_init(dbtype:name, file, pass)
Here, dbtype is one of the internal database
types allowed by sendmail, such as
host, and dequote (Section 23.2, the K configuration
command). The name is either the name you gave
to the database map with the K configuration
command, or one assigned internally by sendmail
(such as aliases.files). The
file is either a literal NULL, or the name of
the database file (such as /etc/mail/aliases).
And pass is a flag that tells
sendmail whether it should open the database,
rebuild the database, or do neither.
Next, the -d38.2 debugging switch causes
sendmail to show each database map as it is
about to be opened. The output that is produced will look like one of
the following lines:
bt_map_open(name, file, mode)
hash_map_open(name, file, mode)
hes_map_open(name, file, mode)
impl_map_open(name, file, mode)
ldap_map_open(name, mode)
ndbm_map_open(name, file, mode)
ni_map_open(name, file, mode)
nis_map_open(name, file, mode)
nisplus_map_open(name, file, mode)
stab_map_open(name, file, mode)
switch_map_open(name, file, mode)
text_map_open(name, file, mode)
user_map_open(name, mode)
In all of the previous lines, the mode is a
decimal representation of the file permissions that are used during
the open. The name prefixing each line corresponds to the database
type. For example, impl corresponds to the
implicit database type.
The -d38.2 debugging switch also causes
sendmail to display the NIS domain that was used
if one was specified for the nisplus database
type:
nisplus_map_open(file): using domain ypdomain
The -d38.2 debugging switch also allows other
silent errors to be printed about some open failures. Under NIS+,
lookups are performed by named columns (as in the case of the
password database, the columns are named passwd,
shell, and so on):
nisplus_map_open(name): cannot find key column colname
nisplus_map_open(name): cannot find column colname
Text files that are used as maps must be declared with a filename
that is an absolute path (begins with a /
character thus forming a fully qualified pathname), that exists, and
that is a regular file. If there is a problem, one of the following
is logged (even if -d38.2 is not specified):
text_map_open: filename required
text_map_open(file): filename must be fully qualified
text_map_open(name): cannot stat file
text_map_open(name): file is not a file
Text files should be syntactically correct. The delimiting character,
char, will print either as a single character or
as the phrase (whitespace). Note that the third
line in the following example will be reported only when the
-d38.2 debugging switch is used:
text_map_open(file): -k should specify a number, not badtext
text_map_open(file): -v should specify a number, not badtext
text_map_open(file): delimiter = char