76 #define STR(x) vstring_str(x)
78 static void cleanup_extracted_process(
CLEANUP_STATE *,
int,
const char *, ssize_t);
84 const char *buf, ssize_t
len)
95 state->
action = cleanup_extracted_process;
96 cleanup_extracted_process(state, type, buf, len);
101 void cleanup_extracted_process(
CLEANUP_STATE *state,
int type,
102 const char *buf, ssize_t
len)
104 const char *myname =
"cleanup_extracted_process";
105 const char *encoding;
108 const char *error_text;
118 msg_info(
"extracted envelope %c %.*s", type, (
int) len, buf);
122 extra_opts = atoi(buf);
124 msg_warn(
"%s: ignoring bad extra flags: 0x%x",
127 state->
flags |= extra_opts;
133 defer_delay = atoi(buf);
134 if (defer_delay <= 0)
137 state->defer_delay = defer_delay;
144 "unexpected record type %d in extracted envelope",
159 if (error_text != 0) {
160 msg_warn(
"%s: message rejected: malformed attribute: %s: %.100s",
166 if (*attr_value == 0) {
167 msg_warn(
"%s: spurious null attribute value for \"%s\" -- ignored",
206 msg_warn(
"%s: message rejected: envelope recipient precedes sender",
241 msg_warn(
"%s: ignoring out-of-order DSN original recipient record <%.200s>",
250 msg_warn(
"%s: ignoring out-of-order DSN notify record <%d>",
255 msg_warn(
"%s: ignoring malformed dsn notify record <%.200s>",
264 msg_warn(
"%s: ignoring out-of-order original recipient record <%.200s>",
283 cleanup_extracted_finish(state);
#define QMGR_READ_FLAG_MIXED_RCPT_OTHER
void cleanup_out_format(CLEANUP_STATE *state, int type, const char *fmt,...)
char * mystrdup(const char *str)
#define MAIL_ATTR_ENCODING
ARGV * argv_free(ARGV *argvp)
off_t vstream_ftell(VSTREAM *stream)
off_t append_rcpt_pt_target
#define CLEANUP_MILTER_OK(s)
int alldig(const char *string)
const char * split_nameval(char *buf, char **name, char **value)
#define REC_TYPE_DSN_NOTIFY
#define CLEANUP_FLAG_INRCPT
VSTRING * vstring_strcpy(VSTRING *vp, const char *src)
off_t append_meta_pt_offset
#define REC_TYPE_DSN_ORCPT
#define REC_TYPE_PTR_FORMAT
off_t append_rcpt_pt_offset
void cleanup_milter_emul_rcpt(CLEANUP_STATE *, MILTERS *, const char *)
#define cleanup_addr_bcc(state, addr)
#define CLEANUP_FLAG_MASK_EXTRA
void msg_warn(const char *fmt,...)
void(* action)(struct CLEANUP_STATE *, int, const char *, ssize_t)
int rec_attr_map(const char *attr_name)
NORETURN msg_fatal(const char *fmt,...)
off_t append_meta_pt_target
#define CLEANUP_OUT_OK(s)
#define CLEANUP_FLAG_END_SEEN
#define QMGR_READ_FLAG_FROM_DSN(x)
#define nvtable_find(table, key)
void cleanup_out(CLEANUP_STATE *, int, const char *, ssize_t)
void cleanup_out_string(CLEANUP_STATE *, int, const char *)
MILTERS * cleanup_milters
#define CLEANUP_FLAG_BCC_OK
#define REC_TYPE_EXT_RECIPIENT
void cleanup_addr_recipient(CLEANUP_STATE *, const char *)
void msg_info(const char *fmt,...)