diff options
author | Vsevolod Stakhov <vsevolod@rspamd.com> | 2025-03-31 18:46:30 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@rspamd.com> | 2025-03-31 18:46:30 +0100 |
commit | 0ec3015b8f35d0c652bf5acf1b341a846914fa8b (patch) | |
tree | ac5d8729f040d3734af5f1ccd6edf03dca2223e9 | |
parent | 4c98aab6f670c659dff4c7e0cf392576f7850732 (diff) | |
download | rspamd-vstakhov-bh-greylisting.tar.gz rspamd-vstakhov-bh-greylisting.zip |
[Fix] Greylist: Improve body hash calculationsvstakhov-bh-greylisting
-rw-r--r-- | src/plugins/lua/greylist.lua | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/plugins/lua/greylist.lua b/src/plugins/lua/greylist.lua index e4a633233..934e17bce 100644 --- a/src/plugins/lua/greylist.lua +++ b/src/plugins/lua/greylist.lua @@ -122,6 +122,29 @@ local function data_key(task) local h = hash.create() h:update(body, len) + local subject = task:get_subject() or '' + h:update(subject) + + -- Take recipients into account + local rcpt = task:get_recipients('smtp') + if rcpt then + table.sort(rcpt, function(r1, r2) + return r1['addr'] < r2['addr'] + end) + + fun.each(function(r) + h:update(r['addr']) + end, rcpt) + end + + -- Use from as well, but mime one + local from = task:get_from('mime') + + local addr = '<>' + if from and from[1] then + addr = from[1]['addr'] + end + h:update(addr) local b32 = settings['key_prefix'] .. 'b' .. h:base32():sub(1, 20) task:get_mempool():set_variable("grey_bodyhash", b32) |