#!/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 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 # atempt 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 Mailqueue graph_vlabel Mails in queue graph_category postfix 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 <