46 #define RESET_USER_ATTR(usr_attr, level) { \
47 usr_attr.uid = 0; usr_attr.gid = 0; usr_attr.home = 0; \
48 usr_attr.logname = 0; usr_attr.shell = 0; \
50 msg_info("%s[%d]: reset user_attr", myname, level); \
53 #define SET_USER_ATTR(usr_attr, pwd, level) { \
54 usr_attr.uid = pwd->pw_uid; usr_attr.gid = pwd->pw_gid; \
55 usr_attr.home = pwd->pw_dir; usr_attr.logname = pwd->pw_name; \
56 usr_attr.shell = pwd->pw_shell; \
58 msg_info("%s[%d]: set user_attr: %s", \
59 myname, level, pwd->pw_name); \
99 #define EXPAND_TYPE_ALIAS (1<<0)
100 #define EXPAND_TYPE_FWD (1<<1)
101 #define EXPAND_TYPE_INCL (1<<2)
116 #define RESET_OWNER_ATTR(msg_attr, level) { \
117 msg_attr.owner = 0; \
119 msg_info("%s[%d]: reset owner attr", myname, level); \
122 #define SET_OWNER_ATTR(msg_attr, who, level) { \
123 msg_attr.sender = msg_attr.owner = who; \
125 msg_info("%s[%d]: set owner attr: %s", \
126 myname, level, who); \
132 #define BOUNCE_FLAGS(request) DEL_REQ_TRACE_FLAGS((request)->flags)
134 #define BOUNCE_ATTR(attr) \
135 attr.queue_id, &attr.msg_stats, &attr.rcpt, attr.relay, \
136 DSN_FROM_DSN_BUF(attr.why)
137 #define BOUNCE_ONE_ATTR(attr) \
138 attr.queue_name, attr.queue_id, attr.encoding, attr.smtputf8, \
139 attr.sender, attr.dsn_envid, attr.dsn_ret, \
140 &attr.msg_stats, &attr.rcpt, attr.relay, \
141 DSN_FROM_DSN_BUF(attr.why)
142 #define SENT_ATTR(attr) \
143 attr.queue_id, &attr.msg_stats, &attr.rcpt, attr.relay, \
144 DSN_FROM_DSN_BUF(attr.why)
145 #define OPENED_ATTR(attr) \
146 attr.queue_id, attr.sender
147 #define COPY_ATTR(attr) \
148 attr.sender, attr.rcpt.orig_addr, attr.delivered, attr.fp
150 #define MSG_LOG_STATE(m, p) \
151 msg_info("%s[%d]: local %s recip %s exten %s deliver %s exp_from %s", \
154 p.msg_attr.local ? p.msg_attr.local : "" , \
155 p.msg_attr.rcpt.address ? p.msg_attr.rcpt.address : "", \
156 p.msg_attr.extension ? p.msg_attr.extension : "", \
157 p.msg_attr.delivered ? p.msg_attr.delivered : "", \
158 p.msg_attr.exp_from ? p.msg_attr.exp_from : "")
202 #define DELIVER_HDR_CMD (1<<0)
203 #define DELIVER_HDR_FILE (1<<1)
204 #define DELIVER_HDR_FWD (1<<2)
225 #define LOCAL_EXP_EXTENSION_MATCHED (1<<MAC_PARSE_USER)
235 #define STR(s) vstring_str(s)
int bounce_workaround(LOCAL_STATE)
void deliver_attr_dump(DELIVER_ATTR *)
int forward_append(DELIVER_ATTR)
int deliver_resolve_addr(LOCAL_STATE, USER_ATTR, char *)
int deliver_token_string(LOCAL_STATE, USER_ATTR, char *, int *)
void deliver_attr_free(DELIVER_ATTR *)
int deliver_indirect(LOCAL_STATE)
DELIVER_REQUEST * request
DELIVER_REQUEST * request
int deliver_recipient(LOCAL_STATE, USER_ATTR)
int deliver_include(LOCAL_STATE, USER_ATTR, char *)
struct DELIVER_ATTR DELIVER_ATTR
int deliver_mailbox(LOCAL_STATE, USER_ATTR, int *)
int deliver_token(LOCAL_STATE, USER_ATTR, TOK822 *)
int feature_control(const char *)
struct LOCAL_STATE LOCAL_STATE
DELIVERED_HDR_INFO * loop_info
struct USER_ATTR USER_ATTR
int deliver_resolve_tree(LOCAL_STATE, USER_ATTR, TOK822 *)
int deliver_command(LOCAL_STATE, USER_ATTR, const char *)
int deliver_file(LOCAL_STATE, USER_ATTR, char *)
int local_file_deliver_mask
int local_cmd_deliver_mask
int local_expand(VSTRING *, const char *, LOCAL_STATE *, USER_ATTR *, const char *)
int deliver_alias(LOCAL_STATE, USER_ATTR, char *, int *)
int deliver_dotforward(LOCAL_STATE, USER_ATTR, int *)
int local_deliver_hdr_mask
void deliver_attr_init(DELIVER_ATTR *)
int deliver_maildir(LOCAL_STATE, USER_ATTR, char *)
int forward_finish(DELIVER_REQUEST *, DELIVER_ATTR, int)
int deliver_unknown(LOCAL_STATE, USER_ATTR)
int deliver_token_stream(LOCAL_STATE, USER_ATTR, VSTREAM *, int *)