81 #define STR vstring_str
86 char *queue_id,
char *encoding,
87 int smtputf8,
char *recipient,
88 char *dsn_envid,
int dsn_ret,
92 int bounce_status = 1;
93 int postmaster_status = 1;
124 encoding, smtputf8, dsn_envid, ts->
delay);
126 #define NULL_SENDER MAIL_ADDR_EMPTY
127 #define NULL_TRACE_FLAGS 0
150 msg_warn(
"%s: undeliverable postmaster notification discarded",
159 #define ANY_BOUNCE (MAIL_ERROR_2BOUNCE | MAIL_ERROR_BOUNCE)
160 #define SEND_POSTMASTER_DELAY_NOTICE (notify_mask & MAIL_ERROR_DELAY)
162 else if (*recipient == 0) {
190 if (bounce_status == 0)
191 msg_info(
"%s: postmaster delay notification: %s",
192 queue_id,
STR(new_id));
229 if (bounce_status == 0)
230 msg_info(
"%s: sender delay notification: %s",
231 queue_id,
STR(new_id));
273 if (postmaster_status == 0)
274 msg_info(
"%s: postmaster delay notification: %s",
275 queue_id,
STR(new_id));
279 postmaster_status = 0;
282 if (postmaster_status)
283 msg_warn(
"%s: postmaster notice failed while warning %s",
284 queue_id, recipient);
294 return (bounce_status);
int bounce_original(VSTREAM *bounce, BOUNCE_INFO *bounce_info, int headers_only)
#define DSN_NOTIFY_OVERRIDE
int bounce_header(VSTREAM *bounce, BOUNCE_INFO *bounce_info, const char *dest, int postmaster_copy)
const NAME_MASK mail_error_masks[]
#define strcasecmp_utf8(s1, s2)
int bounce_diagnostic_dsn(VSTREAM *bounce, BOUNCE_INFO *bounce_info, int notify_filter)
VSTREAM * post_mail_fopen_nowait(const char *sender, const char *recipient, int source_class, int trace_flags, int utf8_flags, VSTRING *queue_id)
char * var_notify_classes
int vstream_fclose(VSTREAM *stream)
#define MAIL_SRC_MASK_BOUNCE
void msg_warn(const char *fmt,...)
VSTRING * vstring_alloc(ssize_t len)
int post_mail_fclose(VSTREAM *cleanup)
#define SEND_POSTMASTER_DELAY_NOTICE
#define name_mask(tag, table, str)
int bounce_boilerplate(VSTREAM *bounce, BOUNCE_INFO *bounce_info)
int bounce_diagnostic_log(VSTREAM *bounce, BOUNCE_INFO *bounce_info, int notify_filter)
#define VAR_NOTIFY_CLASSES
const char * mail_addr_double_bounce(void)
#define NO_POSTMASTER_COPY
BOUNCE_INFO * bounce_mail_init(const char *service, const char *queue_name, const char *queue_id, const char *encoding, int smtputf8, const char *dsn_envid, BOUNCE_TEMPLATE *template)
VSTRING * vstring_free(VSTRING *vp)
int bounce_warn_service(int unused_flags, char *service, char *queue_name, char *queue_id, char *encoding, int smtputf8, char *recipient, char *dsn_envid, int dsn_ret, BOUNCE_TEMPLATES *ts)
void bounce_mail_free(BOUNCE_INFO *bounce_info)
int bounce_header_dsn(VSTREAM *bounce, BOUNCE_INFO *bounce_info)
void msg_info(const char *fmt,...)