]> git.siccegge.de Git - dane-monitoring-plugins.git/blobdiff - check_dane_smtp
Properly send EHLO after TLS
[dane-monitoring-plugins.git] / check_dane_smtp
index 3358c711b4215baade2045375d343d618a66312f..c63cfed4f47c25804f575a29ae642000aa54edb1 100755 (executable)
@@ -9,8 +9,9 @@ import argparse
 import logging
 
 from socket import socket, AF_INET6, AF_INET, create_connection
-from ssl import SSLContext, PROTOCOL_TLSv1_2, CERT_REQUIRED, cert_time_to_seconds, SSLError, CertificateError, create_default_context
-from unbound import ub_ctx, ub_strerror
+from ssl import SSLError, CertificateError, SSLContext
+from ssl import PROTOCOL_TLSv1_2, CERT_REQUIRED
+from unbound import ub_ctx
 
 from check_dane.tlsa import verify_tlsa_record
 from check_dane.cert import verify_certificate, add_certificate_options
@@ -23,6 +24,12 @@ def init_connection(sslcontext, args):
         connection = sslcontext.wrap_socket(socket(AF_INET),
                                             server_hostname=host)
         connection.connect((host, port))
+        answer = connection.recv(512)
+        logging.debug(answer)
+
+        connection.send(b"EHLO localhost\r\n")
+        answer = connection.recv(512)
+        logging.debug(answer)
 
     else:
         port = 25 if args.port == 0 else args.port
@@ -42,6 +49,10 @@ def init_connection(sslcontext, args):
         connection = sslcontext.wrap_socket(connection, server_hostname=host)
         connection.do_handshake()
 
+        connection.send(b"EHLO localhost\r\n")
+        answer = connection.recv(512)
+        logging.debug(answer)
+
     return connection
 
 
@@ -121,7 +132,8 @@ def main():
         return 2
 
     retval = verify_certificate(connection.getpeercert(), args)
-    nretval = verify_tlsa_record(resolver, "_%d._tcp.%s" % (port, host), connection.getpeercert(binary_form=True))
+    nretval = verify_tlsa_record(resolver, "_%d._tcp.%s" % (port, host),
+                                 connection.getpeercert(binary_form=True))
     retval = max(retval, nretval)
 
     close_connection(connection)