]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
Parse more headers if they are missed in HTTP
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 24 Nov 2015 15:22:37 +0000 (15:22 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 24 Nov 2015 15:22:37 +0000 (15:22 +0000)
src/libmime/message.c

index 3c643f8a03dd5d7f87e2adac0bd634a4597aba9f..19bef072a8a8d8058ac3398ad6dbddbcc5a80133 100644 (file)
@@ -1707,6 +1707,36 @@ rspamd_message_parse (struct rspamd_task *task)
                        task->hostname = recv->real_hostname;
                }
        }
+
+       if (task->from_envelope == NULL) {
+               first = rspamd_message_get_header (task, "Return-Path", FALSE);
+
+               if (first) {
+                       rh = first->data;
+                       task->from_envelope = internet_address_list_parse_string (rh->value);
+                       if (task->from_envelope) {
+#ifdef GMIME24
+                               rspamd_mempool_add_destructor (task->task_pool,
+                                               (rspamd_mempool_destruct_t) g_object_unref,
+                                               task->from_envelope);
+#else
+                               rspamd_mempool_add_destructor (task->task_pool,
+                                       (rspamd_mempool_destruct_t) internet_address_list_destroy,
+                                       task->from_envelope);
+#endif
+                       }
+               }
+       }
+
+       if (task->deliver_to == NULL) {
+               first = rspamd_message_get_header (task, "Delivered-To", FALSE);
+
+               if (first) {
+                       rh = first->data;
+                       task->deliver_to = rspamd_mempool_strdup (task->task_pool, rh->decoded);
+               }
+       }
+
        /* Set mime recipients and sender for the task */
        task->rcpt_mime = g_mime_message_get_all_recipients (task->message);
        if (task->rcpt_mime) {