# SmtpMonitor

The SMTP monitor tests for SMTP service availability on a node. The monitor first tries to establish a TCP connection on the specified port. If a connection is established, a service banner should have been received. The monitor makes sure the service banner is a valid SMTP banner (starts with "220"). If the banner is valid, the monitor sends a HELO SMTP command, identifying itself with the hostname of the OpenNMS server, and makes sure the service answers with a valid response (starts with "250"). If the response to the HELO is valid, the monitor issues a QUIT SMTP command. The service is considered available if the service’s answer to the HELO command is valid (starts with "221").

The behaviour can be simulated with `telnet` or `netcat`:

```$nc -v gmail-smtp-in.l.google.com 25 Ncat: Version 7.60 ( https://nmap.org/ncat ) Ncat: Connected to 2607:f8b0:4002:c06::1a:25. 220 mx.google.com ESMTP j17-v6si13545102ywb.87 - gsmtp HELO opennms.com 250 mx.google.com at your service QUIT 221 2.0.0 closing connection j17-v6si13545102ywb.87 - gsmtp``` ## Monitor Facts  Class Name `org.opennms.netmgt.poller.monitors.SmtpMonitor` Remote Enabled true ## Configuration and Use Table 1. Monitor specific parameters for the SmtpMonitor Parameter Description Required Default value `port` TCP port to connect to. optional `25` `retry` Number of attempts to find the service available. optional `0` `timeout` Timeout in milliseconds for the underlying socket’s connect and read operations. optional `3000` ## Examples ``````<service name="SMTP" interval="300000" user-defined="false" status="on"> <parameter key="retry" value="1" /> <parameter key="timeout" value="3000" /> <parameter key="port" value="25" /> <parameter key="rrd-repository" value="${install.share.dir}/rrd/response" />
<parameter key="rrd-base-name" value="smtp" />
<parameter key="ds-name" value="smtp" />
</service>
<monitor service="SMTP" class-name="org.opennms.netmgt.poller.monitors.SmtpMonitor" />``````