Repository
Munin (contrib)
Last change
2020-08-25
Graph Categories
Family
auto
Capabilities
Keywords
Language
Shell

postfix-queue-size

Name

postfix_mailqueue - Plugin to monitor postfix mail spools

About

A guide to postfix mail queue manageent can be found at http://www.postfix.org/QSHAPE_README.html#queues

A summary:

  • maildrop

    Messages that have been submitted via the Postfix sendmail(1) command, but not yet brought into the main Postfix queue by the pickup(8) service.

  • hold

    Messages placed in the “hold” queue stay there until the administrator intervenes

  • incoming

    Inbound mail from the network, or mail picked up by the local pickup(8) daemon from the maildrop directory.

  • active

    Messages that the queue manager has opened for delivery. Only a limited number of messages is allowed to enter the active queue (leaky bucket strategy, for a fixed delivery rate).

  • deferred

    Mail that could not be delivered upon the first attempt. The queue manager implements exponential backoff by doubling the time between delivery attempts.

  • corrupt

    Unreadable or damaged queue files are moved here for inspection.

Configuration

By default “postconf -h queue_directory” is used to determine the spool directory. Is postconf is not available in the $PATH then /var/spool/postfix is assumed. This can be overridden by the “spooldir” environment variable like so:

[postfix_mailqueue]
   env.spooldir /var/spool/postfix

Author

Unknown.

License

Unknown.

Magic Markers

#%# family=auto
#%# capabilities=autoconf
#!/bin/sh
# -*- sh -*-

: << =cut

=head1 NAME

postfix_mailqueue - Plugin to monitor postfix mail spools

=head1 ABOUT

A guide to postfix mail queue manageent can be found at
L<http://www.postfix.org/QSHAPE_README.html#queues>

A summary:

=over 4

=item maildrop

Messages that have been submitted via the Postfix sendmail(1) command,
but not yet brought into the main Postfix queue by the pickup(8)
service.

=item hold

Messages placed in the "hold" queue stay there until the administrator
intervenes

=item incoming

Inbound mail from the network, or mail picked up by the local
pickup(8) daemon from the maildrop directory.

=item active

Messages that the queue manager has opened for delivery. Only a limited number
of messages is allowed to enter the active queue (leaky bucket strategy, for a
fixed delivery rate).

=item deferred

Mail that could not be delivered upon the first attempt. The queue manager
implements exponential backoff by doubling the time between delivery attempts.

=item corrupt

Unreadable or damaged queue files are moved here for inspection.

=back

=head1 CONFIGURATION

By default "postconf -h queue_directory" is used to determine the
spool directory.  Is postconf is not available in the $PATH then
/var/spool/postfix is assumed.  This can be overridden by the
"spooldir" environment variable like so:

 [postfix_mailqueue]
    env.spooldir /var/spool/postfix

=head1 AUTHOR

Unknown.

=head1 LICENSE

Unknown.

=head1 MAGIC MARKERS

=begin comment

These magic markers are used by munin-node-configure when installing
munin-node.

=end comment

 #%# family=auto
 #%# capabilities=autoconf

=cut

# attempt to get spooldir via postconf, but environment overrides.

# Remember that postconf is not available unless postfix is.
POSTCONFSPOOL="$(postconf -h queue_directory 2>/dev/null || echo /var/spool/postfix)"
SPOOLDIR=${spooldir:-$POSTCONFSPOOL}

. $MUNIN_LIBDIR/plugins/plugin.sh

case $1 in
    autoconf|detect)

	if [ -d $SPOOLDIR ] ; then
	    echo yes
	    exit 0
        else
	    echo "no (spooldir not found)"
	    exit 0
        fi;;
    config)
	cat <<'EOF'
graph_title Postfix Queue Size
graph_vlabel KB in Queue
graph_category mail
graph_total Total
active.label active
deferred.label deferred
maildrop.label maildrop
incoming.label incoming
corrupt.label corrupt
hold.label held
EOF
	for field in active deferred maildrop incoming corrupt hold; do
		print_warning $field
		print_critical $field
	done
	exit 0;;
esac

cd $SPOOLDIR >/dev/null 2>/dev/null || {
     echo "# Cannot cd to $SPOOLDIR"
     exit 1
}

cat <<EOF
deferred.value `du -sb $SPOOLDIR/* | grep deferred | awk '{print $1}'`
active.value `du -sb $SPOOLDIR/* | grep active | awk '{print $1}'`
maildrop.value `du -sb $SPOOLDIR/* | grep maildrop | awk '{print $1}'`
incoming.value `du -sb $SPOOLDIR/* | grep incoming | awk '{print $1}'`
corrupt.value `du -sb $SPOOLDIR/* | grep corrupt | awk '{print $1}'`
hold.value `du -sb $SPOOLDIR/* | grep hold | awk '{print $1}'`
EOF