summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@rspamd.com>2022-09-14 21:43:55 +0100
committerGitHub <noreply@github.com>2022-09-14 21:43:55 +0100
commitfa4db7ea926595b0539f5c45c49250e7c6236c6a (patch)
treecf239181566d865d9f3222dd594d4fced0cd0bdd
parentbea3b69d11d629879bb38b39ce627aa229b2a215 (diff)
parent9ab32f929e32d21b26b39d5954b81438ecd9fe9a (diff)
downloadrspamd-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.json6
-rw-r--r--src/plugins/lua/elastic.lua31
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'