1 /* $NetBSD: qmqpd.h,v 1.1.1.1 2009/06/23 10:08:53 tron Exp $ */ 2 3 /*++ 4 /* NAME 5 /* qmqpd 3h 6 /* SUMMARY 7 /* Postfix QMQP server 8 /* SYNOPSIS 9 /* include "qmqpd.h" 10 /* DESCRIPTION 11 /* .nf 12 13 /* 14 * System library. 15 */ 16 #include <sys/time.h> 17 18 /* 19 * Utility library. 20 */ 21 #include <vstream.h> 22 #include <vstring.h> 23 24 /* 25 * Global library. 26 */ 27 #include <mail_stream.h> 28 29 /* 30 * Per-session state. 31 */ 32 typedef struct { 33 int err; /* error flags */ 34 VSTREAM *client; /* client connection */ 35 VSTRING *message; /* message buffer */ 36 VSTRING *buf; /* line buffer */ 37 struct timeval arrival_time; /* start of session */ 38 char *name; /* client name */ 39 char *addr; /* client IP address */ 40 char *port; /* client TCP port */ 41 char *namaddr; /* name[addr]:port */ 42 char *rfc_addr; /* RFC 2821 client IP address */ 43 int addr_family; /* address family */ 44 char *queue_id; /* queue file ID */ 45 VSTREAM *cleanup; /* cleanup server */ 46 MAIL_STREAM *dest; /* cleanup server */ 47 int rcpt_count; /* recipient count */ 48 char *reason; /* exception name */ 49 char *sender; /* sender address */ 50 char *recipient; /* recipient address */ 51 char *protocol; /* protocol name */ 52 char *where; /* protocol state */ 53 VSTRING *why_rejected; /* REJECT reason */ 54 } QMQPD_STATE; 55 56 /* 57 * Representation of unknown upstream client or message information within 58 * qmqpd processes. This is not the representation that Postfix uses in 59 * queue files, in queue manager delivery requests, or in XCLIENT/XFORWARD 60 * commands! 61 */ 62 #define CLIENT_ATTR_UNKNOWN "unknown" 63 64 #define CLIENT_NAME_UNKNOWN CLIENT_ATTR_UNKNOWN 65 #define CLIENT_ADDR_UNKNOWN CLIENT_ATTR_UNKNOWN 66 #define CLIENT_PORT_UNKNOWN CLIENT_ATTR_UNKNOWN 67 #define CLIENT_NAMADDR_UNKNOWN CLIENT_ATTR_UNKNOWN 68 69 /* 70 * QMQP protocol status codes. 71 */ 72 #define QMQPD_STAT_OK 'K' 73 #define QMQPD_STAT_RETRY 'Z' 74 #define QMQPD_STAT_HARD 'D' 75 76 /* 77 * qmqpd_state.c 78 */ 79 QMQPD_STATE *qmqpd_state_alloc(VSTREAM *); 80 void qmqpd_state_free(QMQPD_STATE *); 81 82 /* 83 * qmqpd_peer.c 84 */ 85 void qmqpd_peer_init(QMQPD_STATE *); 86 void qmqpd_peer_reset(QMQPD_STATE *); 87 88 /* LICENSE 89 /* .ad 90 /* .fi 91 /* The Secure Mailer license must be distributed with this software. 92 /* AUTHOR(S) 93 /* Wietse Venema 94 /* IBM T.J. Watson Research 95 /* P.O. Box 704 96 /* Yorktown Heights, NY 10598, USA 97 /*--*/ 98