I've been taking a look at what it would take to add some monitoring to James. I think it would be useful to base James monitoring on the SNMP MTA MIB as defined in RFC 2789 (http://www.ietf.org/rfc/rfc2789.txt?number=2789). I'll briefly summarise the data structures defined in the RFC. Firstly, there is a top-level structure for the MTA as a whole called mtaEntry, this contains the following fields:
mtaReceivedMessages mtaStoredMessages mtaTransmittedMessages mtaReceivedVolume mtaStoredVolume mtaTransmittedVolume mtaReceivedRecipients mtaStoredRecipients mtaTransmittedRecipients mtaSuccessfulConvertedMessages mtaFailedConvertedMessages mtaLoopsDetected Following this there is a table of 'group' entries each called mtaGroupEntry, where a group can be anything we define it to be. Groups can also be hierarchic, so there might be one group called "Queues" and this could have children such as "Spool Queue", "Outgoing Queue" and there might be another group called "Processors" with children "root", "transport", "error", "spam" etc. The following is a partial list of the group fields: mtaGroupIndex mtaGroupName mtaGroupDescription mtaGroupMailProtocol ... mtaGroupReceivedMessages mtaGroupRejectedMessages mtaGroupStoredMessages mtaGroupTransmittedMessages ... mtaGroupReceivedVolume mtaGroupStoredVolume mtaGroupTransmittedVolume ... mtaGroupReceivedRecipients mtaGroupStoredRecipients mtaGroupTransmittedRecipients ... mtaGroupOldestMessageStored ... mtaGroupLastInboundActivity mtaGroupLastOutboundActivity ... Not all fields need be used by all groups. Value fields within groups may or may not be additive. So the mtaGroupStoredMessages value for "Spool Queue" and "Outgoing Queue" would be accumulated in the mtaGroupStoredMessages value of their parent group "Queues" to show the total number of messages currently queued. But the mtaGroupReceivedMessages field of the Processor children need not accumulate in the "Processor" record. Likewise the group records may or may not accumulate into the top level mtaEntry record. So does it seem to the members of this list like a good idea to base James monitoring on these basic structures?