]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Set explicit type for known headers
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Sat, 13 May 2017 13:37:45 +0000 (14:37 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Sat, 13 May 2017 13:37:45 +0000 (14:37 +0100)
src/libmime/mime_headers.c
src/libmime/mime_headers.h

index ef05bfcb3a6c5d2c1360a53b926889934c64a54f..bb9284f6a185181afda7be1067ba5ac1fa6b4eb3 100644 (file)
@@ -48,25 +48,31 @@ rspamd_mime_header_check_special (struct rspamd_task *task,
                }
 
                g_ptr_array_add (task->received, recv);
+               rh->type = RSPAMD_HEADER_RECEIVED;
                break;
        case 0x76F31A09F4352521ULL:     /* to */
                task->rcpt_mime = rspamd_email_address_from_mime (task->task_pool,
                                rh->value, strlen (rh->value), task->rcpt_mime);
+               rh->type = RSPAMD_HEADER_TO;
                break;
        case 0x7EB117C1480B76ULL:       /* cc */
                task->rcpt_mime = rspamd_email_address_from_mime (task->task_pool,
                                rh->value, strlen (rh->value), task->rcpt_mime);
+               rh->type = RSPAMD_HEADER_CC;
                break;
        case 0xE4923E11C4989C8DULL:     /* bcc */
                task->rcpt_mime = rspamd_email_address_from_mime (task->task_pool,
                                rh->value, strlen (rh->value), task->rcpt_mime);
+               rh->type = RSPAMD_HEADER_BCC;
                break;
        case 0x41E1985EDC1CBDE4ULL:     /* from */
                task->from_mime = rspamd_email_address_from_mime (task->task_pool,
                                rh->value, strlen (rh->value), task->from_mime);
+               rh->type = RSPAMD_HEADER_FROM;
                break;
        case 0x43A558FC7C240226ULL:     /* message-id */ {
 
+               rh->type = RSPAMD_HEADER_MESSAGE_ID;
                p = rh->decoded;
                end = p + strlen (p);
 
@@ -105,17 +111,20 @@ rspamd_mime_header_check_special (struct rspamd_task *task,
                if (task->subject == NULL) {
                        task->subject = rh->decoded;
                }
+               rh->type = RSPAMD_HEADER_SUBJECT;
                break;
        case 0xEE4AA2EAAC61D6F4ULL:     /* return-path */
                if (task->from_envelope == NULL) {
                        task->from_envelope = rspamd_email_address_from_smtp (rh->decoded,
                                        strlen (rh->decoded));
                }
+               rh->type = RSPAMD_HEADER_RETURN_PATH;
                break;
        case 0xB9EEFAD2E93C2161ULL:     /* delivered-to */
                if (task->deliver_to == NULL) {
                        task->deliver_to = rh->decoded;
                }
+               rh->type = RSPAMD_HEADER_DELIVERED_TO;
                break;
        }
 }
@@ -433,7 +442,7 @@ rspamd_mime_headers_process (struct rspamd_task *task, GHashTable *target,
                while (cur) {
                        nh = cur->data;
 
-                       if (nh->name) {
+                       if (nh->name && nh->type != RSPAMD_HEADER_RECEIVED) {
                                rspamd_cryptobox_hash_update (&hs, nh->name, strlen (nh->name));
                        }
 
index 299e84dea279bafab34ab88dc35a13babb0d3e25..14ece02e641fcfdf7bb29522bf340ac0e56d9534 100644 (file)
@@ -26,6 +26,19 @@ enum rspamd_rfc2047_encoding {
        RSPAMD_RFC2047_BASE64,
 };
 
+enum rspamd_mime_header_special_type {
+       RSPAMD_HEADER_GENERIC = 0,
+       RSPAMD_HEADER_RECEIVED = 1,
+       RSPAMD_HEADER_TO,
+       RSPAMD_HEADER_CC,
+       RSPAMD_HEADER_BCC,
+       RSPAMD_HEADER_FROM,
+       RSPAMD_HEADER_MESSAGE_ID,
+       RSPAMD_HEADER_SUBJECT,
+       RSPAMD_HEADER_RETURN_PATH,
+       RSPAMD_HEADER_DELIVERED_TO,
+};
+
 struct rspamd_mime_header {
        gchar *name;
        gchar *value;
@@ -34,6 +47,7 @@ struct rspamd_mime_header {
        gboolean tab_separated;
        gboolean empty_separator;
        guint order;
+       enum rspamd_mime_header_special_type type;
        gchar *separator;
        gchar *decoded;
 };