From afa6fb1b01588db1ee140ed58412f766290092d4 Mon Sep 17 00:00:00 2001 From: Adar Nimrod <nimrod@shore.co.il> Date: Sat, 1 May 2021 00:11:49 +0300 Subject: [PATCH] Add SMTP checks. --- functions.tf | 1 + src/smtp.py | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 src/smtp.py diff --git a/functions.tf b/functions.tf index c5e13e3..0c8990c 100644 --- a/functions.tf +++ b/functions.tf @@ -14,6 +14,7 @@ locals { "transmission", "vouch", "ssh", + "smtp", ] function_names = [for name in local.functions : "${local.function_name_prefix}-${replace(name, "_", "")}"] } diff --git a/src/smtp.py b/src/smtp.py new file mode 100644 index 0000000..3b0509b --- /dev/null +++ b/src/smtp.py @@ -0,0 +1,34 @@ +from smtplib import SMTP +from utils import publish + + +def check_smtp(port): + """Check the SMTP port.""" + try: + smtp = SMTP("smtp.shore.co.il", port) + ehlo = smtp.ehlo() + if ehlo[0] != 250 or "LOGIN" in ehlo[1].decode().split(): + return [False, f"First EHLO on port {port} failed."] + if smtp.starttls() != (220, b"TLS go ahead"): + return [False, f"STARTTLS on port {port} failed."] + ehlo = smtp.ehlo() + if ehlo[0] != 250 or "LOGIN" not in ehlo[1].decode().split(): + return [False, f"Second EHLO on port {port} failed."] + smtp.close() + except Exception as e: # pylint: disable=broad-except,invalid-name + print(str(e)) + return [False, f"SMTP failure on port {port}."] + return [True, f"SMTP on port {port} is OK."] + + +def handler(event, context): # pylint: disable=unused-argument + """Lambda event handler.""" + for port in [25, 587]: + success, message = check_smtp(port) + print(message) + if not success: + publish(message) + + +if __name__ == "__main__": + handler("event", "context") -- GitLab