aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2015-11-24 15:22:37 +0000
committerVsevolod Stakhov <vsevolod@highsecure.ru>2015-11-24 15:22:37 +0000
commit479249082b50b007c30b2041e403e9bc18076509 (patch)
treecf30f16d7ea2ad719bb4aeecb3e17f81415f5ac9
parentad2c3309f877d5f854694bc6fc0bd260693d0021 (diff)
downloadrspamd-479249082b50b007c30b2041e403e9bc18076509.tar.gz
rspamd-479249082b50b007c30b2041e403e9bc18076509.zip
Parse more headers if they are missed in HTTP
-rw-r--r--src/libmime/message.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/libmime/message.c b/src/libmime/message.c
index 3c643f8a0..19bef072a 100644
--- a/src/libmime/message.c
+++ b/src/libmime/message.c
@@ -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) {