xref: /netbsd-src/external/ibm-public/postfix/dist/src/global/mail_proto.h (revision 4fee23f98c45552038ad6b5bd05124a41302fb01)
1 /*	$NetBSD: mail_proto.h,v 1.1.1.2 2011/03/02 19:32:16 tron Exp $	*/
2 
3 #ifndef _MAIL_PROTO_H_INCLUDED_
4 #define _MAIL_PROTO_H_INCLUDED_
5 
6 /*++
7 /* NAME
8 /*	mail_proto 3h
9 /* SUMMARY
10 /*	mail internal and external protocol support
11 /* SYNOPSIS
12 /*	#include <mail_proto.h>
13 /* DESCRIPTION
14 /* .nf
15 
16  /*
17   * System library.
18   */
19 #include <stdarg.h>
20 #include <string.h>
21 
22  /*
23   * Utility library.
24   */
25 #include <vstream.h>
26 #include <iostuff.h>
27 #include <attr.h>
28 
29  /*
30   * External protocols.
31   */
32 #define MAIL_PROTO_SMTP		"SMTP"
33 #define MAIL_PROTO_ESMTP	"ESMTP"
34 #define MAIL_PROTO_QMQP		"QMQP"
35 
36  /*
37   * Names of services: these are the names of the UNIX-domain socket or or
38   * FIFO that a service listens on.
39   */
40 #define MAIL_SERVICE_BOUNCE	"bounce"
41 #define MAIL_SERVICE_CLEANUP	"cleanup"
42 #define MAIL_SERVICE_DEFER	"defer"
43 #define MAIL_SERVICE_FORWARD	"forward"
44 #define MAIL_SERVICE_LOCAL	"local"
45 #define MAIL_SERVICE_PICKUP	"pickup"
46 #define MAIL_SERVICE_QUEUE	"qmgr"
47 #define MAIL_SERVICE_TLSMGR	"tlsmgr"
48 #define MAIL_SERVICE_RESOLVE	"resolve"
49 #define MAIL_SERVICE_REWRITE	"rewrite"
50 #define MAIL_SERVICE_VIRTUAL	"virtual"
51 #define MAIL_SERVICE_SMTP	"smtp"
52 #define MAIL_SERVICE_SMTPD	"smtpd"
53 #define MAIL_SERVICE_SHOWQ	"showq"
54 #define MAIL_SERVICE_ERROR	"error"
55 #define MAIL_SERVICE_RETRY	"retry"
56 #define MAIL_SERVICE_FLUSH	"flush"
57 #define MAIL_SERVICE_VERIFY	"verify"
58 #define MAIL_SERVICE_TRACE	"trace"
59 #define MAIL_SERVICE_RELAY	"relay"
60 #define MAIL_SERVICE_PROXYMAP	"proxymap"
61 #define MAIL_SERVICE_PROXYWRITE	"proxywrite"
62 #define MAIL_SERVICE_SCACHE	"scache"
63 #define MAIL_SERVICE_DNSBLOG	"dnsblog"
64 #define MAIL_SERVICE_TLSPROXY	"tlsproxy"
65 
66  /*
67   * Well-known socket or FIFO directories. The main difference is in file
68   * access permissions.
69   */
70 #define MAIL_CLASS_PUBLIC	"public"
71 #define MAIL_CLASS_PRIVATE	"private"
72 
73  /*
74   * Generic triggers.
75   */
76 #define TRIGGER_REQ_WAKEUP	'W'	/* wakeup */
77 
78  /*
79   * Queue manager requests.
80   */
81 #define QMGR_REQ_SCAN_DEFERRED	'D'	/* scan deferred queue */
82 #define QMGR_REQ_SCAN_INCOMING	'I'	/* scan incoming queue */
83 #define QMGR_REQ_FLUSH_DEAD	'F'	/* flush dead xport/site */
84 #define QMGR_REQ_SCAN_ALL	'A'	/* ignore time stamps */
85 
86  /*
87   * Functional interface.
88   */
89 extern VSTREAM *mail_connect(const char *, const char *, int);
90 extern VSTREAM *mail_connect_wait(const char *, const char *);
91 extern int mail_command_client(const char *, const char *,...);
92 extern int mail_command_server(VSTREAM *,...);
93 extern int mail_trigger(const char *, const char *, const char *, ssize_t);
94 extern char *mail_pathname(const char *, const char *);
95 
96  /*
97   * Attribute names.
98   */
99 #define MAIL_ATTR_REQ		"request"
100 #define MAIL_ATTR_NREQ		"nrequest"
101 #define MAIL_ATTR_STATUS	"status"
102 
103 #define MAIL_ATTR_FLAGS		"flags"
104 #define MAIL_ATTR_QUEUE		"queue_name"
105 #define MAIL_ATTR_QUEUEID	"queue_id"
106 #define MAIL_ATTR_SENDER	"sender"
107 #define MAIL_ATTR_RCPT_COUNT	"recipient_count"
108 #define MAIL_ATTR_ORCPT		"original_recipient"
109 #define MAIL_ATTR_RECIP		"recipient"
110 #define MAIL_ATTR_WHY		"reason"
111 #define MAIL_ATTR_VERPDL	"verp_delimiters"
112 #define MAIL_ATTR_SITE		"site"
113 #define MAIL_ATTR_OFFSET	"offset"
114 #define MAIL_ATTR_SIZE		"size"
115 #define MAIL_ATTR_ERRTO		"errors-to"
116 #define MAIL_ATTR_RRCPT		"return-receipt"
117 #define MAIL_ATTR_TIME		"time"
118 #define MAIL_ATTR_LOCALTIME	"localtime"
119 #define MAIL_ATTR_CREATE_TIME	"create_time"
120 #define MAIL_ATTR_RULE		"rule"
121 #define MAIL_ATTR_ADDR		"address"
122 #define MAIL_ATTR_TRANSPORT	"transport"
123 #define MAIL_ATTR_NEXTHOP	"nexthop"
124 #define MAIL_ATTR_TRACE_FLAGS	"trace_flags"
125 #define MAIL_ATTR_ADDR_STATUS	"recipient_status"
126 #define MAIL_ATTR_ACTION	"action"
127 #define MAIL_ATTR_TABLE		"table"
128 #define MAIL_ATTR_KEY		"key"
129 #define MAIL_ATTR_VALUE		"value"
130 #define MAIL_ATTR_INSTANCE	"instance"
131 #define MAIL_ATTR_SASL_METHOD	"sasl_method"
132 #define MAIL_ATTR_SASL_USERNAME	"sasl_username"
133 #define MAIL_ATTR_SASL_SENDER	"sasl_sender"
134 #define MAIL_ATTR_ETRN_DOMAIN	"etrn_domain"
135 #define MAIL_ATTR_DUMMY		"dummy"
136 #define MAIL_ATTR_STRESS	"stress"
137 #define MAIL_ATTR_LOG_IDENT	"log_ident"
138 #define MAIL_ATTR_RWR_CONTEXT	"rewrite_context"
139 
140 #define MAIL_ATTR_RWR_LOCAL	"local"
141 #define MAIL_ATTR_RWR_REMOTE	"remote"
142 
143 #define MAIL_ATTR_TTL		"ttl"
144 #define MAIL_ATTR_LABEL		"label"
145 #define MAIL_ATTR_PROP		"property"
146 #define MAIL_ATTR_CCERT_SUBJECT	"ccert_subject"
147 #define MAIL_ATTR_CCERT_ISSUER	"ccert_issuer"
148 #define MAIL_ATTR_CCERT_FINGERPRINT "ccert_fingerprint"
149 #define MAIL_ATTR_CRYPTO_PROTOCOL "encryption_protocol"
150 #define MAIL_ATTR_CRYPTO_CIPHER	"encryption_cipher"
151 #define MAIL_ATTR_CRYPTO_KEYSIZE "encryption_keysize"
152 
153  /*
154   * Suffixes for sender_name, sender_domain etc.
155   */
156 #define MAIL_ATTR_S_NAME	"_name"
157 #define MAIL_ATTR_S_DOMAIN	"_domain"
158 
159  /*
160   * Special names for RBL results.
161   */
162 #define MAIL_ATTR_RBL_WHAT	"rbl_what"
163 #define MAIL_ATTR_RBL_DOMAIN	"rbl_domain"
164 #define MAIL_ATTR_RBL_REASON	"rbl_reason"
165 #define MAIL_ATTR_RBL_TXT	"rbl_txt"	/* LaMont compatibility */
166 #define MAIL_ATTR_RBL_CLASS	"rbl_class"
167 #define MAIL_ATTR_RBL_CODE	"rbl_code"
168 #define MAIL_ATTR_RBL_ADDR	"rbl_addr"
169 
170  /*
171   * The following attribute names are stored in queue files. Changing this
172   * means lots of work to maintain backwards compatibility with queued mail.
173   */
174 #define MAIL_ATTR_ENCODING	"encoding"	/* internal encoding */
175 #define MAIL_ATTR_ENC_8BIT	"8bit"	/* 8BITMIME equivalent */
176 #define MAIL_ATTR_ENC_7BIT	"7bit"	/* 7BIT equivalent */
177 #define MAIL_ATTR_ENC_NONE	""	/* encoding unknown */
178 
179 #define MAIL_ATTR_LOG_CLIENT_NAME "log_client_name"	/* client hostname */
180 #define MAIL_ATTR_LOG_CLIENT_ADDR "log_client_address"	/* client address */
181 #define MAIL_ATTR_LOG_CLIENT_PORT "log_client_port"	/* client port */
182 #define MAIL_ATTR_LOG_HELO_NAME	"log_helo_name"	/* SMTP helo name */
183 #define MAIL_ATTR_LOG_PROTO_NAME "log_protocol_name"	/* SMTP/ESMTP/QMQP */
184 #define MAIL_ATTR_LOG_ORIGIN	"log_message_origin"	/* name[addr]:port */
185 
186 #define MAIL_ATTR_ACT_CLIENT	"client"/* client name addr */
187 #define MAIL_ATTR_ACT_CLIENT_NAME "client_name"	/* client name */
188 #define MAIL_ATTR_ACT_CLIENT_ADDR "client_address"	/* client address */
189 #define MAIL_ATTR_ACT_CLIENT_PORT "client_port"	/* client TCP port */
190 #define MAIL_ATTR_ACT_CLIENT_AF	"client_address_type"	/* AF_INET etc. */
191 #define MAIL_ATTR_ACT_HELO_NAME	"helo_name"	/* SMTP helo name */
192 #define MAIL_ATTR_ACT_PROTO_NAME "protocol_name"	/* SMTP/ESMTP/QMQP */
193 #define MAIL_ATTR_ACT_REVERSE_CLIENT_NAME "reverse_client_name"
194 #define MAIL_ATTR_ACT_FORWARD_CLIENT_NAME "forward_client_name"
195 
196 #define MAIL_ATTR_PROTO_STATE	"protocol_state"	/* MAIL/RCPT/... */
197 #define MAIL_ATTR_ORG_NONE	"unknown"	/* origin unknown */
198 #define MAIL_ATTR_ORG_LOCAL	"local"	/* local submission */
199 
200  /*
201   * XCLIENT/XFORWARD in SMTP.
202   */
203 #define XCLIENT_CMD		"XCLIENT"	/* XCLIENT command */
204 #define XCLIENT_NAME		"NAME"	/* client name */
205 #define XCLIENT_REVERSE_NAME	"REVERSE_NAME"	/* reverse client name */
206 #ifdef FORWARD_CLIENT_NAME
207 #define XCLIENT_FORWARD_NAME	"FORWARD_NAME"	/* forward client name */
208 #endif
209 #define XCLIENT_ADDR		"ADDR"	/* client address */
210 #define XCLIENT_PORT		"PORT"	/* client port */
211 #define XCLIENT_PROTO		"PROTO"	/* client protocol */
212 #define XCLIENT_HELO		"HELO"	/* client helo */
213 
214 #define XCLIENT_UNAVAILABLE	"[UNAVAILABLE]"	/* permanently unavailable */
215 #define XCLIENT_TEMPORARY	"[TEMPUNAVAIL]"	/* temporarily unavailable */
216 
217 #define XFORWARD_CMD		"XFORWARD"	/* XFORWARD command */
218 #define XFORWARD_NAME		"NAME"	/* client name */
219 #define XFORWARD_ADDR		"ADDR"	/* client address */
220 #define XFORWARD_PORT		"PORT"	/* client port */
221 #define XFORWARD_PROTO		"PROTO"	/* client protocol */
222 #define XFORWARD_HELO		"HELO"	/* client helo */
223 #define XFORWARD_IDENT		"IDENT"	/* message identifier */
224 #define XFORWARD_DOMAIN		"SOURCE"/* origin type */
225 #define XFORWARD_DOM_LOCAL	"LOCAL"	/* local origin */
226 #define XFORWARD_DOM_REMOTE	"REMOTE"/* remote origin */
227 
228 #define XFORWARD_UNAVAILABLE	"[UNAVAILABLE]"	/* attribute unavailable */
229 
230  /*
231   * DSN support.
232   */
233 #define MAIL_ATTR_DSN_STATUS	"status"/* XXX Postfix <2.3 compat */
234 #define MAIL_ATTR_DSN_DTYPE	"diag_type"	/* dsn diagnostic code */
235 #define MAIL_ATTR_DSN_DTEXT	"diag_text"	/* dsn diagnostic code */
236 #define MAIL_ATTR_DSN_MTYPE	"mta_type"	/* dsn remote MTA */
237 #define MAIL_ATTR_DSN_MNAME	"mta_mname"	/* dsn remote MTA */
238 #define MAIL_ATTR_DSN_ACTION	"action"/* XXX Postfix <2.3 compat */
239 #define MAIL_ATTR_DSN_ENVID	"envelope_id"	/* dsn envelope id */
240 #define MAIL_ATTR_DSN_RET	"ret_flags"	/* dsn full/headers */
241 #define MAIL_ATTR_DSN_NOTIFY	"notify_flags"	/* dsn notify flags */
242 #define MAIL_ATTR_DSN_ORCPT	"dsn_orig_rcpt"	/* dsn original recipient */
243 
244  /*
245   * TLSPROXY support.
246   */
247 #define MAIL_ATTR_REMOTE_ENDPT	"remote_endpoint"	/* name[addr]:port */
248 #define MAIL_ATTR_ROLE		"role"	/* requested role */
249 #define MAIL_ATTR_ROLE_SERVER	"server"
250 #define MAIL_ATTR_ROLE_CLIENT	"client"
251 #define MAIL_ATTR_TIMEOUT	"timeout"
252 #define MAIL_ATTR_PEER_CN	"peer_CN"
253 #define MAIL_ATTR_ISSUER_CN	"issuer_CN"
254 #define MAIL_ATTR_PEER_FPT	"peer_fingerprint"
255 #define MAIL_ATTR_PEER_STATUS	"peer_status"
256 #define MAIL_ATTR_CIPHER_PROTOCOL "cipher_protocol"
257 #define MAIL_ATTR_CIPHER_NAME	"cipher_name"
258 #define MAIL_ATTR_CIPHER_USEBITS "cipher_usebits"
259 #define MAIL_ATTR_CIPHER_ALGBITS "cipher_algbits"
260 
261  /*
262   * SMTP reply footer support.
263   */
264 #define MAIL_ATTR_SERVER_NAME	"server_name"
265 
266 /* LICENSE
267 /* .ad
268 /* .fi
269 /*	The Secure Mailer license must be distributed with this software.
270 /* AUTHOR(S)
271 /*	Wietse Venema
272 /*	IBM T.J. Watson Research
273 /*	P.O. Box 704
274 /*	Yorktown Heights, NY 10598, USA
275 /*--*/
276 
277 #endif
278