Postfix3.3.1
cleanup.h
[詳解]
1 /*++
2 /* NAME
3 /* cleanup 3h
4 /* SUMMARY
5 /* canonicalize and enqueue message
6 /* SYNOPSIS
7 /* #include "cleanup.h"
8 /* DESCRIPTION
9 /* .nf
10 
11  /*
12  * System library.
13  */
14 #include <sys/time.h>
15 
16  /*
17  * Utility library.
18  */
19 #include <vstring.h>
20 #include <vstream.h>
21 #include <argv.h>
22 #include <nvtable.h>
23 
24  /*
25  * Global library.
26  */
27 #include <maps.h>
28 #include <tok822.h>
29 #include <been_here.h>
30 #include <mail_stream.h>
31 #include <mail_conf.h>
32 #include <mime_state.h>
33 #include <string_list.h>
34 #include <cleanup_user.h>
35 #include <header_body_checks.h>
36 #include <dsn_mask.h>
37 
38  /*
39  * Milter library.
40  */
41 #include <milter.h>
42 
43  /*
44  * These state variables are accessed by many functions, and there is only
45  * one instance of each per message.
46  */
47 typedef struct CLEANUP_STATE {
48  VSTRING *attr_buf; /* storage for named attribute */
49  VSTRING *temp1; /* scratch buffer, local use only */
50  VSTRING *temp2; /* scratch buffer, local use only */
51  VSTRING *stripped_buf; /* character stripped input */
52  VSTREAM *src; /* current input stream */
53  VSTREAM *dst; /* current output stream */
54  MAIL_STREAM *handle; /* mail stream handle */
55  char *queue_name; /* queue name */
56  char *queue_id; /* queue file basename */
57  struct timeval arrival_time; /* arrival time */
58  char *fullname; /* envelope sender full name */
59  char *sender; /* envelope sender address */
60  char *recip; /* envelope recipient address */
61  char *orig_rcpt; /* original recipient address */
62  char *return_receipt; /* return-receipt address */
63  char *errors_to; /* errors-to address */
64  ARGV *auto_hdrs; /* MTA's own header(s) */
65  ARGV *hbc_rcpt; /* header/body checks BCC addresses */
66  int flags; /* processing options, status flags */
67  int tflags; /* User- or MTA-requested tracing */
68  int qmgr_opts; /* qmgr processing options */
69  int errs; /* any badness experienced */
70  int err_mask; /* allowed badness */
71  int headers_seen; /* which headers were seen */
72  int hop_count; /* count of received: headers */
73  char *resent; /* any resent- header seen */
74  BH_TABLE *dups; /* recipient dup filter */
75  void (*action) (struct CLEANUP_STATE *, int, const char *, ssize_t);
76  off_t data_offset; /* start of message content */
77  off_t body_offset; /* start of body content */
78  off_t xtra_offset; /* start of extra segment */
79  off_t cont_length; /* length including Milter edits */
80  off_t sender_pt_offset; /* replace sender here */
81  off_t sender_pt_target; /* record after sender address */
82  off_t append_rcpt_pt_offset; /* append recipient here */
83  off_t append_rcpt_pt_target; /* target of above record */
84  off_t append_hdr_pt_offset; /* append header here */
85  off_t append_hdr_pt_target; /* target of above record */
86  off_t append_meta_pt_offset; /* append meta record here */
87  off_t append_meta_pt_target; /* target of above record */
88  ssize_t rcpt_count; /* recipient count */
89  char *reason; /* failure reason */
90  char *smtp_reply; /* failure reason, SMTP-style */
91  NVTABLE *attr; /* queue file attribute list */
92  MIME_STATE *mime_state; /* MIME state engine */
93  int mime_errs; /* MIME error flags */
94  char *hdr_rewrite_context; /* header rewrite context */
95  char *filter; /* from header/body patterns */
96  char *redirect; /* from header/body patterns */
97  char *dsn_envid; /* DSN envelope ID */
98  int dsn_ret; /* DSN full/hdrs */
99  int dsn_notify; /* DSN never/delay/fail/success */
100  char *dsn_orcpt; /* DSN original recipient */
101  char *verp_delims; /* VERP delimiters (optional) */
102 #ifdef DELAY_ACTION
103  int defer_delay; /* deferred delivery */
104 #endif
105 
106  /*
107  * Miscellaneous Milter support.
108  */
109  MILTERS *milters; /* mail filters */
110  const char *client_name; /* real or ersatz client */
111  const char *reverse_name; /* real or ersatz client */
112  const char *client_addr; /* real or ersatz client */
113  int client_af; /* real or ersatz client */
114  const char *client_port; /* real or ersatz client */
115  const char *server_addr; /* real or ersatz server */
116  const char *server_port; /* real or ersatz server */
117  VSTRING *milter_ext_from; /* externalized sender */
118  VSTRING *milter_ext_rcpt; /* externalized recipient */
119  VSTRING *milter_err_text; /* milter call-back reply */
120  HBC_CHECKS *milter_hbc_checks; /* Milter header checks */
121  VSTRING *milter_hbc_reply; /* Milter header checks reply */
122  VSTRING *milter_dsn_buf; /* Milter DSN parsing buffer */
123 
124  /*
125  * Support for Milter body replacement requests.
126  */
127  struct CLEANUP_REGION *free_regions;/* unused regions */
128  struct CLEANUP_REGION *body_regions;/* regions with body content */
130 
131  /*
132  * Internationalization.
133  */
134  int smtputf8; /* what support is desired */
135 } CLEANUP_STATE;
136 
137  /*
138  * Status flags. Flags 0-15 are reserved for cleanup_user.h.
139  */
140 #define CLEANUP_FLAG_INRCPT (1<<16) /* Processing recipient records */
141 #define CLEANUP_FLAG_WARN_SEEN (1<<17) /* REC_TYPE_WARN record seen */
142 #define CLEANUP_FLAG_END_SEEN (1<<18) /* REC_TYPE_END record seen */
143 
144  /*
145  * Mappings.
146  */
150 extern int cleanup_comm_canon_flags;
151 extern int cleanup_send_canon_flags;
152 extern int cleanup_rcpt_canon_flags;
156 extern MAPS *cleanup_body_checks;
158 extern ARGV *cleanup_masq_domains;
160 extern int cleanup_masq_flags;
163 
164  /*
165  * Character filters.
166  */
169 
170  /*
171  * Milters.
172  */
173 extern MILTERS *cleanup_milters;
174 
175  /*
176  * Address canonicalization fine control.
177  */
178 #define CLEANUP_CANON_FLAG_ENV_FROM (1<<0) /* envelope sender */
179 #define CLEANUP_CANON_FLAG_ENV_RCPT (1<<1) /* envelope recipient */
180 #define CLEANUP_CANON_FLAG_HDR_FROM (1<<2) /* header sender */
181 #define CLEANUP_CANON_FLAG_HDR_RCPT (1<<3) /* header recipient */
182 
183  /*
184  * Address masquerading fine control.
185  */
186 #define CLEANUP_MASQ_FLAG_ENV_FROM (1<<0) /* envelope sender */
187 #define CLEANUP_MASQ_FLAG_ENV_RCPT (1<<1) /* envelope recipient */
188 #define CLEANUP_MASQ_FLAG_HDR_FROM (1<<2) /* header sender */
189 #define CLEANUP_MASQ_FLAG_HDR_RCPT (1<<3) /* header recipient */
190 
191  /*
192  * Restrictions on extension propagation.
193  */
194 extern int cleanup_ext_prop_mask;
195 
196  /*
197  * Saved queue file names, so the files can be removed in case of a fatal
198  * run-time error.
199  */
200 extern char *cleanup_path;
203 
204  /*
205  * cleanup_state.c
206  */
208 extern void cleanup_state_free(CLEANUP_STATE *);
209 
210  /*
211  * cleanup_api.c
212  */
214 extern void cleanup_control(CLEANUP_STATE *, int);
215 extern int cleanup_flush(CLEANUP_STATE *);
216 extern void cleanup_free(CLEANUP_STATE *);
217 extern void cleanup_all(void);
218 extern void cleanup_sig(int);
219 extern void cleanup_pre_jail(char *, char **);
220 extern void cleanup_post_jail(char *, char **);
221 extern const CONFIG_INT_TABLE cleanup_int_table[];
223 extern const CONFIG_STR_TABLE cleanup_str_table[];
225 
226 #define CLEANUP_RECORD(s, t, b, l) ((s)->action((s), (t), (b), (l)))
227 
228  /*
229  * cleanup_out.c
230  */
231 extern void cleanup_out(CLEANUP_STATE *, int, const char *, ssize_t);
232 extern void cleanup_out_string(CLEANUP_STATE *, int, const char *);
233 extern void PRINTFLIKE(3, 4) cleanup_out_format(CLEANUP_STATE *, int, const char *,...);
234 extern void cleanup_out_header(CLEANUP_STATE *, VSTRING *);
235 
236 #define CLEANUP_OUT_BUF(s, t, b) \
237  cleanup_out((s), (t), vstring_str((b)), VSTRING_LEN((b)))
238 
239 #define CLEANUP_OUT_OK(s) \
240  (!((s)->errs & (s)->err_mask) && !((s)->flags & CLEANUP_FLAG_DISCARD))
241 
242  /*
243  * cleanup_envelope.c
244  */
245 extern void cleanup_envelope(CLEANUP_STATE *, int, const char *, ssize_t);
246 
247  /*
248  * cleanup_message.c
249  */
250 extern void cleanup_message(CLEANUP_STATE *, int, const char *, ssize_t);
251 
252  /*
253  * cleanup_extracted.c
254  */
255 extern void cleanup_extracted(CLEANUP_STATE *, int, const char *, ssize_t);
256 
257  /*
258  * cleanup_final.c
259  */
260 extern void cleanup_final(CLEANUP_STATE *);
261 
262  /*
263  * cleanup_rewrite.c
264  */
265 extern int cleanup_rewrite_external(const char *, VSTRING *, const char *);
266 extern int cleanup_rewrite_internal(const char *, VSTRING *, const char *);
267 extern int cleanup_rewrite_tree(const char *, TOK822 *);
268 
269  /*
270  * cleanup_map11.c
271  */
272 extern int cleanup_map11_external(CLEANUP_STATE *, VSTRING *, MAPS *, int);
273 extern int cleanup_map11_internal(CLEANUP_STATE *, VSTRING *, MAPS *, int);
274 extern int cleanup_map11_tree(CLEANUP_STATE *, TOK822 *, MAPS *, int);
275 
276  /*
277  * cleanup_map1n.c
278  */
279 ARGV *cleanup_map1n_internal(CLEANUP_STATE *, const char *, MAPS *, int);
280 
281  /*
282  * cleanup_masquerade.c
283  */
284 extern int cleanup_masquerade_external(CLEANUP_STATE *, VSTRING *, ARGV *);
285 extern int cleanup_masquerade_internal(CLEANUP_STATE *, VSTRING *, ARGV *);
286 extern int cleanup_masquerade_tree(CLEANUP_STATE *, TOK822 *, ARGV *);
287 
288  /*
289  * cleanup_recipient.c
290  */
291 extern void cleanup_out_recipient(CLEANUP_STATE *, const char *, int, const char *, const char *);
292 
293  /*
294  * cleanup_addr.c.
295  */
296 extern off_t cleanup_addr_sender(CLEANUP_STATE *, const char *);
297 extern void cleanup_addr_recipient(CLEANUP_STATE *, const char *);
298 extern void cleanup_addr_bcc_dsn(CLEANUP_STATE *, const char *, const char *, int);
299 
300 #define NO_DSN_ORCPT ((char *) 0)
301 #define NO_DSN_NOTIFY DSN_NOTIFY_NEVER
302 #define DEF_DSN_NOTIFY (0)
303 
304 #define cleanup_addr_bcc(state, addr) \
305  cleanup_addr_bcc_dsn((state), (addr), NO_DSN_ORCPT, NO_DSN_NOTIFY)
306 
307  /*
308  * cleanup_bounce.c.
309  */
310 extern int cleanup_bounce(CLEANUP_STATE *);
311 
312  /*
313  * MSG_STATS compatibility.
314  */
315 #define CLEANUP_MSG_STATS(stats, state) \
316  MSG_STATS_INIT1(stats, incoming_arrival, state->arrival_time)
317 
318  /*
319  * cleanup_milter.c.
320  */
321 extern void cleanup_milter_receive(CLEANUP_STATE *, int);
322 extern void cleanup_milter_inspect(CLEANUP_STATE *, MILTERS *);
323 extern void cleanup_milter_emul_mail(CLEANUP_STATE *, MILTERS *, const char *);
324 extern void cleanup_milter_emul_rcpt(CLEANUP_STATE *, MILTERS *, const char *);
325 extern void cleanup_milter_emul_data(CLEANUP_STATE *, MILTERS *);
326 
327 #define CLEANUP_MILTER_OK(s) \
328  (((s)->flags & CLEANUP_FLAG_MILTER) != 0 \
329  && (s)->errs == 0 && ((s)->flags & CLEANUP_FLAG_DISCARD) == 0)
330 
331  /*
332  * cleanup_body_edit.c
333  */
334 typedef struct CLEANUP_REGION {
335  off_t start; /* start of region */
336  off_t len; /* length or zero (open-ended) */
337  off_t write_offs; /* write offset */
338  struct CLEANUP_REGION *next; /* linkage */
340 
341 extern void cleanup_region_init(CLEANUP_STATE *);
342 extern CLEANUP_REGION *cleanup_region_open(CLEANUP_STATE *, ssize_t);
343 extern void cleanup_region_close(CLEANUP_STATE *, CLEANUP_REGION *);
344 extern CLEANUP_REGION *cleanup_region_return(CLEANUP_STATE *, CLEANUP_REGION *);
345 extern void cleanup_region_done(CLEANUP_STATE *);
346 
347 extern int cleanup_body_edit_start(CLEANUP_STATE *);
348 extern int cleanup_body_edit_write(CLEANUP_STATE *, int, VSTRING *);
349 extern int cleanup_body_edit_finish(CLEANUP_STATE *);
350 extern void cleanup_body_edit_free(CLEANUP_STATE *);
351 
352  /*
353  * From: header formatting.
354  */
355 #define HFROM_FORMAT_CODE_STD 0
356 #define HFROM_FORMAT_CODE_OBS 1
357 extern int hfrom_format_code;
358 
359 /* LICENSE
360 /* .ad
361 /* .fi
362 /* The Secure Mailer license must be distributed with this software.
363 /* AUTHOR(S)
364 /* Wietse Venema
365 /* IBM T.J. Watson Research
366 /* P.O. Box 704
367 /* Yorktown Heights, NY 10598, USA
368 /*
369 /* Wietse Venema
370 /* Google, Inc.
371 /* 111 8th Avenue
372 /* New York, NY 10011, USA
373 /*--*/
struct CLEANUP_STATE CLEANUP_STATE
VSTRING * milter_ext_rcpt
Definition: cleanup.h:118
MAPS * cleanup_send_bcc_maps
Definition: cleanup_init.c:262
void cleanup_milter_inspect(CLEANUP_STATE *, MILTERS *)
int cleanup_masquerade_external(CLEANUP_STATE *, VSTRING *, ARGV *)
struct CLEANUP_REGION CLEANUP_REGION
char * orig_rcpt
Definition: cleanup.h:61
VSTRING * cleanup_bounce_path
int smtputf8
Definition: cleanup.h:134
void cleanup_out_format(CLEANUP_STATE *state, int type, const char *fmt,...)
Definition: cleanup_out.c:155
void cleanup_extracted(CLEANUP_STATE *, int, const char *, ssize_t)
int hfrom_format_code
Definition: cleanup_init.c:284
int cleanup_rewrite_tree(const char *, TOK822 *)
MAPS * cleanup_rcpt_bcc_maps
Definition: cleanup_init.c:263
char * recip
Definition: cleanup.h:60
void cleanup_envelope(CLEANUP_STATE *, int, const char *, ssize_t)
char * queue_name
Definition: cleanup.h:55
int cleanup_map11_internal(CLEANUP_STATE *, VSTRING *, MAPS *, int)
VSTRING * cleanup_trace_path
Definition: cleanup_init.c:117
char * fullname
Definition: cleanup.h:58
MAPS * cleanup_virt_alias_maps
Definition: cleanup_init.c:258
ARGV * cleanup_map1n_internal(CLEANUP_STATE *, const char *, MAPS *, int)
Definition: cleanup_map1n.c:77
Definition: argv.h:17
off_t body_offset
Definition: cleanup.h:77
MAPS * cleanup_body_checks
Definition: cleanup_init.c:257
off_t cleanup_addr_sender(CLEANUP_STATE *, const char *)
Definition: cleanup_addr.c:111
off_t start
Definition: cleanup.h:335
VSTRING * milter_err_text
Definition: cleanup.h:119
void cleanup_milter_emul_mail(CLEANUP_STATE *, MILTERS *, const char *)
void cleanup_state_free(CLEANUP_STATE *)
int tflags
Definition: cleanup.h:67
#define STRING_LIST
Definition: string_list.h:22
MAPS * cleanup_rcpt_canon_maps
Definition: cleanup_init.c:250
off_t sender_pt_target
Definition: cleanup.h:81
int mime_errs
Definition: cleanup.h:93
CLEANUP_REGION * cleanup_region_return(CLEANUP_STATE *, CLEANUP_REGION *)
int client_af
Definition: cleanup.h:113
off_t append_rcpt_pt_target
Definition: cleanup.h:83
HBC_CHECKS * milter_hbc_checks
Definition: cleanup.h:120
char * reason
Definition: cleanup.h:89
char * redirect
Definition: cleanup.h:96
void cleanup_post_jail(char *, char **)
Definition: cleanup_init.c:434
Definition: tok822.h:27
MILTERS * milters
Definition: cleanup.h:109
void cleanup_region_close(CLEANUP_STATE *, CLEANUP_REGION *)
Definition: maps.h:22
void cleanup_message(CLEANUP_STATE *, int, const char *, ssize_t)
int cleanup_comm_canon_flags
Definition: cleanup_init.c:251
VSTRING * temp2
Definition: cleanup.h:50
char * return_receipt
Definition: cleanup.h:62
int cleanup_map11_external(CLEANUP_STATE *, VSTRING *, MAPS *, int)
Definition: cleanup_map11.c:96
CLEANUP_STATE * cleanup_open(VSTREAM *)
Definition: cleanup_api.c:132
CLEANUP_REGION * cleanup_region_open(CLEANUP_STATE *, ssize_t)
struct timeval arrival_time
Definition: cleanup.h:57
ARGV * cleanup_masq_domains
Definition: cleanup_init.c:259
char * cleanup_path
Definition: cleanup_init.c:111
off_t xtra_offset
Definition: cleanup.h:78
Definition: htable.h:25
int cleanup_body_edit_write(CLEANUP_STATE *, int, VSTRING *)
void cleanup_body_edit_free(CLEANUP_STATE *)
void PRINTFLIKE(3, 4) cleanup_out_format(CLEANUP_STATE *
Definition: smtpd_proxy.c:653
STRING_LIST * cleanup_masq_exceptions
Definition: cleanup_init.c:260
VSTRING * milter_dsn_buf
Definition: cleanup.h:122
const char * client_port
Definition: cleanup.h:114
char * dsn_envid
Definition: cleanup.h:97
const CONFIG_TIME_TABLE cleanup_time_table[]
Definition: cleanup_init.c:194
int err_mask
Definition: cleanup.h:70
NVTABLE * attr
Definition: cleanup.h:91
int cleanup_ext_prop_mask
Definition: cleanup_init.c:274
int cleanup_body_edit_start(CLEANUP_STATE *)
MAPS * cleanup_nesthdr_checks
Definition: cleanup_init.c:256
off_t append_meta_pt_offset
Definition: cleanup.h:86
int cleanup_rcpt_canon_flags
Definition: cleanup_init.c:253
VSTRING * stripped_buf
Definition: cleanup.h:51
const char * server_addr
Definition: cleanup.h:115
const CONFIG_INT_TABLE cleanup_int_table[]
Definition: cleanup_init.c:176
int dsn_notify
Definition: cleanup.h:99
void cleanup_region_init(CLEANUP_STATE *)
int cleanup_map11_tree(CLEANUP_STATE *, TOK822 *, MAPS *, int)
VSTRING * cleanup_reject_chars
Definition: cleanup_init.c:268
const CONFIG_BOOL_TABLE cleanup_bool_table[]
Definition: cleanup_init.c:187
int cleanup_flush(CLEANUP_STATE *)
Definition: cleanup_api.c:208
char * errors_to
Definition: cleanup.h:63
VSTRING * milter_hbc_reply
Definition: cleanup.h:121
void cleanup_all(void)
Definition: cleanup_init.c:288
off_t append_rcpt_pt_offset
Definition: cleanup.h:82
void cleanup_milter_emul_rcpt(CLEANUP_STATE *, MILTERS *, const char *)
VSTREAM * src
Definition: cleanup.h:52
BH_TABLE * dups
Definition: cleanup.h:74
char * sender
Definition: cleanup.h:59
char * dsn_orcpt
Definition: cleanup.h:100
off_t sender_pt_offset
Definition: cleanup.h:80
const char * reverse_name
Definition: cleanup.h:111
off_t append_hdr_pt_offset
Definition: cleanup.h:84
VSTRING * milter_ext_from
Definition: cleanup.h:117
int cleanup_body_edit_finish(CLEANUP_STATE *)
char * hdr_rewrite_context
Definition: cleanup.h:94
MAPS * cleanup_mimehdr_checks
Definition: cleanup_init.c:255
ARGV * hbc_rcpt
Definition: cleanup.h:65
int headers_seen
Definition: cleanup.h:71
const char * client_addr
Definition: cleanup.h:112
int cleanup_bounce(CLEANUP_STATE *)
void cleanup_final(CLEANUP_STATE *)
Definition: cleanup_final.c:45
char * filter
Definition: cleanup.h:95
struct CLEANUP_REGION * curr_body_region
Definition: cleanup.h:129
const CONFIG_STR_TABLE cleanup_str_table[]
Definition: cleanup_init.c:202
void cleanup_region_done(CLEANUP_STATE *)
int cleanup_send_canon_flags
Definition: cleanup_init.c:252
void(* action)(struct CLEANUP_STATE *, int, const char *, ssize_t)
Definition: cleanup.h:75
void int
Definition: cleanup.h:233
ARGV * auto_hdrs
Definition: cleanup.h:64
void cleanup_free(CLEANUP_STATE *)
Definition: cleanup_api.c:379
VSTRING * attr_buf
Definition: cleanup.h:48
CLEANUP_STATE * cleanup_state_alloc(VSTREAM *)
Definition: cleanup_state.c:65
struct CLEANUP_REGION * body_regions
Definition: cleanup.h:128
char * queue_id
Definition: cleanup.h:56
MAPS * cleanup_comm_canon_maps
Definition: cleanup_init.c:248
int hop_count
Definition: cleanup.h:72
void cleanup_milter_receive(CLEANUP_STATE *, int)
const char * server_port
Definition: cleanup.h:116
VSTREAM * dst
Definition: cleanup.h:53
MAPS * cleanup_header_checks
Definition: cleanup_init.c:254
off_t append_meta_pt_target
Definition: cleanup.h:87
void cleanup_sig(int)
Definition: cleanup_init.c:295
VSTRING * temp1
Definition: cleanup.h:49
int cleanup_masquerade_internal(CLEANUP_STATE *, VSTRING *, ARGV *)
int cleanup_masq_flags
Definition: cleanup_init.c:261
void const char void cleanup_out_header(CLEANUP_STATE *, VSTRING *)
Definition: cleanup_out.c:170
int cleanup_masquerade_tree(CLEANUP_STATE *, TOK822 *, ARGV *)
int dsn_ret
Definition: cleanup.h:98
off_t cont_length
Definition: cleanup.h:79
const char * client_name
Definition: cleanup.h:110
MAPS * cleanup_send_canon_maps
Definition: cleanup_init.c:249
char * verp_delims
Definition: cleanup.h:101
void cleanup_addr_bcc_dsn(CLEANUP_STATE *, const char *, const char *, int)
Definition: cleanup_addr.c:253
ssize_t rcpt_count
Definition: cleanup.h:88
void cleanup_out(CLEANUP_STATE *, int, const char *, ssize_t)
Definition: cleanup_out.c:102
struct CLEANUP_REGION * free_regions
Definition: cleanup.h:127
off_t append_hdr_pt_target
Definition: cleanup.h:85
MAIL_STREAM * handle
Definition: cleanup.h:54
void cleanup_milter_emul_data(CLEANUP_STATE *, MILTERS *)
void cleanup_control(CLEANUP_STATE *, int)
Definition: cleanup_api.c:184
void cleanup_out_string(CLEANUP_STATE *, int, const char *)
Definition: cleanup_out.c:148
MILTERS * cleanup_milters
Definition: cleanup_init.c:279
char * smtp_reply
Definition: cleanup.h:90
void cleanup_out_recipient(CLEANUP_STATE *, const char *, int, const char *, const char *)
struct CLEANUP_REGION * next
Definition: cleanup.h:338
off_t data_offset
Definition: cleanup.h:76
int qmgr_opts
Definition: cleanup.h:68
MIME_STATE * mime_state
Definition: cleanup.h:92
char * resent
Definition: cleanup.h:73
off_t write_offs
Definition: cleanup.h:337
VSTRING * cleanup_strip_chars
Definition: cleanup_init.c:269
int cleanup_rewrite_internal(const char *, VSTRING *, const char *)
int cleanup_rewrite_external(const char *, VSTRING *, const char *)
void cleanup_addr_recipient(CLEANUP_STATE *, const char *)
Definition: cleanup_addr.c:190
void cleanup_pre_jail(char *, char **)
Definition: cleanup_init.c:321