Enabling SNMP support in Amavisd-new
If there’s a short and sweet installation document for enabling SNMP support in Amavisd-new, I seem to have failed searching for it today. Instead I made my own, partially for documenting my own setup and partially for the benefit of others.
This brief installation document assumes you’re running a Ubuntu or Debian system. It will also assume that your Amavisd-new service is installed and running as one should expect.
First, install the programs and its dependencies. The Amavisd-new SNMP subagent metrics are available through the regular Net-SNMP software suite. Note: The /etc/default/amavisd-snmp-subagent
file says it needs libnet-snmp-perl
, but it will also require the libsnmp-perl
package.
# apt-get install libnet-snmp-perl libsnmp-perl snmp-mibs-downloader snmp snmpd
Then, download all the MIBs you’ll need (and a few more). Due to distribution restrictions Debian-based systems provide a separate downloader which will save the MIBs to where they should be.
# download-mibs Downloading documents and extracting MIB files. This will take some minutes. [...]
When the download process has completed, allow the snmp server and the snmp agent to locate and use the MIBs by commenting out or removing the appropriate lines (in italic) in /etc/default/snmpd
and /etc/snmp/snmp.conf
respectively:
File: /etc/default/snmpd
# This file controls the activity of snmpd # Don't load any MIBs by default. # You might comment this lines once you have the MIBs downloaded. # export MIBS=
and
File: /etc/snmp/snmp.conf
# As the snmp packages come without MIB files due to license reasons, loading # of MIBs is disabled by default. If you added the MIBs you can reenable # loading them by commenting out the following line. # mibs :
For MIB support for the Amavisd-new metrics (yes you want this), download the AMAVIS-MIB file into the directory /usr/share/snmp/mibs/
:
# wget https://amavis.org/AMAVIS-MIB.txt -O /usr/share/snmp/mibs/AMAVIS-MIB.txt
Enable the Amavisd-new SNMP agent by configuring its default setting file:
File: /etc/default/amavisd-snmp-subagent
# To enable the amavis-snmp-subagent set ENABLED to yes ENABLED="yes"
The Amavisd-new SNMP subagent will register a couple of OIDs with SNMPd using the AgentX protocol. Below is parts of the output from a debug run, indicating which OIDs it will register with SNMPd.
NET-SNMP version 5.7.3 AgentX subagent connected registering root OID 1.3.6.1.4.1.15312.2.1.1 for am.snmp registering root OID 1.3.6.1.4.1.15312.2.1.2 for am.nanny registering root OID 1.3.6.1.4.1.15312.2.1.3.1.1 for pf.maildrop registering root OID 1.3.6.1.4.1.15312.2.1.3.1.2 for pf.incoming registering root OID 1.3.6.1.4.1.15312.2.1.3.1.3 for pf.active registering root OID 1.3.6.1.4.1.15312.2.1.3.1.4 for pf.deferred
So we will need to tell SNMPd that these should be available. We do that by adding the following line, with an OID base covering all of the above, to /etc/snmp/snmpd.conf
:
view systemonly included .1.3.6.1.4.1.15312.2.1
Finally, (re)start all the services involved.
# service snmpd restart # service amavis restart # service amavisd-snmp-subagent restart
After a short while you should be able to read Amavis statistics over SNMP!
# snmpwalk -m +AMAVIS-MIB -c public -v2c 127.0.0.1 1.3.6.1.4.1.15312.2.1 [...] AMAVIS-MIB::inMsgs.0 = Counter32: 41 AMAVIS-MIB::inMsgsOpenRelay.0 = Counter32: 41 AMAVIS-MIB::inMsgsStatusAccepted.0 = Counter32: 35 AMAVIS-MIB::inMsgsStatusRejected.0 = Counter32: 6 AMAVIS-MIB::inMsgsSize.0 = Counter64: 456221 AMAVIS-MIB::inMsgsSizeOpenRelay.0 = Counter64: 456221 AMAVIS-MIB::inMsgsRecips.0 = Counter32: 41 AMAVIS-MIB::inMsgsRecipsOpenRelay.0 = Counter32: 41 AMAVIS-MIB::inMsgsBounce.0 = Counter32: 9 AMAVIS-MIB::inMsgsBounceNullRPath.0 = Counter32: 2 AMAVIS-MIB::inMsgsBounceUnverifiable.0 = Counter32: 9 AMAVIS-MIB::outMsgs.0 = Counter32: 15 AMAVIS-MIB::outMsgsSubmit.0 = Counter32: 15 AMAVIS-MIB::outMsgsSubmitQuar.0 = Counter32: 9 AMAVIS-MIB::outMsgsSubmitNotif.0 = Counter32: 6 AMAVIS-MIB::outMsgsProtoLocal.0 = Counter32: 9 AMAVIS-MIB::outMsgsProtoLocalSubmit.0 = Counter32: 9 AMAVIS-MIB::outMsgsProtoSMTP.0 = Counter32: 6 AMAVIS-MIB::outMsgsProtoSMTPSubmit.0 = Counter32: 6 AMAVIS-MIB::outMsgsDelivers.0 = Counter32: 15 AMAVIS-MIB::outMsgsSize.0 = Counter64: 87735 AMAVIS-MIB::outMsgsSizeSubmit.0 = Counter64: 87735 AMAVIS-MIB::outMsgsSizeSubmitQuar.0 = Counter64: 87729 AMAVIS-MIB::outMsgsSizeSubmitNotif.0 = Counter64: 6 AMAVIS-MIB::outMsgsSizeProtoLocal.0 = Counter64: 87729 AMAVIS-MIB::outMsgsSizeProtoLocalSubmit.0 = Counter64: 87729 AMAVIS-MIB::outMsgsSizeProtoSMTP.0 = Counter64: 6 AMAVIS-MIB::outMsgsSizeProtoSMTPSubmit.0 = Counter64: 6 AMAVIS-MIB::quarMsgs.0 = Counter32: 9 AMAVIS-MIB::quarBadHdrMsgs.0 = Counter32: 3 AMAVIS-MIB::quarSpamMsgs.0 = Counter32: 6 AMAVIS-MIB::quarMsgsSize.0 = Counter64: 87729 AMAVIS-MIB::quarBadHdrMsgsSize.0 = Counter64: 8273 AMAVIS-MIB::quarSpamMsgsSize.0 = Counter64: 79456 AMAVIS-MIB::contentCleanMsgs.0 = Counter32: 32 AMAVIS-MIB::contentCleanMsgsOpenRelay.0 = Counter32: 32 AMAVIS-MIB::contentBadHdrMsgs.0 = Counter32: 3 AMAVIS-MIB::contentBadHdrMsgsOpenRelay.0 = Counter32: 3 AMAVIS-MIB::contentSpamMsgs.0 = Counter32: 6 AMAVIS-MIB::contentSpamMsgsOpenRelay.0 = Counter32: 6 AMAVIS-MIB::outConnNew.0 = Counter32: 6 [...]
You should now be able to throw different kinds of monitoring software on Amavisd-new.