]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Minor] Antivirus - configureable mime_part scanning
authorCarsten Rosenberg <c.rosenberg@heinlein-support.de>
Wed, 26 Sep 2018 12:31:47 +0000 (14:31 +0200)
committerCarsten Rosenberg <c.rosenberg@heinlein-support.de>
Wed, 26 Sep 2018 12:31:47 +0000 (14:31 +0200)
conf/modules.d/antivirus.conf
src/plugins/lua/antivirus.lua

index 16f38fbdae845a0ddf710e5a8cbd8216673c612b..803820dbb28f5c8aa61c8212f2ccd76132c33eb0 100644 (file)
@@ -18,8 +18,12 @@ antivirus {
   clamav {
     # If set force this action if any virus is found (default unset: no action is forced)
     # action = "reject";
-    # if `true` only messages with non-image attachments will be checked (default true)
-    attachments_only = true;
+    # message = '${SCANNER}: virus found: "${VIRUS}"';
+    # Scan mime_parts seperately - otherwise the complete mail will be transfered to AV Scanner
+    #scan_mime_parts = true;
+    # Scanning Text is suitable for some av scanner databases (e.g. Sanesecurity)
+    #scan_text_mime = false;
+    #scan_image_mime = false;
     # If `max_size` is set, messages > n bytes in size are not scanned
     #max_size = 20000000;
     # symbol to add (add it to metric if you want non-zero weight)
index 976e521f487276d4dfe8afcbe1d372f2e27c724b..047035fc111652d72dd5e2c6e5416a423c6bb352 100644 (file)
@@ -871,11 +871,17 @@ local function add_antivirus_rule(sym, opts)
   end
 
   return function(task)
-    if rule.attachments_only then
+    if rule.scan_mime_parts then
       local parts = task:get_parts() or {}
 
       for _,p in ipairs(parts) do
-        if not p:is_image() and not p:is_text() and not p:is_multipart() then
+        if (
+            (p:is_image() and rule.scan_image_mime)
+            or (p:is_text() and rule.scan_text_mime)
+            or (p:is_multipart() and rule.scan_text_mime)
+            or (not p:is_image() and not p:is_text() and not p:is_multipart())
+            ) then
+
           local content = p:get_content()
 
           if content and #content > 0 then