mdata = tostring(mdata)
end
if string.sub(mdata, 1, 1) ~= wantcode then
- callback(false, string.format('bad smtp responce on stage %s: "%s" when "%s" expected',
+ callback(false, string.format('bad smtp response on stage %s: "%s" when "%s" expected',
stage, mdata, wantcode))
if conn then
conn:close()
end
end
- -- HELLO stage
+ -- HELO stage
local function hello_cb(merr)
if no_error_write(merr) then
conn:add_read(hello_done_cb, CRLF)
local exclude_domains
local E = {}
+local CRLF = '\r\n'
local function mx_check(task)
local ip_addr = task:get_ip()
return function(_, _, results, err)
mxes[name].ips = results
- local function io_cb(io_err)
+ local function io_cb(io_err, _, conn)
if io_err then
mxes[name].checked = true
+ conn:close()
else
mxes[name].checked = true
mxes[name].working = true
valid = true
end
check_results(mxes)
+ conn:add_write(function(_)
+ conn:close()
+ end, string.format('QUIT%s', CRLF))
end
local function on_connect_cb(conn)
if err then
mxes[name].checked = true
+ conn:close()
+ check_results(mxes)
else
mxes[name].checked = true
valid = true
mxes[name].working = true
end
- conn:close()
- check_results(mxes)
end
if err or not results or #results == 0 then
task = task,
host = results[1]:to_string(),
callback = io_cb,
+ stop_pattern = CRLF,
on_connect = on_connect_cb,
timeout = settings.timeout,
port = 25