123 my_dsn.
action =
"deliverable";
134 my_dsn.
action =
"deliverable";
135 status =
trace_append(flags,
id, stats, recipient, relay, &my_dsn);
145 #define REC_ALL_SENT(flags) (flags & DEL_REQ_FLAG_RECORD)
146 #define REC_DLY_SENT(flags, rcpt) \
147 ((flags & DEL_REQ_FLAG_REC_DLY_SENT) \
148 && (rcpt->dsn_notify == 0 || (rcpt->dsn_notify & DSN_NOTIFY_DELAY)))
151 my_dsn.
action =
"delivered";
154 ||
trace_append(flags,
id, stats, recipient, relay, &my_dsn) == 0)
156 ||
trace_append(flags,
id, stats, recipient, relay, &my_dsn) == 0)) {
157 log_adhoc(
id, stats, recipient, relay, &my_dsn,
"sent");
166 status =
defer_append(flags,
id, stats, recipient, relay, &my_dsn);
DSN_FILTER * delivery_status_filter
size_t dsn_valid(const char *text)
int trace_append(int flags, const char *id, MSG_STATS *stats, RECIPIENT *rcpt, const char *relay, DSN *dsn)
#define DEL_REQ_FLAG_USR_VRFY
#define REC_DLY_SENT(flags, rcpt)
#define REC_ALL_SENT(flags)
int verify_append(const char *queue_id, MSG_STATS *stats, RECIPIENT *recipient, const char *relay, DSN *dsn, int vrfy_stat)
void msg_warn(const char *fmt,...)
VSTRING * vstring_alloc(ssize_t len)
VSTRING * vstring_sprintf(VSTRING *vp, const char *format,...)
void log_adhoc(const char *id, MSG_STATS *stats, RECIPIENT *recipient, const char *relay, DSN *dsn, const char *status)
#define DSN_NOTIFY_SUCCESS
VSTRING * vstring_free(VSTRING *vp)
int defer_append(int flags, const char *id, MSG_STATS *stats, RECIPIENT *rcpt, const char *relay, DSN *dsn)
int sent(int flags, const char *id, MSG_STATS *stats, RECIPIENT *recipient, const char *relay, DSN *dsn)
#define DEL_REQ_FLAG_MTA_VRFY
DSN * dsn_filter_lookup(DSN_FILTER *fp, DSN *dsn)