There are a number of fine stand-alone mail statistics generating packages out there, most based on RRD. We, however, are happily using ganglia to aggregate and display statistics in a dashboard. Here’s the quick and dirty patch to take the simple mailgraph perl script and transform it into a gmetric data source:

--- mailgraph.pl        2007-08-29 09:06:01.000000000 +0000
+++ mailgraph-ganglia.pl        2009-05-09 17:21:52.000000000 +0000
@@ -871,15 +871,13 @@
        return 0 if $m < $this_minute;

        print "update $this_minute:$sum{sent}:$sum{received}:$sum{bounced}:$sum{rejected}:$sum{virus}:$sum{spam}\n" if $opt{verbose};
-       RRDs::update $rrd, "$this_minute:$sum{sent}:$sum{received}:$sum{bounced}:$sum{rejected}" unless $opt{'only-virus-rrd'};
-       RRDs::update $rrd_virus, "$this_minute:$sum{virus}:$sum{spam}" unless $opt{'only-mail-rrd'};
-       if($m > $this_minute+$rrdstep) {
-               for(my $sm=$this_minute+$rrdstep;$sm< $m;$sm+=$rrdstep) {
-                       print "update $sm:0:0:0:0:0:0 (SKIP)\n" if $opt{verbose};
-                       RRDs::update $rrd, "$sm:0:0:0:0" unless $opt{'only-virus-rrd'};
-                       RRDs::update $rrd_virus, "$sm:0:0" unless $opt{'only-mail-rrd'};
-               }
-       }
+        system("gmetric -c /etc/gmond.conf --name=mail_sent --value=$sum{sent} --type=int8 --units=messages");
+        system("gmetric -c /etc/gmond.conf --name=mail_received --value=$sum{received} --type=int8 --units=messages");
+        system("gmetric -c /etc/gmond.conf --name=mail_bounced --value=$sum{bounced} --type=int8 --units=messages");
+        system("gmetric -c /etc/gmond.conf --name=mail_rejected --value=$sum{rejected} --type=int8 --units=messages");
+        system("gmetric -c /etc/gmond.conf --name=mail_virus --value=$sum{virus} --type=int8 --units=messages");
+        system("gmetric -c /etc/gmond.conf --name=mail_spam --value=$sum{spam} --type=int8 --units=messages");
+
        $this_minute = $m;
        $sum{sent}=0;
        $sum{received}=0;

I’m sure there are plenty of other ways to do this, but this seems like the most straightforward.