From: Stephan Bosch Date: Wed, 2 Nov 2016 23:20:55 +0000 (+0100) Subject: lib-lda: Renamed struct mail_deliver_context fields for consistency with lib-smtp. X-Git-Tag: 2.3.0.rc1~372 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a77f136d3603a36f6cdd2e3685a5b18dd3712d79;p=thirdparty%2Fdovecot%2Fcore.git lib-lda: Renamed struct mail_deliver_context fields for consistency with lib-smtp. New fields are added in subsequent commits. --- diff --git a/src/lda/main.c b/src/lda/main.c index 847861bdcd..a7f2f9d7a5 100644 --- a/src/lda/main.c +++ b/src/lda/main.c @@ -89,7 +89,7 @@ static int seekable_fd_callback(const char **path_r, void *context) int fd; path = t_str_new(128); - mail_user_set_get_temp_prefix(path, ctx->dest_user->set); + mail_user_set_get_temp_prefix(path, ctx->rcpt_user->set); fd = safe_mkstemp(path, 0600, (uid_t)-1, (gid_t)-1); if (fd == -1) { i_error("safe_mkstemp(%s) failed: %m", str_c(path)); @@ -142,10 +142,10 @@ create_raw_stream(struct mail_deliver_context *ctx, } } - if (sender != NULL && ctx->src_envelope_sender == NULL) { + if (sender != NULL && ctx->mail_from == NULL) { /* use the envelope sender from From_-line, but only if it hasn't been specified with -f already. */ - ctx->src_envelope_sender = p_strdup(ctx->pool, sender); + ctx->mail_from = p_strdup(ctx->pool, sender); } i_free(sender); @@ -180,10 +180,10 @@ lda_raw_mail_open(struct mail_deliver_context *ctx, const char *path) sets = master_service_settings_get_others(master_service); raw_mail_user = - raw_storage_create_from_set(ctx->dest_user->set_info, sets[0]); + raw_storage_create_from_set(ctx->rcpt_user->set_info, sets[0]); - envelope_sender = ctx->src_envelope_sender != NULL ? - ctx->src_envelope_sender : DEFAULT_ENVELOPE_SENDER; + envelope_sender = ctx->mail_from != NULL ? + ctx->mail_from : DEFAULT_ENVELOPE_SENDER; if (path == NULL) { input = create_raw_stream(ctx, 0, &mtime); i_stream_set_name(input, "stdin"); @@ -209,27 +209,27 @@ lda_raw_mail_open(struct mail_deliver_context *ctx, const char *path) } static void -lda_set_dest_addr(struct mail_deliver_context *ctx, const char *user, +lda_set_rcpt_orig_to(struct mail_deliver_context *ctx, const char *user, const char *destaddr_source) { - if (ctx->dest_addr == NULL && + if (ctx->rcpt_orig_to == NULL && *ctx->set->lda_original_recipient_header != '\0') { - ctx->dest_addr = mail_deliver_get_address(ctx->src_mail, + ctx->rcpt_orig_to = mail_deliver_get_address(ctx->src_mail, ctx->set->lda_original_recipient_header); destaddr_source = t_strconcat( ctx->set->lda_original_recipient_header, " header", NULL); } - if (ctx->dest_addr == NULL) { - ctx->dest_addr = strchr(user, '@') != NULL ? user : + if (ctx->rcpt_orig_to == NULL) { + ctx->rcpt_orig_to = strchr(user, '@') != NULL ? user : t_strconcat(user, "@", ctx->set->hostname, NULL); destaddr_source = "user@hostname"; } - if (ctx->final_dest_addr == NULL) - ctx->final_dest_addr = ctx->dest_addr; + if (ctx->rcpt_to == NULL) + ctx->rcpt_to = ctx->rcpt_orig_to; - if (ctx->dest_user->mail_debug) { + if (ctx->rcpt_user->mail_debug) { i_debug("Destination address: %s (source: %s)", - ctx->dest_addr, destaddr_source); + ctx->rcpt_orig_to, destaddr_source); } } @@ -317,7 +317,7 @@ int main(int argc, char *argv[]) i_zero(&ctx); ctx.session = mail_deliver_session_init(); ctx.pool = ctx.session->pool; - ctx.dest_mailbox_name = "INBOX"; + ctx.rcpt_default_mailbox = "INBOX"; path = NULL; user = getenv("USER"); @@ -325,7 +325,7 @@ int main(int argc, char *argv[]) switch (c) { case 'a': /* original recipient address */ - ctx.dest_addr = optarg; + ctx.rcpt_orig_to = optarg; destaddr_source = "-a parameter"; break; case 'd': @@ -338,7 +338,7 @@ int main(int argc, char *argv[]) break; case 'f': /* envelope sender address */ - ctx.src_envelope_sender = + ctx.mail_from = p_strdup(ctx.pool, address_sanitize(optarg)); break; case 'm': @@ -350,7 +350,7 @@ int main(int argc, char *argv[]) i_fatal("Mailbox name not UTF-8: %s", optarg); } - ctx.dest_mailbox_name = optarg; + ctx.rcpt_default_mailbox = optarg; } T_END; break; case 'p': @@ -362,7 +362,7 @@ int main(int argc, char *argv[]) break; case 'r': /* final recipient address */ - ctx.final_dest_addr = optarg; + ctx.rcpt_to = optarg; break; default: print_help(); @@ -419,7 +419,7 @@ int main(int argc, char *argv[]) _lookup() and _next(), but don't bother) */ ctx.delivery_time_started = ioloop_timeval; ret = mail_storage_service_lookup_next(storage_service, &service_input, - &service_user, &ctx.dest_user, + &service_user, &ctx.rcpt_user, &errstr); if (ret <= 0) { if (ret < 0) @@ -430,17 +430,17 @@ int main(int argc, char *argv[]) #ifdef SIGXFSZ lib_signals_ignore(SIGXFSZ, TRUE); #endif - var_table = mail_user_var_expand_table(ctx.dest_user); + var_table = mail_user_var_expand_table(ctx.rcpt_user); smtp_set = mail_storage_service_user_get_set(service_user)[1]; lda_set = mail_storage_service_user_get_set(service_user)[2]; ret = settings_var_expand( &lda_setting_parser_info, - lda_set, ctx.dest_user->pool, var_table, + lda_set, ctx.rcpt_user->pool, var_table, &errstr); if (ret > 0) { ret = settings_var_expand( &smtp_submit_setting_parser_info, - smtp_set, ctx.dest_user->pool, var_table, + smtp_set, ctx.rcpt_user->pool, var_table, &errstr); } if (ret <= 0) @@ -448,13 +448,13 @@ int main(int argc, char *argv[]) ctx.set = lda_set; ctx.smtp_set = smtp_set; - if (ctx.dest_user->mail_debug && *user_source != '\0') { + if (ctx.rcpt_user->mail_debug && *user_source != '\0') { i_debug("userdb lookup skipped, username taken from %s", user_source); } ctx.src_mail = lda_raw_mail_open(&ctx, path); - lda_set_dest_addr(&ctx, user, destaddr_source); + lda_set_rcpt_orig_to(&ctx, user, destaddr_source); if (mail_deliver(&ctx, &storage) < 0) { if (ctx.tempfail_error != NULL) { @@ -506,7 +506,7 @@ int main(int argc, char *argv[]) mailbox_free(&box); } - mail_user_unref(&ctx.dest_user); + mail_user_unref(&ctx.rcpt_user); mail_deliver_session_deinit(&ctx.session); mail_storage_service_user_unref(&service_user); diff --git a/src/lib-lda/mail-deliver.c b/src/lib-lda/mail-deliver.c index 1b096fb5a4..734a41403d 100644 --- a/src/lib-lda/mail-deliver.c +++ b/src/lib-lda/mail-deliver.c @@ -149,7 +149,7 @@ mail_deliver_ctx_get_log_var_expand_table(struct mail_deliver_context *ctx, { 'w', dec2str(ctx->cache->vsize), "vsize" }, { '\0', dec2str(delivery_time_msecs), "delivery_time" }, { '\0', dec2str(ctx->session_time_msecs), "session_time" }, - { '\0', ctx->dest_addr, "to_envelope" }, + { '\0', ctx->rcpt_orig_to, "to_envelope" }, { '\0', ctx->cache->storage_id, "storage_id" }, { '\0', NULL, NULL } }; @@ -316,12 +316,12 @@ int mail_deliver_save(struct mail_deliver_context *ctx, const char *mailbox, i_assert(ctx->dest_mail == NULL); - default_save = strcmp(mailbox, ctx->dest_mailbox_name) == 0; + default_save = strcmp(mailbox, ctx->rcpt_default_mailbox) == 0; if (default_save) ctx->tried_default_save = TRUE; i_zero(&open_ctx); - open_ctx.user = ctx->dest_user; + open_ctx.user = ctx->rcpt_user; open_ctx.lda_mailbox_autocreate = ctx->set->lda_mailbox_autocreate; open_ctx.lda_mailbox_autosubscribe = ctx->set->lda_mailbox_autosubscribe; @@ -346,8 +346,8 @@ int mail_deliver_save(struct mail_deliver_context *ctx, const char *mailbox, kw = str_array_length(keywords) == 0 ? NULL : mailbox_keywords_create_valid(box, keywords); save_ctx = mailbox_save_alloc(t); - if (ctx->src_envelope_sender != NULL) - mailbox_save_set_from_envelope(save_ctx, ctx->src_envelope_sender); + if (ctx->mail_from != NULL) + mailbox_save_set_from_envelope(save_ctx, ctx->mail_from); mailbox_save_set_flags(save_ctx, flags, kw); headers_ctx = mailbox_header_lookup_init(box, lda_log_wanted_headers); @@ -400,8 +400,8 @@ int mail_deliver_save(struct mail_deliver_context *ctx, const char *mailbox, const char *mail_deliver_get_return_address(struct mail_deliver_context *ctx) { - if (ctx->src_envelope_sender != NULL) - return ctx->src_envelope_sender; + if (ctx->mail_from != NULL) + return ctx->mail_from; return mail_deliver_get_address(ctx->src_mail, "Return-Path"); } @@ -409,7 +409,7 @@ const char *mail_deliver_get_return_address(struct mail_deliver_context *ctx) const char *mail_deliver_get_new_message_id(struct mail_deliver_context *ctx) { static int count = 0; - struct mail_user *user = ctx->dest_user; + struct mail_user *user = ctx->rcpt_user; const struct mail_storage_settings *mail_set = mail_user_set_get_storage_set(user); @@ -437,7 +437,7 @@ int mail_deliver(struct mail_deliver_context *ctx, struct mail_storage **storage_r) { struct mail_deliver_user *muser = - MAIL_DELIVER_USER_CONTEXT(ctx->dest_user); + MAIL_DELIVER_USER_CONTEXT(ctx->rcpt_user); int ret; i_assert(muser->deliver_ctx == NULL); @@ -450,7 +450,7 @@ int mail_deliver(struct mail_deliver_context *ctx, if (deliver_mail == NULL) ret = -1; else { - ctx->dup_db = mail_duplicate_db_init(ctx->dest_user, + ctx->dup_db = mail_duplicate_db_init(ctx->rcpt_user, DUPLICATE_DB_NAME); if (deliver_mail(ctx, storage_r) <= 0) { /* if message was saved, don't bounce it even though @@ -469,14 +469,14 @@ int mail_deliver(struct mail_deliver_context *ctx, if (ret < 0 && !ctx->tried_default_save) { /* plugins didn't handle this. save into the default mailbox. */ - ret = mail_deliver_save(ctx, ctx->dest_mailbox_name, 0, NULL, + ret = mail_deliver_save(ctx, ctx->rcpt_default_mailbox, 0, NULL, storage_r); if (ret < 0 && mail_deliver_is_tempfailed(ctx, *storage_r)) { muser->deliver_ctx = NULL; return -1; } } - if (ret < 0 && strcasecmp(ctx->dest_mailbox_name, "INBOX") != 0) { + if (ret < 0 && strcasecmp(ctx->rcpt_default_mailbox, "INBOX") != 0) { /* still didn't work. try once more to save it to INBOX. */ ret = mail_deliver_save(ctx, "INBOX", 0, NULL, storage_r); diff --git a/src/lib-lda/mail-deliver.h b/src/lib-lda/mail-deliver.h index 15ff62a21f..299b3aea43 100644 --- a/src/lib-lda/mail-deliver.h +++ b/src/lib-lda/mail-deliver.h @@ -33,18 +33,19 @@ struct mail_deliver_context { const char *session_id; /* Mail to save */ struct mail *src_mail; + /* Envelope sender, if known. */ - const char *src_envelope_sender; + const char *mail_from; + /* Envelope recipient (final recipient) */ + const char *rcpt_to; + /* Envelope recipient (original recipient) */ + const char *rcpt_orig_to; /* Destination user */ - struct mail_user *dest_user; - /* Original recipient address */ - const char *dest_addr; - /* Final recipient address (typically same as dest_addr) */ - const char *final_dest_addr; + struct mail_user *rcpt_user; /* Mailbox where mail should be saved, unless e.g. Sieve does something to it. */ - const char *dest_mailbox_name; + const char *rcpt_default_mailbox; /* Filled with destination mail, if save_dest_mail=TRUE. The caller must free the mail, its transaction and close diff --git a/src/lib-lda/mail-send.c b/src/lib-lda/mail-send.c index 08f51ad852..9cd427db45 100644 --- a/src/lib-lda/mail-send.c +++ b/src/lib-lda/mail-send.c @@ -46,7 +46,7 @@ get_var_expand_table(struct mail *mail, const char *reason, int mail_send_rejection(struct mail_deliver_context *ctx, const char *recipient, const char *reason) { - struct mail_user *user = ctx->dest_user; + struct mail_user *user = ctx->rcpt_user; const struct mail_storage_settings *mail_set = mail_user_set_get_storage_set(user); struct mail *mail = ctx->src_mail; diff --git a/src/lmtp/commands.c b/src/lmtp/commands.c index 1df87743fe..4f14605428 100644 --- a/src/lmtp/commands.c +++ b/src/lmtp/commands.c @@ -833,28 +833,28 @@ client_deliver(struct client *client, const struct mail_recipient *rcpt, dctx.smtp_set = smtp_set; dctx.session_id = rcpt->session_id; dctx.src_mail = src_mail; - dctx.src_envelope_sender = client->state.mail_from; - dctx.dest_user = dest_user; + dctx.mail_from = client->state.mail_from; + dctx.rcpt_user = dest_user; dctx.session_time_msecs = timeval_diff_msecs(&client->state.data_end_timeval, &client->state.mail_from_timeval); dctx.delivery_time_started = delivery_time_started; - if (orcpt_get_valid_rfc822(rcpt->params.dsn_orcpt, &dctx.dest_addr)) { + if (orcpt_get_valid_rfc822(rcpt->params.dsn_orcpt, &dctx.rcpt_orig_to)) { /* used ORCPT */ } else if (*dctx.set->lda_original_recipient_header != '\0') { - dctx.dest_addr = mail_deliver_get_address(src_mail, + dctx.rcpt_orig_to = mail_deliver_get_address(src_mail, dctx.set->lda_original_recipient_header); } - if (dctx.dest_addr == NULL) - dctx.dest_addr = rcpt->address; - dctx.final_dest_addr = rcpt->address; + if (dctx.rcpt_orig_to == NULL) + dctx.rcpt_orig_to = rcpt->address; + dctx.rcpt_to = rcpt->address; if (*rcpt->detail == '\0' || !client->lmtp_set->lmtp_save_to_detail_mailbox) - dctx.dest_mailbox_name = "INBOX"; + dctx.rcpt_default_mailbox = "INBOX"; else { ns = mail_namespace_find_inbox(dest_user->namespaces); - dctx.dest_mailbox_name = + dctx.rcpt_default_mailbox = t_strconcat(ns->prefix, rcpt->detail, NULL); }