If you are having problems with the qmailstats script running successfully because you are getting an error similar to:
awk: cmd. line:60:
(FILENAME=- FNR=15420) fatal: division
by zero attempted
The problem is the zoverall script of qmailanalog. For some reason the duration in days is always zero. Until this is fixed or I decide to fix it and create a patch, you can use the attached file as a drop-in replacement.
MST
#!/bin/sh # WARNING: This file was auto-generated. Do not edit! echo 'Qmail Statistics
qtime is the time spent by a message in the queue. ddelay is the latency for a successful delivery to one recipient---the end of successful delivery, minus the time when the message was queued. xdelay is the latency for a delivery attempt---the time when the attempt finished, minus the time when it started. The average concurrency is the total xdelay for all deliveries divided by the time span; this is a good measure of how busy the mailer is. ' awk ' BEGIN { messages = 0 recips = 0 tries = 0 deliveries = 0 succ = 0 fail = 0 mbytes = 0 rbytes = 0 } /^m/ { ++messages mbytes += $4 rbytes += $4 * $5 qtime += $3 - $2 recips += $5 + $6 tries += $5 + $6 + $7 if (!seen || ($2 < first)) first = $2 if (!seen || ($3 > last)) last = $3 seen = 1 } /^d k/ { ++succ; ddelay += $5 - $3 } /^d d/ { ++fail } /^d/ { ++deliveries xdelay += $5 - $4 if (!seen || ($3 < first)) first = $3 if (!seen || ($5 > last)) last = $5 seen = 1 } END { print "Completed messages: ", messages if (messages) { print "Recipients for messages: ", recips print "Total attempts for messages: ", tries print "Average attempts per message: ", tries / messages print "Bytes in messages: ", mbytes print "Bytes weighted by success: ", rbytes print "Average message qtime (s): ", qtime / messages } print "" print "Total delivery attempts: ", deliveries if (deliveries) { print " success: ", succ print " failure: ", fail print " deferral: ", deliveries - succ - fail str = sprintf("%.6f",ddelay) print "Total ddelay (s): ", str if (succ) { str = sprintf("%.6f",ddelay / succ) print "Avg ddelay per success (s): ", str } str = sprintf("%.6f",xdelay) print "Total xdelay (s): ", str str = sprintf("%.6f",xdelay / deliveries) print "Avg xdelay per attempt (s): ", str if (last > first) { print "Time span (days): ", (last - first) / 86400 } if ((last - first) > 0) { print "Average concurrency: ", xdelay / (last - first) } } } '