From: Vsevolod Stakhov Date: Fri, 6 Aug 2021 15:37:30 +0000 (+0100) Subject: [Minor] Mx_check: Fix issue with multiple IPs per MX name X-Git-Tag: 3.0~38 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=ae794569d7722c2b59bd2c4468cf41dae1d14121;p=rspamd.git [Minor] Mx_check: Fix issue with multiple IPs per MX name Issue: #3839 --- 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)