diff --git a/functions.tf b/functions.tf
index 0c8990c299da85a5157c8f8ddca449ca9e3f8f8f..dd3c36ca52a60a2886cb74e668fc297dbd6c9a3d 100644
--- a/functions.tf
+++ b/functions.tf
@@ -15,6 +15,7 @@ locals {
     "vouch",
     "ssh",
     "smtp",
+    "imap",
   ]
   function_names = [for name in local.functions : "${local.function_name_prefix}-${replace(name, "_", "")}"]
 }
diff --git a/src/imap.py b/src/imap.py
new file mode 100644
index 0000000000000000000000000000000000000000..f967ed73de9ebab1bf87b45bbf5ecae89b5bc6b2
--- /dev/null
+++ b/src/imap.py
@@ -0,0 +1,29 @@
+from imaplib import IMAP4_SSL
+from utils import publish
+
+
+def check_imap():
+    """Check the IMAP port."""
+    try:
+        imap = IMAP4_SSL("imap.shore.co.il", 993)
+        if "AUTH=PLAIN" not in imap.capabilities:
+            return [False, "AUTH not in IMAP capabilities."]
+        if imap.noop()[0] != "OK":
+            return [False, "NOOP failed in IMAP connection."]
+        imap.logout()
+    except Exception as e:  # pylint: disable=broad-except,invalid-name
+        print(str(e))
+        return [False, "IMAP failure."]
+    return [True, "IAMP is OK."]
+
+
+def handler(event, context):  # pylint: disable=unused-argument
+    """Lambda event handler."""
+    success, message = check_imap()
+    print(message)
+    if not success:
+        publish(message)
+
+
+if __name__ == "__main__":
+    handler("event", "context")