Browse Source

Merge branch 'master' into patch-5

pull/4972/head
Dmitriy Alekseev 3 weeks ago
parent
commit
460c555a51
No account linked to committer's email address
3 changed files with 16 additions and 9 deletions
  1. 2
    2
      lualib/plugins/dmarc.lua
  2. 3
    4
      lualib/rspamadm/dmarc_report.lua
  3. 11
    3
      src/libserver/url.c

+ 2
- 2
lualib/plugins/dmarc.lua View File

@@ -240,8 +240,8 @@ local function gen_dmarc_grammar()
lpeg.locale(lpeg)
local space = lpeg.space ^ 0
local name = lpeg.C(lpeg.alpha ^ 1) * space
local sep = space * (lpeg.S("\\;") * space) + (lpeg.space ^ 1)
local value = lpeg.C(lpeg.P(lpeg.graph - sep) ^ 1)
local sep = space * (lpeg.S("\\;") * space) + (lpeg.P(lpeg.graph - lpeg.P(',')) * lpeg.space ^ 1)
local value = lpeg.C(lpeg.P(lpeg.P(lpeg.graph + lpeg.space) - sep) ^ 1)
local pair = lpeg.Cg(name * "=" * space * value) * sep ^ -1
local list = lpeg.Cf(lpeg.Ct("") * pair ^ 0, rawset)
local version = lpeg.P("v") * space * lpeg.P("=") * space * lpeg.P("DMARC1")

+ 3
- 4
lualib/rspamadm/dmarc_report.lua View File

@@ -24,6 +24,7 @@ local rspamd_url = require "rspamd_url"
local rspamd_text = require "rspamd_text"
local rspamd_util = require "rspamd_util"
local rspamd_dns = require "rspamd_dns"
local fun = require "fun"

local N = 'dmarc_report'

@@ -288,11 +289,9 @@ end

-- Process a single rua entry, validating in DNS if needed
local function process_rua(dmarc_domain, rua)
local parts = lua_util.str_split(rua, ',')

-- Remove size limitation, as we don't care about them
local addrs = {}
for _, rua_part in ipairs(parts) do
for _, rua_part in fun.map(lua_util.str_trim, lua_util.str_split(rua, ',')) do
local u = rspamd_url.create(pool, rua_part:gsub('!%d+[kmg]?$', ''))
local u2 = rspamd_url.create(pool, dmarc_domain)
if u and (u:get_protocol() or '') == 'mailto' and u:get_user() then
@@ -331,7 +330,7 @@ local function process_rua(dmarc_domain, rua)
end
end
else
logger.errx('invalid rua url: "%s""', tostring(u or 'null'))
logger.errx('invalid rua url: "%s""', rua_part)
end
end


+ 11
- 3
src/libserver/url.c View File

@@ -559,7 +559,6 @@ void rspamd_url_init(const char *tld_file)
sizeof(struct url_matcher), 13000);
url_scanner->search_trie_full = rspamd_multipattern_create_sized(13000,
RSPAMD_MULTIPATTERN_ICASE | RSPAMD_MULTIPATTERN_UTF8);
url_scanner->has_tld_file = true;
}
else {
url_scanner->matchers_full = NULL;
@@ -572,6 +571,10 @@ void rspamd_url_init(const char *tld_file)

if (tld_file != NULL) {
ret = rspamd_url_parse_tld_file(tld_file, url_scanner);

if (ret) {
url_scanner->has_tld_file = true;
}
}

if (url_scanner->matchers_full && url_scanner->matchers_full->len > 1000) {
@@ -2525,8 +2528,13 @@ rspamd_url_parse(struct rspamd_url *uri,
}
}
else {
/* Ignore IP like domains for mailto, as it is really never supported */
return URI_ERRNO_TLD_MISSING;
if (url_scanner->has_tld_file) {
/* Ignore IP like domains for mailto, as it is really never supported */
return URI_ERRNO_TLD_MISSING;
}
else {
uri->flags |= RSPAMD_URL_FLAG_NO_TLD;
}
}
}
}

Loading…
Cancel
Save