diff --git a/reg-tests/mailers/k_healthcheckmail.lua b/reg-tests/mailers/k_healthcheckmail.lua
new file mode 100644
index 0000000..9c75877
--- /dev/null
+++ b/reg-tests/mailers/k_healthcheckmail.lua
@@ -0,0 +1,105 @@
+
+local vtc_port1 = 0
+local mailsreceived = 0
+local mailconnectionsmade = 0
+local healthcheckcounter = 0
+
+core.register_action("bug", { "http-res" }, function(txn)
+	data = txn:get_priv()
+	if not data then
+		data = 0
+	end
+	data = data + 1
+	print(string.format("set to %d", data))
+	txn.http:res_set_status(200 + data)
+	txn:set_priv(data)
+end)
+
+core.register_service("luahttpservice", "http", function(applet)
+	local response = "?"
+	local responsestatus = 200
+       if applet.path == "/setport" then
+		vtc_port1 = applet.headers["vtcport1"][0]
+		response = "OK"
+	end
+	if applet.path == "/svr_healthcheck" then
+		healthcheckcounter = healthcheckcounter + 1
+		if healthcheckcounter < 2 or healthcheckcounter > 6 then
+			responsestatus = 403
+		end
+	end
+
+	applet:set_status(responsestatus)
+       if applet.path == "/checkMailCounters" then
+		response = "MailCounters"
+		applet:add_header("mailsreceived", mailsreceived)
+		applet:add_header("mailconnectionsmade", mailconnectionsmade)
+	end
+	applet:start_response()
+	applet:send(response)
+end)
+
+core.register_service("fakeserv", "http", function(applet)
+	applet:set_status(200)
+	applet:start_response()
+end)
+
+function RecieveAndCheck(applet, expect)
+	data = applet:getline()
+	if data:sub(1,expect:len()) ~= expect then
+		core.Info("Expected: "..expect.." but got:"..data:sub(1,expect:len()))
+		applet:send("Expected: "..expect.." but got:"..data.."\r\n")
+		return false
+	end
+	return true
+end
+
+core.register_service("mailservice", "tcp", function(applet)
+	core.Info("############# Mailservice Called #############")
+	mailconnectionsmade = mailconnectionsmade + 1
+	applet:send("220 Welcome\r\n")
+	local data
+
+	if RecieveAndCheck(applet, "EHLO") == false then
+		return
+	end
+	applet:send("250 OK\r\n")
+	if RecieveAndCheck(applet, "MAIL FROM:") == false then
+		return
+	end
+	applet:send("250 OK\r\n")
+	if RecieveAndCheck(applet, "RCPT TO:") == false then
+		return
+	end
+	applet:send("250 OK\r\n")
+	if RecieveAndCheck(applet, "DATA") == false then
+		return
+	end
+	applet:send("354 OK\r\n")
+	core.Info("#### Send your mailbody")
+	local endofmail = false
+	local subject = ""
+	while endofmail ~= true do
+		data = applet:getline() -- BODY CONTENT
+		--core.Info(data)
+		if data:sub(1, 9) == "Subject: " then
+			subject = data
+		end
+		if (data == "\r\n") then
+			data = applet:getline() -- BODY CONTENT
+			core.Info(data)
+			if (data == ".\r\n") then
+				endofmail = true
+			end
+		end
+	end
+	core.Info("#### Body recieved OK")
+	applet:send("250 OK\r\n")
+
+	if RecieveAndCheck(applet, "QUIT") == false then
+		return
+	end
+	applet:send("221 Mail queued for delivery to /dev/null \r\n")
+	core.Info("Mail queued for delivery to /dev/null subject: "..subject)
+	mailsreceived = mailsreceived + 1
+end)
