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


Previous Section Next Section

-d41.1

Trace queue ordering Debug command-line switch

The -d41.1 (a.k.a. -d41) debugging switch causes sendmail to print its ordering of the queue. First it prints:

gatherq::
        QueueLimitId = !qid if -qI used  
        QueueLimitSender = !address if -qS used  
        QueueLimitRecipient = !address if -qR used  

See Section 11.8.2.3 for an explanation of how the -qI, -qS, and -qR command-line switches can limit the scope of a queue run. If none of them was specified, only gatherq: is printed. The -d41.1 debugging switch is extremely handy for previewing the effect of the -qI, -qS, and -qR command-line switches. When combined with -bp (mailq), these switches limit the queue listing and thus preview the effect of a limited queue run:

# mailq
                /var/spool/mqueues/q.2/df (1 request)
-----Q-ID----- --Size-- -----Q-Time----- ------------Sender/Recipient-----------
g7PJQTbL027814      107 Sun Aug 25 13:26 you
                 (Deferred: Connection timed out with host.domain)
                                         user@host.domain
# mailq -d41.1 -qI27814
gatherq:
        QueueLimitId = 27814
                /var/spool/mqueues/q.2/df (1 request)
-----Q-ID----- --Size-- -----Q-Time----- ------------Sender/Recipient-----------
g7PJQTbL027814      107 Sun Aug 25 13:26 you
                 (Deferred: Connection timed out with host.domain)
                                         user@host.domain

Note that you may combine debugging command-line switches with queue processing commands only if you are root. If you are not, the following error is printed and debugging is turned off:

WARNING: Cannot use -d with -q.  Disabling debugging.

The -d41.1 debugging switch also traces the growth of the queue working list. Every time the limit of that list is reached, the internal routine grow_wlist( ) is called to extend the list size by QUEUESEGSIZE (where QUEUESEGSIZE is described in QUEUESEGSIZE):

grow_wlist: WorkListSize=currentsize
grow_wlist: WorkListSize now newsize

If the log level is set to greater than 1 (see the LogLevel option, LogLevel), the following is also logged each time the list size grows:

grew WorkList for qdirectory to newsize 

If the size could not be increased (because the program reached the limit of available memory) and if the LogLevel option is greater than zero, sendmail will log this error at LOG_ALERT:

FAILED to grow WorkList for qdirectory to newsize 

This message will repeat until there are no more queue entries to process after the limit is received. However, all the files that are already in the work list will be processed, so presumably the next run will catch the failed messages.

    Previous Section Next Section