183 #define STR(x) vstring_str(x)
198 msg_warn(
"defer_append: ignoring dsn code \"%s\"", my_dsn.
status);
207 if (dsn_res->
status[0] ==
'5')
220 const char *rcpt_domain;
229 my_dsn.
action =
"undeliverable";
240 my_dsn.
action =
"undeliverable";
241 status =
trace_append(flags,
id, stats, rcpt, relay, &my_dsn);
257 my_dsn.
action =
"delayed";
267 log_adhoc(
id, stats, rcpt, relay, &my_dsn,
"deferred");
273 if (
trace_append(flags,
id, stats, rcpt, relay, &my_dsn) != 0)
280 if ((rcpt_domain = strrchr(rcpt->
address,
'@')) != 0
281 && *++rcpt_domain != 0)
297 const char *encoding,
int smtputf8,
298 const char *sender,
const char *dsn_envid,
324 const char *encoding,
int smtputf8,
325 const char *sender,
const char *envid,
int dsn_ret)
346 int defer_one(
int flags,
const char *queue,
const char *
id,
347 const char *encoding,
int smtputf8,
348 const char *sender,
const char *dsn_envid,
350 const char *relay,
DSN *dsn)
368 if (dsn_res->
status[0] ==
'5')
370 sender, dsn_envid, dsn_ret, stats,
371 rcpt, relay, dsn_res));
int dsn_print(ATTR_PRINT_MASTER_FN print_fn, VSTREAM *fp, int flags, void *ptr)
DSN_FILTER * delivery_status_filter
size_t dsn_valid(const char *text)
#define MAIL_ATTR_ENCODING
int trace_append(int flags, const char *id, MSG_STATS *stats, RECIPIENT *rcpt, const char *relay, DSN *dsn)
int defer_flush(int flags, const char *queue, const char *id, const char *encoding, int smtputf8, const char *sender, const char *dsn_envid, int dsn_ret)
#define DEL_REQ_FLAG_USR_VRFY
#define BOUNCE_CMD_APPEND
int defer_one(int flags, const char *queue, const char *id, const char *encoding, int smtputf8, const char *sender, const char *dsn_envid, int dsn_ret, MSG_STATS *stats, RECIPIENT *rcpt, const char *relay, DSN *dsn)
int bounce_append_intern(int flags, const char *id, MSG_STATS *stats, RECIPIENT *rcpt, const char *relay, DSN *dsn)
int flush_add(const char *site, const char *queue_id)
int verify_append(const char *queue_id, MSG_STATS *stats, RECIPIENT *recipient, const char *relay, DSN *dsn, int vrfy_stat)
#define MAIL_ATTR_SMTPUTF8
void msg_warn(const char *fmt,...)
#define MAIL_ATTR_DSN_RET
int mail_command_client(const char *class, const char *name,...)
#define MAIL_ATTR_DSN_ENVID
#define SEND_ATTR_INT(name, val)
int defer_append_intern(int flags, const char *id, MSG_STATS *stats, RECIPIENT *rcpt, const char *relay, DSN *dsn)
void log_adhoc(const char *id, MSG_STATS *stats, RECIPIENT *recipient, const char *relay, DSN *dsn, const char *status)
#define SEND_ATTR_FUNC(func, val)
int bounce_one_intern(int flags, const char *queue, const char *id, const char *encoding, int smtputf8, const char *sender, const char *dsn_envid, int dsn_ret, MSG_STATS *stats, RECIPIENT *rcpt, const char *relay, DSN *dsn)
int defer_append(int flags, const char *id, MSG_STATS *stats, RECIPIENT *rcpt, const char *relay, DSN *dsn)
int rcpt_print(ATTR_PRINT_MASTER_FN print_fn, VSTREAM *fp, int flags, void *ptr)
#define MAIL_ATTR_QUEUEID
#define DEL_RCPT_STAT_DEFER
#define BOUNCE_FLAG_DELRCPT
#define SEND_ATTR_STR(name, val)
#define MAIL_CLASS_PRIVATE
#define DEL_REQ_FLAG_MTA_VRFY
#define DEL_REQ_FLAG_RECORD
DSN * dsn_filter_lookup(DSN_FILTER *fp, DSN *dsn)
int defer_warn(int flags, const char *queue, const char *id, const char *encoding, int smtputf8, const char *sender, const char *envid, int dsn_ret)