From 170729ae39384c3b6cfb0bc030bbaa7cb4363755 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Tue, 23 Jun 2015 13:52:41 +0100 Subject: [PATCH] Fix issues with bounces From processing. --- src/libserver/task.c | 21 +++++++++++++++------ src/plugins/lua/forged_recipients.lua | 2 +- src/plugins/lua/multimap.lua | 8 +++++--- src/plugins/lua/ratelimit.lua | 2 +- 4 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/libserver/task.c b/src/libserver/task.c index 1874847de..031a453e2 100644 --- a/src/libserver/task.c +++ b/src/libserver/task.c @@ -474,16 +474,25 @@ rspamd_task_add_sender (struct rspamd_task *task, const gchar *sender) task->from_envelope); #endif } - tmp_addr = internet_address_list_parse_string (sender); - if (tmp_addr) { - internet_address_list_append (task->from_envelope, tmp_addr); + if (strcmp (sender, "<>") == 0) { + /* Workaround for gmime */ + internet_address_list_add (task->from_envelope, + internet_address_mailbox_new ("", "")); + return TRUE; + } + else { + tmp_addr = internet_address_list_parse_string (sender); + + if (tmp_addr) { + internet_address_list_append (task->from_envelope, tmp_addr); #ifdef GMIME24 - g_object_unref (tmp_addr); + g_object_unref (tmp_addr); #else - internet_address_list_destroy (tmp_addr); + internet_address_list_destroy (tmp_addr); #endif - return TRUE; + return TRUE; + } } return FALSE; diff --git a/src/plugins/lua/forged_recipients.lua b/src/plugins/lua/forged_recipients.lua index 6c553aa04..e5a6c738c 100644 --- a/src/plugins/lua/forged_recipients.lua +++ b/src/plugins/lua/forged_recipients.lua @@ -63,7 +63,7 @@ local function check_forged_headers(task) end -- Check sender local smtp_from = task:get_from(1) - if smtp_from and smtp_from[1] then + if smtp_from and smtp_from[1] and smtp_from[1]['addr'] ~= '' then local mime_from = task:get_from(2) if not mime_from or not mime_from[1] or not (string.lower(mime_from[1]['addr']) == string.lower(smtp_from[1]['addr'])) then diff --git a/src/plugins/lua/multimap.lua b/src/plugins/lua/multimap.lua index 756996ede..2ba14c653 100644 --- a/src/plugins/lua/multimap.lua +++ b/src/plugins/lua/multimap.lua @@ -78,10 +78,12 @@ local function check_multimap(task) if fields then _.each(function(e) local match = e[fields[1]] - if fields[2] then - match = fields[2](match) + if match then + if fields[2] then + match = fields[2](match) + end + ret = match_rule(r, match) end - ret = match_rule(r, match) end, ls) else _.each(function(e) ret = match_rule(r, e) end, ls) diff --git a/src/plugins/lua/ratelimit.lua b/src/plugins/lua/ratelimit.lua index afc8eda0f..1c1dc4dd6 100644 --- a/src/plugins/lua/ratelimit.lua +++ b/src/plugins/lua/ratelimit.lua @@ -242,7 +242,7 @@ local function rate_test_set(task, func) local from = task:get_from() local from_user = '<>' local from_addr = '<>' - if from then + if from and from[1]['addr'] then from_user = from[1]['user'] from_addr = from[1]['addr'] end -- 2.39.5