The -d2.9 debugging switch tells
sendmail to display the properties of each open
file descriptor. That output is produced by the
dumpfd( ) routine, and each line of output is
for a single file descriptor:
number: fl=flags mode=mode type stats
Here, the number is the count of the open file
descriptor. Note that descriptors 0, 1, and 2 are usually tied to the
standard input, output, and error output, respectively.
The flags is a hexadecimal representation of the
state flags associated with a file descriptor. F_GETFL is used with
ioctl(2) to fetch each, and all are described in
<sys/fcntl.h> on most systems.
The mode is printed in octal and is the
st_mode associated with an
fstat(2) of the file descriptor.
The type examines the file type portion of the
st_mode and prints SOCK for a socket, CHR: for a
character special device, BLK: for a block special device, FIFO: for
a named pipe, DIR: for a directory, LNK: for a symbolic link, and
nothing otherwise (e.g., nothing if it is a file).
The stats are printed for all but the socket.
They look like this:
dev=major/minor ino=inum nlink=nlink u/gid=user-id/group-id size=bytes
Here the dev= shows the major and minor device
numbers for the device that the file descriptor is associated with.
The inum is the inode number on the disk (if
there is one) and nlink is the number of hard
links to the file on disk. The u/gid shows the
user and group ownership associated with the file descriptor. The
bytes is the number of bytes in a file, and zero
for almost everything else.
For a socket, the stats part of each line looks
like this:
[addr]/port-> host
Here, addr is the IP address (surrounded in
square braces) of the local end of the socket. If the connection is
of type AF_INET or AF_INET6, the port number of the connection is
also shown as /port. The
host is the hostname, as returned by
getpeername(3), of the connecting host. If any
of these cannot be found, the error string associated with
errno is printed parenthetically in its place.
The -d7.9, -d40.9, and
-d46.9 debugging switches also print a line such
as this for specific file descriptors. Also, if
sendmail is run with the
-d10.100 switch, or if
sendmail fails to open a tf
queue file (Section 11.2.6), or if
sendmail exited because of too many open files,
it will syslog all its open file descriptors
within this format.