Provide a switch to turn off envelope recipient canonicalization.
Canonicalizing the recipient is usually undesirable for sites that have local delivery distributed over multiple machines.
This commit is contained in:
parent
aa309c7dc2
commit
ab13a2b0d3
|
@ -281,6 +281,7 @@ int main(int argc, char **argv)
|
|||
* Pass control to the single-threaded service skeleton.
|
||||
*/
|
||||
single_server_main(argc, argv, cleanup_service,
|
||||
MAIL_SERVER_BOOL_TABLE, cleanup_bool_table,
|
||||
MAIL_SERVER_INT_TABLE, cleanup_int_table,
|
||||
MAIL_SERVER_STR_TABLE, cleanup_str_table,
|
||||
MAIL_SERVER_TIME_TABLE, cleanup_time_table,
|
||||
|
|
|
@ -109,6 +109,7 @@ extern void cleanup_free(CLEANUP_STATE *);
|
|||
extern void cleanup_all(void);
|
||||
extern void cleanup_pre_jail(char *, char **);
|
||||
extern void cleanup_post_jail(char *, char **);
|
||||
extern CONFIG_BOOL_TABLE cleanup_bool_table[];
|
||||
extern CONFIG_INT_TABLE cleanup_int_table[];
|
||||
extern CONFIG_STR_TABLE cleanup_str_table[];
|
||||
extern CONFIG_TIME_TABLE cleanup_time_table[];
|
||||
|
|
|
@ -166,15 +166,19 @@ static void cleanup_envelope_process(CLEANUP_STATE *state, int type, char *buf,
|
|||
return;
|
||||
}
|
||||
cleanup_rewrite_internal(clean_addr, *buf ? buf : var_empty_addr);
|
||||
if (cleanup_rcpt_canon_maps)
|
||||
cleanup_map11_internal(state, clean_addr, cleanup_rcpt_canon_maps,
|
||||
cleanup_ext_prop_mask & EXT_PROP_CANONICAL);
|
||||
if (cleanup_comm_canon_maps)
|
||||
cleanup_map11_internal(state, clean_addr, cleanup_comm_canon_maps,
|
||||
cleanup_ext_prop_mask & EXT_PROP_CANONICAL);
|
||||
if (cleanup_masq_domains
|
||||
&& (cleanup_masq_flags & CLEANUP_MASQ_FLAG_ENV_RCPT))
|
||||
cleanup_masquerade_internal(clean_addr, cleanup_masq_domains);
|
||||
if (var_canon_env_rcpt) {
|
||||
if (cleanup_rcpt_canon_maps)
|
||||
cleanup_map11_internal(state, clean_addr,
|
||||
cleanup_rcpt_canon_maps,
|
||||
cleanup_ext_prop_mask & EXT_PROP_CANONICAL);
|
||||
if (cleanup_comm_canon_maps)
|
||||
cleanup_map11_internal(state, clean_addr,
|
||||
cleanup_comm_canon_maps,
|
||||
cleanup_ext_prop_mask & EXT_PROP_CANONICAL);
|
||||
if (cleanup_masq_domains
|
||||
&& (cleanup_masq_flags & CLEANUP_MASQ_FLAG_ENV_RCPT))
|
||||
cleanup_masquerade_internal(clean_addr, cleanup_masq_domains);
|
||||
}
|
||||
cleanup_out_recipient(state, STR(clean_addr));
|
||||
if (state->recip == 0)
|
||||
state->recip = mystrdup(STR(clean_addr));
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
/* SYNOPSIS
|
||||
/* #include "cleanup.h"
|
||||
/*
|
||||
/* CONFIG_BOOL_TABLE cleanup_bool_table[];
|
||||
/*
|
||||
/* CONFIG_INT_TABLE cleanup_int_table[];
|
||||
/*
|
||||
/* CONFIG_STR_TABLE cleanup_str_table[];
|
||||
|
@ -28,7 +30,7 @@
|
|||
/* for one-time initializations that must be done before any message
|
||||
/* processing can take place.
|
||||
/*
|
||||
/* cleanup_{int,str,time}_table[] specify configuration
|
||||
/* cleanup_{bool,int,str,time}_table[] specify configuration
|
||||
/* parameters that must be initialized before calling any functions
|
||||
/* in this module. These tables satisfy the interface as specified in
|
||||
/* single_service(3).
|
||||
|
@ -107,6 +109,7 @@ char *var_prop_extension; /* propagate unmatched extension */
|
|||
char *var_always_bcc; /* big brother */
|
||||
int var_extra_rcpt_limit; /* recipient extract limit */
|
||||
char *var_rcpt_witheld; /* recipients not disclosed */
|
||||
bool var_canon_env_rcpt; /* canonicalize envelope recipient */
|
||||
char *var_masq_classes; /* what to masquerade */
|
||||
|
||||
CONFIG_INT_TABLE cleanup_int_table[] = {
|
||||
|
@ -139,6 +142,11 @@ CONFIG_STR_TABLE cleanup_str_table[] = {
|
|||
0,
|
||||
};
|
||||
|
||||
CONFIG_BOOL_TABLE cleanup_bool_table[] = {
|
||||
VAR_CANON_ENV_RCPT, DEF_CANON_ENV_RCPT, &var_canon_env_rcpt,
|
||||
0,
|
||||
};
|
||||
|
||||
/*
|
||||
* Mappings.
|
||||
*/
|
||||
|
|
|
@ -295,6 +295,10 @@ extern char *var_send_canon_maps;
|
|||
#define DEF_RCPT_CANON_MAPS ""
|
||||
extern char *var_rcpt_canon_maps;
|
||||
|
||||
#define VAR_CANON_ENV_RCPT "canonicalize_envelope_recipient"
|
||||
#define DEF_CANON_ENV_RCPT 1
|
||||
extern bool var_canon_env_rcpt;
|
||||
|
||||
#define VAR_TRANSPORT_MAPS "transport_maps"
|
||||
#define DEF_TRANSPORT_MAPS ""
|
||||
extern char *var_transport_maps;
|
||||
|
|
Loading…
Reference in New Issue