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


Previous Section Next Section

-d11.1

Trace delivery Debug command-line switch

The -d11.1 (a.k.a. -d11) debugging switch is used to trace message delivery. It must be run with the -v command-line switch, or no output will be produced.

First, for each delivery agent the following is printed:

openmailer: argv

Here, argv is the A= array for the delivery agent, with macros expanded and printed.

Second, the status of remote hosts is cached internally. Before connecting to a remote host, sendmail checks its cache to see whether that host is down. If it is, it skips connecting to that host. If the -d11.1 debugging switch is also specified, the status of the down host is printed as:

openmailer: output of mci_dump( ) here

The output of mci_dump( ) looks like this:

MCI@memaddr: flags=mci_flags<flag,flag,...>,
errno=mci_errno, herrno=mci_herrno, exitstat=mci_exitstat, state=mci_state, pid=mci_pid,
maxsize=mci_maxsize, phase=mci_phase, mailer=mci_mailer,
status=mci_status, rstatus=mci+rstatus,
host=mci_host, lastuse=mci_lastuse

The meaning of each mci_ item in this output is described in Table 16-8.

Table 16-8. The meaning of the MCI structure items

Name

What prints

memaddr

The address in memory of this C-language structure

mci_flags

The flag bits in hexadecimal (see Table 16-9)

mci_errno

The error number of the last connection

mci_herrno

The DNS h_errno of the last lookup

mci_exitstat

The <sysexits.h> exit status of the last connection

mci_state

The current SMTP state

mci_maxsize

The maximum size message the host will accept

mci_pid

The PID of the child process

mci_phase

SMTP phase (string) such as "client greeting" (or NULL)

mci_mailer

The (text) name of the delivery agent (or NULL)

mci_status

The DSN status to be added to the address (or NULL)

mci_rstatus

The SMTP status to be added to the address (or NULL)

mci_host

The host's name (or NULL)

mci_lastuse

Last usage time in ctime(3) format

Table 16-9 shows what the individual flag bits in mci_flags mean, and the human-readable flags text that corresponds to each bit. Those text items are shown with the leading source MCIF_ prefix removed.

Table 16-9. The meaning of mci_flags hexadecimal values

Name printed

Hex value

Meaning

VALID

0x00000001

This entry is valid

TEMP

0x00000002

Don't cache this connection (prior to V8.12)

CACHED

0x00000004

This connection is currently in open cache

ESMTP

0x00000008

This host speaks ESMTP

EXPN

0x00000010

EXPN command supported

SIZE

0x00000020

SIZE option supported

8BITMIME

0x00000040

BODY=8BITMIME supported

7BIT

0x00000080

Strip this message to 7 bits

MULTSTAT

0x00000100

MAIL11V3: handles MULT status (prior to V8.12)

INHEADER

0x00000200

Currently outputting header

CVT8TO7

0x00000400

Convert from 8 to 7 bits

DSN

0x00000800

DSN extension supported

8BITOK

0x00001000

OK to send 8-bit characters

CVT7TO8

0x00002000

Convert from 7 to 8 bits

INMIME

0x00004000

Currently reading MIME header

AUTH

0x00008000

ESMTP AUTH= is supported (V8.10 and above)

AUTHACT

0x00010000

SASL (AUTH) is active (V8.10 and above)

ENHSTAT

0x00020000

ENHANCEDSTATUSCODES SMTP extension supported (V8.10 and above)

PIPELINED

0x00040000

PIPELINING SMTP extension supported (V8.12 and above)

TLS

0x00100000

STARTTLS SMTP extension supported (V8.12 and above)

TLSACT

0x00200000

STARTTLS is active (V8.12 and above)

DLVR_BY

0x00400000

DELIVERBY SMTP extension supported (V8.12 and above)

HELO

0x00800000

Sending sendmail used HELO, so ignore extensions (V8.12 and above)

ONLY_EHLO

0x10000000

Use only EHLO when establishing a connection (V8.12 and above)

After checking to see whether the host is down, sendmail attempts to connect to it for network SMTP mail. If that connect fails, the -d11.1 debugging switch causes the following to be printed:

openmailer: makeconnection => stat=exitstatus, errno=errno

Here, exitstatus is a numerical representation of the reason for the failure, as documented in <sysexits.h>, and errno is the system-level reason for the error, as documented in <errno.h>.

Other errors, such as failure to establish a pipe(2), or failure to fork(2), cause the following to be printed:

openmailer: NULL

This message (although it contains no information) signals that a more descriptive error message was logged with syslog(3) (Section 14.3).

    Previous Section Next Section