11.6 Printing the QueueWhen sendmail is run under the name mailq, or when it is given the -bp command-line switch, it prints the contents of the queue and exits. Before printing the queue's contents, sendmail prereads all the qf files in the queue and sorts the mail messages internally. This is done so that the queue's contents are displayed in the same order in which the messages will be processed during a queue run. If there are no messages in the queue (no qf files), sendmail prints the following message and exits or, if there are multiple queues, goes on to the next queue: /path is empty Here, /path is the full pathname of the queue directory. If the queue is not empty, sendmail prints the number of messages (number of qf files) in the queue: /path (num requests) The num is the number of queued messages (requests) in the queue directory. If this is more than the maximum number of messages that can be processed at one time (defined by the MaxQueueRunSize option (MaxQueueRunSize),[9] sendmail prints:
/path (num requests, only ## printed) The ## is the value of the MaxQueueRunSize option. Note that it can take several minutes to presort and print extremely full queues (queues with more than 10,000 messages in them). To see how many messages are queued, and to avoid the delay of a presort, you can add a small MaxQueueRunSize to your invocation of mailq: % mailq -OMaxQueueRunSize=1 This will cause sendmail to swiftly print the number of queued messages, regardless of how many are queued. After sendmail prints the number of messages in the queue, it prints an attractive heading such as the following: ----Q-ID---- --Size-- -----Q-Time----- ------------Sender/Recipient------------ dB928Xl04182 354 Fri Mar 15 08:32 your@your.domain george@wash.dc.gov dB928RR04181* 1972 Fri Mar 15 08:45 your@your.domain 8BITMIME (Timed out waiting to connect to wash.dc.gov) jefferson@wash.dc.gov dB928RR04192- 23 Fri Mar 15 09:32 your@your.domain (Timed out waiting to connect to wash.dc.gov) jefferson@wash.dc.gov bob The heading shows the information that is printed about each message in the queue. The items in that heading and their meanings are as follows:
See Section 11.8.2.3 for a way to limit the printed queue list to include only a subset of messages based on queue ID, sender, or recipient addresses. 11.6.1 Printing the Queue in Verbose ModeThe -v command-line switch can be used in combination with the -bp switch to cause sendmail to also print additional details about the queued messages. To begin, the usual heading shows a new item: ----Q-ID---- --Size-- -Priority- -----Q-Time----- ---------Sender/Recipient--------- dB928Xl04182 354 54320 Fri Mar 15 08:32 your@your.domain george@wash.dc.gov dB928RR04181* 1972 39020 Fri Mar 15 08:45 your@your.domain 8BITMIME (Timed out waiting to connect to wash.dc.gov) jefferson@wash.dc.gov dB928RR04192- 23 30001+Fri Mar 15 09:32 your@your.domain (Timed out waiting to connect to wash.dc.gov) jefferson@wash.dc.gov (---you---) bob The Priority is the value from the P line (P line) in the qf file. Printing the queue does not change a message's priority, whereas processing the queue does. See the RecipientFactor option (RecipientFactor) for a description of how the priority is calculated. Verbose mode also causes a + to print after the Priority (as in the third item in the example) if a warning message has been sent. See the Timeout.queuewarn option (Timeout) for a description of how messages time out. If any R line is preceded by a controlling user (the C line in the qf file, C line), verbose mode causes that controlling user's name to be put in parentheses and prepended to the recipient name. The third item in the preceding example illustrates this. Prior to V8.8 sendmail, the M line error messages were truncated to 60 characters. Beginning with V8.8, verbose mode causes the full, nontruncated text of the M line error to be printed. 11.6.2 Print the Number of Messages in the QueueBeginning with V8.12 sendmail the -bP command-line switch can be used to print the number of messages in the queue or queues. This command-line switch relies on shared memory to gather its information, so it works only if sendmail is compiled with shared memory support. The SM_CONF_SHM compile-time macro determines whether shared memory support was included (see SM_CONF_SHM). If shared memory support is not included, use of this command-line switch will cause the following error to be printed: Data unavailable without shared memory support If shared memory support is compiled in, but there is a problem with it (possibly at the system level), the following error will print: Data unavailable: shared memory not updated Note that you will also get this error if the queue has not been processed at least once to initialize the data. In addition to enabling shared memory using the SM_CONF_SHM m4 Build macro, you must also define a key to be used with that shared memory with the SharedMemoryKey option. To set this option in your configuration file, you could add a line such as the following to your mc configuration file: define(`confSHARED_MEMORY_KEY',`13521') If all goes well, the -bP command-line switch will produce output such as this: /var/spool/mqueues/q.1/df: entries=34 /var/spool/mqueues/q.2/df: entries=51 Total requests: 85 Here, 85 is the number of envelopes currently awaiting delivery in sendmail's queues. But note that some shared memory timeouts can lead to an inexact count. In this latter event the output looks like this: Total requests: 85 (about) If you lack shared memory support, and you are running pre-V8.12 sendmail, you can still summarize the number of messages in all queues with a simple substitute command: % mailq -OMaxQueueRunSize=0 |