mirror of
https://github.com/munin-monitoring/contrib.git
synced 2018-11-08 00:59:34 +01:00
a2c35ad7c2
If there are more than one postfix running, with separate config file, and still use the same main log file, this scripts can create stats split per running postfix instance. Those scripts have not been tested on the new debian multiple postfix infrastructure, only on real separate running postfix services. Except postfix_mailvolume_multi, each plugin needs to be configured per running postfix. For mailqueue* it is the config folder name, for mailstats it is the syslog_name in the config file. mailvolume is also based on the syslog_name, but can do auto config if nothing has been set.
138 lines
3.1 KiB
Bash
Executable file
138 lines
3.1 KiB
Bash
Executable file
#!/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<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
|
|
|
|
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
|
|
|
|
# atempt 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 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 <<EOF
|
|
deferred.value `(test -d deferred && find deferred -type f) | wc -l`
|
|
active.value `(test -d active && find active -type f) | wc -l`
|
|
maildrop.value `(test -d maildrop && find maildrop -type f) | wc -l`
|
|
incoming.value `(test -d incoming && find incoming -type f) | wc -l`
|
|
corrupt.value `(test -d corrupt && find corrupt -type f) | wc -l`
|
|
hold.value `( test -d hold && find hold -type f) | wc -l`
|
|
EOF
|