#!/bin/sh # -*- sh -*- : << =cut =head1 NAME postfix_mailqueue_ - Plugin to monitor postfix mail spools per running postfix =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 Uses the last part of the symlink name to get the postfix queue directory for the config file. It then extract the queue path from the configuration file and uses it as a spooldir. A environment spooldir can be set as a fallback. [postfix_mailqueue] env.spooldir /var/spool/postfix =head1 AUTHOR Unknown. Extended to multiple queue use by Clemens Schwaighofer (gullevek@gullevek.org) in 2010. =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. CONFIG=${0##*postfix_mailqueue_} CONFIG="/etc/"$CONFIG"/" POSTCONFSPOOL="$(postconf -c $CONFIG -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) echo "graph_title Postfix Mailqueue $CONFIG"; cat <<'EOF' graph_vlabel Mails 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 active.draw AREA deferred.draw STACK maildrop.draw STACK incoming.draw STACK corrupt.draw STACK hold.draw STACK 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 <