From 076ca2c763876307b45980a52db420af96fff629 Mon Sep 17 00:00:00 2001 From: Andrew Lewis Date: Mon, 11 Sep 2023 11:13:47 +0200 Subject: [PATCH] [Feature] rbl: support checking numeric URLs in isolation --- lualib/plugins/rbl.lua | 3 ++- src/plugins/lua/rbl.lua | 5 ++++- test/functional/cases/001_merged/300_rbl.robot | 5 +++++ test/functional/configs/merged-local.conf | 5 +++++ test/functional/configs/merged-override.conf | 4 ++++ test/functional/messages/numeric_urls.eml | 3 +++ 6 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 test/functional/messages/numeric_urls.eml diff --git a/lualib/plugins/rbl.lua b/lualib/plugins/rbl.lua index bff53f9ba..02d0d3338 100644 --- a/lualib/plugins/rbl.lua +++ b/lualib/plugins/rbl.lua @@ -30,6 +30,7 @@ local check_types = { }, urls = {}, content_urls = {}, + numeric_urls = {}, emails = {}, replyto = {}, dkim = {}, @@ -212,4 +213,4 @@ return { rule_schema = ts.shape(rule_schema_tbl), default_options = default_options, convert_checks = convert_checks, -} \ No newline at end of file +} diff --git a/src/plugins/lua/rbl.lua b/src/plugins/lua/rbl.lua index 6dce0e0f1..c5cdbef1c 100644 --- a/src/plugins/lua/rbl.lua +++ b/src/plugins/lua/rbl.lua @@ -572,6 +572,9 @@ local function gen_rbl_callback(rule) if rule.images then table.insert(ex_params.flags, 'image') end + if rule.numeric_urls then + table.insert(ex_params.flags, 'numeric') + end end local urls = lua_util.extract_specific_urls(ex_params) @@ -805,7 +808,7 @@ local function gen_rbl_callback(rule) description[#description + 1] = 'replyto' end - if rule.urls or rule.content_urls or rule.images then + if rule.urls or rule.content_urls or rule.images or rule.numeric_urls then pipeline[#pipeline + 1] = check_urls description[#description + 1] = 'urls' end diff --git a/test/functional/cases/001_merged/300_rbl.robot b/test/functional/cases/001_merged/300_rbl.robot index 094eec409..c0e7fde95 100644 --- a/test/functional/cases/001_merged/300_rbl.robot +++ b/test/functional/cases/001_merged/300_rbl.robot @@ -75,3 +75,8 @@ SELECTORS COMBINED ... Settings={symbols_enabled = [RBL_SELECTOR_MULTIPLE]} Expect Symbol With Option RBL_SELECTOR_MULTIPLE example.org:sel_from Expect Symbol With Option RBL_SELECTOR_MULTIPLE example.org:sel_helo + +NUMERIC URLS + Scan File ${RSPAMD_TESTDIR}/messages/numeric_urls.eml + ... Settings={symbols_enabled = [URIBL_NUMERIC]} + Expect Symbol With Exact Options URIBL_NUMERIC 4.3.2.1:url diff --git a/test/functional/configs/merged-local.conf b/test/functional/configs/merged-local.conf index 27738dd5e..82d609730 100644 --- a/test/functional/configs/merged-local.conf +++ b/test/functional/configs/merged-local.conf @@ -875,6 +875,11 @@ options = { type = a; replies = ["127.0.0.2"]; }, + { + name = "4.3.2.1.test9.uribl"; + type = a; + replies = ["127.0.0.2"]; + }, { name = "8.8.8.8.test9.uribl"; type = a; diff --git a/test/functional/configs/merged-override.conf b/test/functional/configs/merged-override.conf index 74d9b441f..04b879db6 100644 --- a/test/functional/configs/merged-override.conf +++ b/test/functional/configs/merged-override.conf @@ -298,6 +298,10 @@ rbl { RSPAMD_EMAILBL = "127.0.0.2"; } } + URIBL_NUMERIC { + checks = ["numeric_urls"]; + rbl = "test9.uribl"; + } URIBL_NOCONTENT { rbl = "test9.uribl"; ignore_defaults = true; diff --git a/test/functional/messages/numeric_urls.eml b/test/functional/messages/numeric_urls.eml new file mode 100644 index 000000000..139a52c66 --- /dev/null +++ b/test/functional/messages/numeric_urls.eml @@ -0,0 +1,3 @@ +Content-type: text/plain + +numeric http://1.2.3.4 and not http://example.org ok -- 2.39.5