##
# Address to use when sending rejection mails.
-# Default is postmaster@<your domain>.
+# Default is postmaster@<your domain>. %d expands to recipient domain.
#postmaster_address =
# Hostname to use in various parts of sent mails (e.g. in Message-Id) and
struct mail_deliver_context ctx;
enum mail_storage_service_flags service_flags = 0;
const char *user, *errstr, *path;
+ struct lda_settings *lda_set;
struct mail_storage_service_ctx *storage_service;
struct mail_storage_service_user *service_user;
struct mail_storage_service_input service_input;
#ifdef SIGXFSZ
lib_signals_ignore(SIGXFSZ, TRUE);
#endif
- ctx.set = mail_storage_service_user_get_set(service_user)[1];
+ lda_set = mail_storage_service_user_get_set(service_user)[1];
+ settings_var_expand(&lda_setting_parser_info, lda_set,
+ ctx.dest_user->pool,
+ mail_user_var_expand_table(ctx.dest_user));
+ ctx.set = lda_set;
if (ctx.dest_user->mail_debug && *user_source != '\0') {
i_debug("userdb lookup skipped, username taken from %s",
{ SET_DEFLIST, name, offsetof(struct lda_settings, field), defines }
static const struct setting_define lda_setting_defines[] = {
- DEF(SET_STR, postmaster_address),
+ DEF(SET_STR_VARS, postmaster_address),
DEF(SET_STR, hostname),
DEF(SET_STR, submission_host),
DEF(SET_STR, sendmail_path),
struct mail_storage *storage;
const struct mail_storage_service_input *input;
const struct mail_storage_settings *mail_set;
+ struct lda_settings *lda_set;
struct mail_namespace *ns;
struct setting_parser_context *set_parser;
void **sets;
return -1;
}
sets = mail_storage_service_user_get_set(rcpt->service_user);
+ lda_set = sets[1];
+ settings_var_expand(&lda_setting_parser_info, lda_set, client->pool,
+ mail_user_var_expand_table(client->state.dest_user));
memset(&dctx, 0, sizeof(dctx));
dctx.session = session;
dctx.pool = session->pool;
- dctx.set = sets[1];
+ dctx.set = lda_set;
dctx.session_id = client->state.session_id;
dctx.src_mail = src_mail;
dctx.src_envelope_sender = client->state.mail_from;