]> source.dussan.org Git - rspamd.git/commitdiff
[Feature] Add INVALID_DATE rule
authorAnton Yuzhaninov <citrin+git@citrin.ru>
Wed, 7 Oct 2020 09:33:07 +0000 (10:33 +0100)
committerAnton Yuzhaninov <citrin+git@citrin.ru>
Wed, 7 Oct 2020 10:54:27 +0000 (11:54 +0100)
The symbol indicates that a date in Date: header has invalid format and
cannot be parsed by Rspamd.

rules/misc.lua

index 5a65442efea43c06c0ba325ed49663240da69c88..d12e09e2c097a8e9c44f2c55e968a14defc6e8b8 100644 (file)
@@ -65,16 +65,21 @@ local date_id = rspamd_config:register_symbol({
       return
     end
 
-    local dm = task:get_date({format = 'message', gmt = true})
+    local dm, err = util.parse_smtp_date(date_time)
+    if err then
+      task:insert_result('INVALID_DATE', 1.0)
+      return
+    end
+
     local dt = task:get_date({format = 'connect', gmt = true})
+    local date_diff = dt - dm
 
-    if dm > 0 and dm - dt > 7200 then
-      -- 2 hours
-      task:insert_result('DATE_IN_FUTURE', 1.0)
-      return
-    elseif dm > 0 and dt - dm > 86400 then
-      -- A day
+    if date_diff > 86400 then
+      -- Older than a day
       task:insert_result('DATE_IN_PAST', 1.0)
+    elseif -date_diff > 7200 then
+      -- More than 2 hours in the future
+      task:insert_result('DATE_IN_FUTURE', 1.0)
     end
   end
 })
@@ -88,6 +93,15 @@ rspamd_config:register_symbol({
   parent = date_id,
 })
 
+rspamd_config:register_symbol({
+  name = 'INVALID_DATE',
+  score = 1.5,
+  description = 'Malformed date header',
+  group = 'headers',
+  type = 'virtual',
+  parent = date_id,
+})
+
 rspamd_config:register_symbol({
   name = 'DATE_IN_FUTURE',
   score = 4.0,