From 61f64974623494e8c8a87d943cc8e551b28501db Mon Sep 17 00:00:00 2001 From: Stephan Bosch Date: Thu, 1 Feb 2018 00:14:55 +0100 Subject: [PATCH] lib-lda: Parse Return-Path header using RFC5322 (IMF) "path" syntax, rather than RFC5321 (SMTP) "Path" syntax. SMTP does not allow white space, which causes all kinds of trouble when the address is parsed from a header field. --- src/lib-lda/mail-deliver.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/lib-lda/mail-deliver.c b/src/lib-lda/mail-deliver.c index 9c82563d92..558face961 100644 --- a/src/lib-lda/mail-deliver.c +++ b/src/lib-lda/mail-deliver.c @@ -405,8 +405,8 @@ int mail_deliver_save(struct mail_deliver_context *ctx, const char *mailbox, const struct smtp_address * mail_deliver_get_return_address(struct mail_deliver_context *ctx) { - struct smtp_address *address; - const char *path, *error; + struct message_address *addr; + const char *path; int ret; if (!smtp_address_isnull(ctx->mail_from)) @@ -421,13 +421,14 @@ mail_deliver_get_return_address(struct mail_deliver_context *ctx) } return NULL; } - if (smtp_address_parse_path(ctx->pool, path, - SMTP_ADDRESS_PARSE_FLAG_BRACKETS_OPTIONAL, - &address, &error) < 0) { - i_warning("Failed to parse return-path header: %s", error); + if (message_address_parse_path(pool_datastack_create(), + (const unsigned char *)path, + strlen(path), &addr) < 0) { + i_warning("Failed to parse return-path header"); return NULL; } - return address; + + return smtp_address_create_from_msg(ctx->pool, addr); } const char *mail_deliver_get_new_message_id(struct mail_deliver_context *ctx)