1/* $NetBSD: bounce_service.h,v 1.3 2022/10/08 16:12:45 christos Exp $ */ 2 3/*++ 4/* NAME 5/* bounce_service 3h 6/* SUMMARY 7/* bounce message service 8/* SYNOPSIS 9/* #include <bounce_service.h> 10/* DESCRIPTION 11/* .nf 12 13 /* 14 * Utility library. 15 */ 16#include <vstring.h> 17 18 /* 19 * Global library. 20 */ 21#include <bounce_log.h> 22 23 /* 24 * Application-specific. 25 */ 26#include <bounce_template.h> 27 28 /* 29 * bounce_service.c 30 */ 31extern int bounce_hfrom_format; 32 33 /* 34 * bounce_append_service.c 35 */ 36extern int bounce_append_service(int, char *, char *, RECIPIENT *, DSN *); 37 38 /* 39 * bounce_notify_service.c 40 */ 41extern int bounce_notify_service(int, char *, char *, char *, char *, int, char *, char *, int, BOUNCE_TEMPLATES *); 42 43 /* 44 * bounce_warn_service.c 45 */ 46extern int bounce_warn_service(int, char *, char *, char *, char *, int, char *, char *, int, BOUNCE_TEMPLATES *); 47 48 /* 49 * bounce_trace_service.c 50 */ 51extern int bounce_trace_service(int, char *, char *, char *, char *, int, char *, char *, int, BOUNCE_TEMPLATES *); 52 53 /* 54 * bounce_notify_verp.c 55 */ 56extern int bounce_notify_verp(int, char *, char *, char *, char *, int, char *, char *, int, char *, BOUNCE_TEMPLATES *); 57 58 /* 59 * bounce_one_service.c 60 */ 61extern int bounce_one_service(int, char *, char *, char *, int, char *, char *, int, RCPT_BUF *, DSN_BUF *, BOUNCE_TEMPLATES *); 62 63 /* 64 * bounce_cleanup.c 65 */ 66extern VSTRING *bounce_cleanup_path; 67extern void bounce_cleanup_register(char *, char *); 68extern void bounce_cleanup_log(void); 69extern void bounce_cleanup_unregister(void); 70 71#define bounce_cleanup_registered() (bounce_cleanup_path != 0) 72 73 /* 74 * bounce_notify_util.c 75 */ 76typedef struct { 77 const char *service; /* bounce or defer */ 78 const char *queue_name; /* incoming, etc. */ 79 const char *queue_id; /* base name */ 80 const char *mime_encoding; /* null or encoding */ 81 const char *dsn_envid; /* DSN envelope ID */ 82 const char *mime_boundary; /* for MIME */ 83 BOUNCE_TEMPLATE *template; /* bounce message template */ 84 VSTRING *buf; /* scratch pad */ 85 VSTRING *sender; /* envelope sender */ 86 VSTREAM *orig_fp; /* open queue file */ 87 long orig_offs; /* start of content */ 88 time_t arrival_time; /* time of arrival */ 89 long message_size; /* size of content */ 90 VSTRING *orig_msgid; /* original message-id */ 91 RCPT_BUF *rcpt_buf; /* recipient info */ 92 DSN_BUF *dsn_buf; /* delivery status info */ 93 BOUNCE_LOG *log_handle; /* open logfile */ 94 char *mail_name; /* $mail_name, cooked */ 95 int smtputf8; /* SMTPUTF8 requested */ 96} BOUNCE_INFO; 97 98 /* */ 99 100extern BOUNCE_INFO *bounce_mail_init(const char *, const char *, const char *, const char *, int, const char *, BOUNCE_TEMPLATE *); 101extern BOUNCE_INFO *bounce_mail_one_init(const char *, const char *, const char *, int, const char *, RCPT_BUF *, DSN_BUF *, BOUNCE_TEMPLATE *); 102extern void bounce_mail_free(BOUNCE_INFO *); 103extern int bounce_header(VSTREAM *, BOUNCE_INFO *, const char *, int); 104extern int bounce_boilerplate(VSTREAM *, BOUNCE_INFO *); 105extern int bounce_recipient_log(VSTREAM *, BOUNCE_INFO *); 106extern int bounce_diagnostic_log(VSTREAM *, BOUNCE_INFO *, int); 107extern int bounce_header_dsn(VSTREAM *, BOUNCE_INFO *); 108extern int bounce_recipient_dsn(VSTREAM *, BOUNCE_INFO *); 109extern int bounce_diagnostic_dsn(VSTREAM *, BOUNCE_INFO *, int); 110extern int bounce_original(VSTREAM *, BOUNCE_INFO *, int); 111extern void bounce_delrcpt(BOUNCE_INFO *); 112extern void bounce_delrcpt_one(BOUNCE_INFO *); 113 114/* LICENSE 115/* .ad 116/* .fi 117/* The Secure Mailer license must be distributed with this software. 118/* AUTHOR(S) 119/* Wietse Venema 120/* IBM T.J. Watson Research 121/* P.O. Box 704 122/* Yorktown Heights, NY 10598, USA 123/*--*/ 124