diff options
author | Vsevolod Stakhov <vsevolod@rspamd.com> | 2022-09-14 21:43:55 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-14 21:43:55 +0100 |
commit | fa4db7ea926595b0539f5c45c49250e7c6236c6a (patch) | |
tree | cf239181566d865d9f3222dd594d4fced0cd0bdd | |
parent | bea3b69d11d629879bb38b39ce627aa229b2a215 (diff) | |
parent | 9ab32f929e32d21b26b39d5954b81438ecd9fe9a (diff) | |
download | rspamd-fa4db7ea926595b0539f5c45c49250e7c6236c6a.tar.gz rspamd-fa4db7ea926595b0539f5c45c49250e7c6236c6a.zip |
Merge pull request #4268 from dragoangel/patch-1
[Fix] Avoid overriding IP with Sender IP
-rw-r--r-- | contrib/elastic/rspamd_template.json | 6 | ||||
-rw-r--r-- | src/plugins/lua/elastic.lua | 31 |
2 files changed, 19 insertions, 18 deletions
diff --git a/contrib/elastic/rspamd_template.json b/contrib/elastic/rspamd_template.json index 94f54f1c9..ebd87faef 100644 --- a/contrib/elastic/rspamd_template.json +++ b/contrib/elastic/rspamd_template.json @@ -1,7 +1,7 @@ { "mappings": { "_meta": { - "version": "5.5.2" + "version": "5.5.3" }, "date_detection": false, "dynamic_templates": [ @@ -90,6 +90,10 @@ "webmail": { "type": "boolean" }, + "sender_ip": { + "ignore_above": 1024, + "type": "keyword" + }, "geoip": { "properties": { "city_name": { diff --git a/src/plugins/lua/elastic.lua b/src/plugins/lua/elastic.lua index 8d20720bc..b93186f9a 100644 --- a/src/plugins/lua/elastic.lua +++ b/src/plugins/lua/elastic.lua @@ -121,29 +121,26 @@ local function get_general_metadata(task) local r = {} local ip_addr = task:get_ip() - r.webmail = false - if ip_addr and ip_addr:is_valid() then r.is_local = ip_addr:is_local() - local origin = task:get_header('X-Originating-IP') - if origin then - origin = string.sub(origin, 2, -2) - local rspamd_ip = require "rspamd_ip" - local test = rspamd_ip.from_string(origin) - - if test and test:is_valid() then - r.webmail = true - r.ip = origin - else - r.ip = tostring(ip_addr) - end - else - r.ip = tostring(ip_addr) - end + r.ip = tostring(ip_addr) else r.ip = '127.0.0.1' end + r.webmail = false + r.sender_ip = 'unknown' + local origin = task:get_header('X-Originating-IP') + if origin then + origin = origin:gsub('%[', ''):gsub('%]', '') + local rspamd_ip = require "rspamd_ip" + local origin_ip = rspamd_ip.from_string(origin) + if origin_ip and origin_ip:is_valid() then + r.webmail = true + r.sender_ip = origin -- use string here + end + end + r.direction = "Inbound" r.user = task:get_user() or 'unknown' r.qid = task:get_queue_id() or 'unknown' |