QSHAPE(1) General Commands Manual QSHAPE(1)
qshape – Print Postfix queue domain and age distribution
qshape [-s] [-p] [-m min_subdomains] [-b bucket_count] [-t bucket_time] [-l] [-w terminal_width] [-N batch_msg_count] [-n batch_top_domains] [-c config_directory] [queue_name …]
The qshape program helps the administrator understand the Postfix queue
message distribution in time and by sender domain or recipient domain.
The program needs read access to the queue directories and queue files,
so it must run as the superuser or the mail_owner specified in main.cf
-s Display the sender domain distribution instead of the recipient
domain distribution. By default the recipient distribution is
displayed. There can be more recipients than messages, but as
each message has only one sender, the sender distribution is a
-p Generate aggregate statistics for parent domains. Top level
domains are not shown, nor are domains with fewer than min_sub‐
domains subdomains. The names of parent domains are shown with a
leading dot, (e.g. .example.com).
When used with the -p option, sets the minimum subdomain count
needed to show a separate line for a parent domain. The default
The age distribution is broken up into a sequence of geometri‐
cally increasing intervals. This option sets the number of
intervals or “buckets”. Each bucket has a maximum queue age that
is twice as large as that of the previous bucket. The last
bucket has no age limit.
The age limit in minutes for the first time bucket. The default
value is 5, meaning that the first bucket counts messages
between 0 and 5 minutes old.
-l Instead of using a geometric age sequence, use a linear age
sequence, in other words simple multiples of bucket_time.
This feature is available in Postfix 2.2 and later.
The output is right justified, with the counts for the last
bucket shown on the 80th column, the terminal_width can be
adjusted for wider screens allowing more buckets to be displayed
without truncating the domain names on the left. When a row for
a full domain name and its counters does not fit in the speci‐
fied number of columns, only the last 17 bytes of the domain
name are shown with the prefix replaced by a ‘+’ character.
Truncated parent domain rows are shown as ‘.+’ followed by the
last 16 bytes of the domain name. If this is still too narrow to
show the domain name and all the counters, the terminal_width
limit is violated.
When the output device is a terminal, intermediate results are
shown each “batch_msg_count” messages. This produces usable
results in a reasonable time even when the deferred queue is
large. The default is to show intermediate results every 1000
When reporting intermediate or final results to a termainal,
report only the top “batch_top_domains” domains. The default
limit is 20 domains.
The main.cf configuration file is in the named directory instead
of the default configuration directory.
By default qshape displays the combined distribution of the
incoming and active queues. To display a different set of
queues, just list their directory names on the command line.
Absolute paths are used as is, other paths are taken relative to
the main.cf queue_directory parameter setting. While main.cf
supports the use of $variable expansion in the definition of the
queue_directory parameter, the qshape program does not. If you
must use variable expansions in the queue_directory setting, you
must specify an explicit absolute path for each queue subdirec‐
tory even if you want the default incoming and active queue dis‐
mailq, List all messages in the queue.
QSHAPE_README Examples and background material.
$config_directory/main.cf, Postfix installation parameters.
$queue_directory/maildrop/, local submission directory.
$queue_directory/incoming/, new message queue.
$queue_directory/hold/, messages waiting for tech support.
$queue_directory/active/, messages scheduled for delivery.
$queue_directory/deferred/, messages postponed for later delivery.
The Secure Mailer license must be distributed with this software.