result->type = RSPAMD_RE_MIME;
p++;
break;
+ case 'Q':
+ result->type = RSPAMD_RE_RAWMIME;
+ p++;
+ break;
case 'U':
result->type = RSPAMD_RE_URL;
p++;
ret = 90;
break;
case RSPAMD_RE_MIME:
+ case RSPAMD_RE_RAWMIME:
ret = 10;
break;
default:
rspamd_regexp_get_pattern (re), ret);
break;
case RSPAMD_RE_MIME:
+ case RSPAMD_RE_RAWMIME:
/* Iterate throught text parts */
for (i = 0; i < task->text_parts->len; i++) {
part = g_ptr_array_index (task->text_parts, i);
raw = TRUE;
}
/* Select data for regexp */
- if (raw) {
+ if (re_class->type == RSPAMD_RE_RAWMIME) {
in = part->orig->data;
len = part->orig->len;
+ raw = TRUE;
}
else {
in = part->content->data;
case RSPAMD_RE_MIME:
ret = "part";
break;
+ case RSPAMD_RE_RAWMIME:
+ ret = "raw part";
+ break;
case RSPAMD_RE_BODY:
ret = "rawbody";
break;
else if (strcmp (str, "mime") == 0) {
ret = RSPAMD_RE_MIME;
}
+ else if (strcmp (str, "rawmime") == 0) {
+ ret = RSPAMD_RE_RAWMIME;
+ }
else if (strcmp (str, "body") == 0) {
ret = RSPAMD_RE_BODY;
}
RSPAMD_RE_RAWHEADER,
RSPAMD_RE_ALLHEADER,
RSPAMD_RE_MIME,
+ RSPAMD_RE_RAWMIME,
RSPAMD_RE_URL,
RSPAMD_RE_BODY,
RSPAMD_RE_MAX
* - `re`* : regular expression object
* - `type`*: type of regular expression:
* + `mime`: mime regexp
+ * + `rawmime`: raw mime regexp
* + `header`: header regexp
* + `rawheader`: raw header expression
* + `body`: raw body regexp
* - `re`* : regular expression object
* - `type`*: type of regular expression:
* + `mime`: mime regexp
+ * + `rawmime`: raw mime regexp
* + `header`: header regexp
* + `rawheader`: raw header expression
* + `body`: raw body regexp
* + `mime`: mime regexp
* + `header`: header regexp
* + `rawheader`: raw header expression
+ * + `rawmime`: raw mime regexp
* + `body`: raw body regexp
* + `url`: url regexp
* - `header`: for header and rawheader regexp means the name of header
* - `re`* : regular expression object
* - `type`*: type of regular expression:
* + `mime`: mime regexp
+ * + `rawmime`: raw mime regexp
* + `header`: header regexp
* + `rawheader`: raw header expression
* + `body`: raw body regexp
cur_rule['re'] = rspamd_regexp.create_cached(cur_rule['re_expr'])
cur_rule['raw'] = true
if cur_rule['re'] then
+
rspamd_config:register_regexp({
re = cur_rule['re'],
- type = 'mime',
+ type = 'rawmime',
})
valid_rule = true
cur_rule['re']:set_limit(match_limit)
return 0
end
+ local t = 'mime'
+ if r['raw'] then t = 'rawmime' end
+
return task:process_regexp({
re = r['re'],
- type = 'mime',
+ type = t,
})
end
if r['score'] then