void sieve_tool_init_mail_user (struct sieve_tool *tool, const char *mail_location) { struct mail_user *mail_user_dovecot = tool->mail_user_dovecot; const char *username = tool->username; struct mail_namespace *ns = NULL; const char *home = NULL, *errstr = NULL; tool->mail_user = mail_user_alloc (username, mail_user_dovecot->set_info, mail_user_dovecot->unexpanded_set); if ( (home=sieve_tool_get_homedir(sieve_tool)) != NULL ) { mail_user_set_home(tool->mail_user, home); } if ( mail_user_init(tool->mail_user, &errstr) < 0 ) i_fatal("Test user initialization failed: %s", errstr); if ( mail_namespaces_init_location (tool->mail_user, mail_location, &errstr) < 0 ) i_fatal("Test storage creation failed: %s", errstr); ns = tool->mail_user->namespaces; ns->flags |= NAMESPACE_FLAG_NOQUOTA | NAMESPACE_FLAG_NOACL; }
static void cmd_import_init(struct doveadm_mail_cmd_context *_ctx, const char *const args[]) { struct import_cmd_context *ctx = (struct import_cmd_context *)_ctx; struct mail_storage_service_input input; struct mail_storage_service_user *service_user; struct mail_user *user; const char *src_location, *error; if (str_array_length(args) < 3) doveadm_mail_help_name("import"); src_location = args[0]; ctx->dest_parent = p_strdup(_ctx->pool, args[1]); ctx->ctx.search_args = doveadm_mail_build_search_args(args+2); /* create a user for accessing the source storage */ memset(&input, 0, sizeof(input)); input.module = "mail"; input.username = "******"; input.flags_override_add = MAIL_STORAGE_SERVICE_FLAG_NO_NAMESPACES | MAIL_STORAGE_SERVICE_FLAG_NO_RESTRICT_ACCESS; input.flags_override_remove = MAIL_STORAGE_SERVICE_FLAG_USERDB_LOOKUP; if (mail_storage_service_lookup_next(ctx->ctx.storage_service, &input, &service_user, &user, &error) < 0) i_fatal("Import user initialization failed: %s", error); if (mail_namespaces_init_location(user, src_location, &error) < 0) i_fatal("Import namespace initialization failed: %s", error); ctx->src_user = user; mail_storage_service_user_free(&service_user); }
static void cmd_import_init_source_user(struct import_cmd_context *ctx) { struct mail_storage_service_input input; struct mail_storage_service_user *service_user; struct mail_user *user; const char *error; /* create a user for accessing the source storage */ memset(&input, 0, sizeof(input)); input.module = "mail"; input.username = "******"; input.flags_override_add = MAIL_STORAGE_SERVICE_FLAG_NO_NAMESPACES | MAIL_STORAGE_SERVICE_FLAG_NO_RESTRICT_ACCESS; input.flags_override_remove = MAIL_STORAGE_SERVICE_FLAG_USERDB_LOOKUP; if (mail_storage_service_lookup_next(ctx->ctx.storage_service, &input, &service_user, &user, &error) < 0) i_fatal("Import user initialization failed: %s", error); if (mail_namespaces_init_location(user, ctx->src_location, &error) < 0) i_fatal("Import namespace initialization failed: %s", error); ctx->src_user = user; mail_storage_service_user_free(&service_user); }