#include <vstring.h>
#include <bounce_log.h>
extern int bounce_append_service(int, char *, char *, char *, char *, long, char *, char *, char *);
extern int bounce_notify_service(int, char *, char *, char *, char *, char *);
extern int bounce_warn_service(int, char *, char *, char *, char *, char *);
extern int bounce_trace_service(int, char *, char *, char *, char *, char *);
extern int bounce_notify_verp(int, char *, char *, char *, char *, char *, char *);
extern int bounce_one_service(int, char *, char *, char *, char *, char *, char *, long, char *, char *, char *);
extern VSTRING *bounce_cleanup_path;
extern void bounce_cleanup_register(char *, char *);
extern void bounce_cleanup_log(void);
extern void bounce_cleanup_unregister(void);
#define bounce_cleanup_registered() (bounce_cleanup_path != 0)
typedef struct {
const char *service;
const char *queue_name;
const char *queue_id;
const char *mime_encoding;
const char *mime_boundary;
int flush;
VSTRING *buf;
VSTRING *sender;
VSTREAM *orig_fp;
long orig_offs;
time_t arrival_time;
BOUNCE_LOG *log_handle;
char *mail_name;
} BOUNCE_INFO;
extern BOUNCE_INFO *bounce_mail_init(const char *, const char *, const char *, const char *, int);
extern BOUNCE_INFO *bounce_mail_one_init(const char *, const char *, const char *, const char *, const char *, long, const char *, const char *, const char *);
extern void bounce_mail_free(BOUNCE_INFO *);
extern int bounce_header(VSTREAM *, BOUNCE_INFO *, const char *);
extern int bounce_boilerplate(VSTREAM *, BOUNCE_INFO *);
extern int bounce_recipient_log(VSTREAM *, BOUNCE_INFO *);
extern int bounce_diagnostic_log(VSTREAM *, BOUNCE_INFO *);
extern int bounce_header_dsn(VSTREAM *, BOUNCE_INFO *);
extern int bounce_recipient_dsn(VSTREAM *, BOUNCE_INFO *);
extern int bounce_diagnostic_dsn(VSTREAM *, BOUNCE_INFO *);
extern int bounce_original(VSTREAM *, BOUNCE_INFO *, int);
extern void bounce_delrcpt(BOUNCE_INFO *);
extern void bounce_delrcpt_one(BOUNCE_INFO *);
#define BOUNCE_MSG_FAIL 0
#define BOUNCE_MSG_WARN 1
#define BOUNCE_MSG_STATUS 2