From ae794569d7722c2b59bd2c4468cf41dae1d14121 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Fri, 6 Aug 2021 16:37:30 +0100 Subject: [PATCH] [Minor] Mx_check: Fix issue with multiple IPs per MX name Issue: #3839 --- src/plugins/lua/mx_check.lua | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/src/plugins/lua/mx_check.lua b/src/plugins/lua/mx_check.lua index e131d16d4..c88aa5601 100644 --- a/src/plugins/lua/mx_check.lua +++ b/src/plugins/lua/mx_check.lua @@ -152,24 +152,23 @@ local function mx_check(task) check_results(mxes) end - if err or not results then + if err or not results or #results == 0 then mxes[name].checked = true else - -- Try to open TCP connection to port 25 - - for _,res in ipairs(results) do - local t_ret = rspamd_tcp.new({ - task = task, - host = res:to_string(), - callback = io_cb, - on_connect = on_connect_cb, - timeout = settings.timeout, - port = 25 - }) + -- Try to open TCP connection to port 25 for a random IP address + -- see #3839 on GitHub + lua_util.shuffle(results) + local t_ret = rspamd_tcp.new({ + task = task, + host = results[1]:to_string(), + callback = io_cb, + on_connect = on_connect_cb, + timeout = settings.timeout, + port = 25 + }) - if not t_ret then - mxes[name].checked = true - end + if not t_ret then + mxes[name].checked = true end end check_results(mxes) -- 2.39.5