xref: /netbsd-src/external/ibm-public/postfix/dist/src/smtpd/smtpd_proxy.h (revision 16d67a18c4cbb2d3cb426b01120f4938ca6dbbf9)
1 /*	$NetBSD: smtpd_proxy.h,v 1.1.1.3 2014/07/06 19:27:57 tron Exp $	*/
2 
3 /*++
4 /* NAME
5 /*	smtpd_proxy 3h
6 /* SUMMARY
7 /*	SMTP server pass-through proxy client
8 /* SYNOPSIS
9 /*	#include <smtpd.h>
10 /*	#include <smtpd_proxy.h>
11 /* DESCRIPTION
12 /* .nf
13 
14  /*
15   * Utility library.
16   */
17 #include <vstream.h>
18 #include <vstring.h>
19 
20  /*
21   * Application-specific.
22   */
23 typedef int PRINTFPTRLIKE(3, 4) (*SMTPD_PROXY_CMD_FN) (SMTPD_STATE *, int, const char *,...);
24 typedef int PRINTFPTRLIKE(3, 4) (*SMTPD_PROXY_REC_FPRINTF_FN) (VSTREAM *, int, const char *,...);
25 typedef int (*SMTPD_PROXY_REC_PUT_FN) (VSTREAM *, int, const char *, ssize_t);
26 
27 typedef struct SMTPD_PROXY {
28     /* Public. */
29     VSTREAM *stream;
30     VSTRING *request;			/* proxy request buffer */
31     VSTRING *reply;			/* proxy reply buffer */
32     SMTPD_PROXY_CMD_FN cmd;
33     SMTPD_PROXY_REC_FPRINTF_FN rec_fprintf;
34     SMTPD_PROXY_REC_PUT_FN rec_put;
35     /* Private. */
36     int     flags;
37     VSTREAM *service_stream;
38     const char *service_name;
39     int     timeout;
40     const char *ehlo_name;
41     const char *mail_from;
42 } SMTPD_PROXY;
43 
44 #define SMTPD_PROXY_FLAG_SPEED_ADJUST	(1<<0)
45 
46 #define SMTPD_PROXY_NAME_SPEED_ADJUST	"speed_adjust"
47 
48 #define SMTPD_PROX_WANT_BAD	0xff	/* Do not use */
49 #define SMTPD_PROX_WANT_NONE	'\0'	/* Do not receive reply */
50 #define SMTPD_PROX_WANT_ANY	'0'	/* Expect any reply */
51 #define SMTPD_PROX_WANT_OK	'2'	/* Expect 2XX reply */
52 #define SMTPD_PROX_WANT_MORE	'3'	/* Expect 3XX reply */
53 
54 extern int smtpd_proxy_create(SMTPD_STATE *, int, const char *, int, const char *, const char *);
55 extern void smtpd_proxy_close(SMTPD_STATE *);
56 extern void smtpd_proxy_free(SMTPD_STATE *);
57 extern int smtpd_proxy_parse_opts(const char *, const char *);
58 
59 /* LICENSE
60 /* .ad
61 /* .fi
62 /*	The Secure Mailer license must be distributed with this software.
63 /* AUTHOR(S)
64 /*	Wietse Venema
65 /*	IBM T.J. Watson Research
66 /*	P.O. Box 704
67 /*	Yorktown Heights, NY 10598, USA
68 /*--*/
69