blob: c7435afa7343da6681d5a260d52aaa07b2e0cc23 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
#ifndef _DELIVER_REQUEST_H_INCLUDED_
#define _DELIVER_REQUEST_H_INCLUDED_
/*++
/* NAME
/* deliver_request 3h
/* SUMMARY
/* mail delivery request protocol, server side
/* SYNOPSIS
/* #include <deliver_request.h>
/* DESCRIPTION
/* .nf
/*
* Utility library.
*/
#include <vstring.h>
#include <vstream.h>
/*
* Global library.
*/
#include <recipient_list.h>
/*
* Structure of a server mail delivery request.
*/
typedef struct DELIVER_REQUEST {
VSTREAM *fp; /* stream, shared lock */
int flags; /* see below */
char *queue_name; /* message queue name */
char *queue_id; /* message queue id */
long data_offset; /* offset to message */
long data_size; /* message size */
char *nexthop; /* next hop name */
char *encoding; /* content encoding */
char *sender; /* envelope sender */
char *errors_to; /* error report address */
char *return_receipt; /* confirm receipt address */
long arrival_time; /* arrival time */
RECIPIENT_LIST rcpt_list; /* envelope recipients */
char *hop_status; /* reason if unavailable */
} DELIVER_REQUEST;
#define DEL_REQ_FLAG_DEFLT (DEL_REQ_FLAG_SUCCESS | DEL_REQ_FLAG_BOUNCE)
#define DEL_REQ_FLAG_SUCCESS (1<<0) /* delete successful recipients */
#define DEL_REQ_FLAG_BOUNCE (1<<1) /* unimplemented */
/*
* Delivery status. Note that there are only FINAL and DEFER. This is
* because delivery status information can be lost when a delivery agent or
* queue manager process terminates prematurely. The only distinctions we
* can rely on are "final delivery completed" and "everything else". In the
* absence of a definitive statement the queue manager will always have to
* be prepared for all possibilities.
*/
#define DEL_STAT_FINAL 0 /* delivered or bounced */
#define DEL_STAT_DEFER (-1) /* not delivered or bounced */
typedef struct VSTREAM _deliver_vstream_;
extern DELIVER_REQUEST *deliver_request_read(_deliver_vstream_ *);
extern int deliver_request_done(_deliver_vstream_ *, DELIVER_REQUEST *, int);
extern int deliver_pass(const char *, const char *, DELIVER_REQUEST *, const char *, const char *, long);
/* LICENSE
/* .ad
/* .fi
/* The Secure Mailer license must be distributed with this software.
/* AUTHOR(S)
/* Wietse Venema
/* IBM T.J. Watson Research
/* P.O. Box 704
/* Yorktown Heights, NY 10598, USA
/*--*/
#endif
|