home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam  


Previous Section Next Section

-d38.2

Show database map opens and failures Debug command-line switch

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 
    Previous Section Next Section