xref: /freebsd/contrib/sendmail/include/libmilter/mfdef.h (revision ae83180158c4c937f170e31eff311b18c0286a93)
1 /*
2  * Copyright (c) 1999-2001 Sendmail, Inc. and its suppliers.
3  *	All rights reserved.
4  *
5  * By using this file, you agree to the terms and conditions set
6  * forth in the LICENSE file which can be found at the top level of
7  * the sendmail distribution.
8  *
9  *
10  *	$Id: mfdef.h,v 8.11 2001/09/12 18:02:19 gshapiro Exp $
11  */
12 
13 /*
14 **  mfdef.h -- Global definitions for mail filter and MTA.
15 */
16 
17 #ifndef _LIBMILTER_MFDEF_H
18 # define _LIBMILTER_MFDEF_H	1
19 
20 /* Shared protocol constants */
21 # define MILTER_LEN_BYTES	4	/* length of 32 bit integer in bytes */
22 # define MILTER_OPTLEN	(MILTER_LEN_BYTES * 3) /* length of options */
23 # define MILTER_CHUNK_SIZE	65535	/* body chunk size */
24 
25 /* These apply to SMFIF_* flags */
26 #define SMFI_V1_ACTS	0x0000000FL	/* The actions of V1 filter */
27 #if _FFR_QUARANTINE
28 # define SMFI_V2_ACTS	0x0000003FL	/* The actions of V2 filter */
29 #else /* _FFR_QUARANTINE */
30 # define SMFI_V2_ACTS	0x0000001FL	/* The actions of V2 filter */
31 #endif /* _FFR_QUARANTINE */
32 #define SMFI_CURR_ACTS	SMFI_V2_ACTS	/* The current version */
33 
34 /* address families */
35 # define SMFIA_UNKNOWN		'U'	/* unknown */
36 # define SMFIA_UNIX		'L'	/* unix/local */
37 # define SMFIA_INET		'4'	/* inet */
38 # define SMFIA_INET6		'6'	/* inet6 */
39 
40 /* commands: don't use anything smaller than ' ' */
41 # define SMFIC_ABORT		'A'	/* Abort */
42 # define SMFIC_BODY		'B'	/* Body chunk */
43 # define SMFIC_CONNECT		'C'	/* Connection information */
44 # define SMFIC_MACRO		'D'	/* Define macro */
45 # define SMFIC_BODYEOB		'E'	/* final body chunk (End) */
46 # define SMFIC_HELO		'H'	/* HELO/EHLO */
47 # define SMFIC_HEADER		'L'	/* Header */
48 # define SMFIC_MAIL		'M'	/* MAIL from */
49 # define SMFIC_EOH		'N'	/* EOH */
50 # define SMFIC_OPTNEG		'O'	/* Option negotiation */
51 # define SMFIC_QUIT		'Q'	/* QUIT */
52 # define SMFIC_RCPT		'R'	/* RCPT to */
53 
54 /* actions (replies) */
55 # define SMFIR_ADDRCPT		'+'	/* add recipient */
56 # define SMFIR_DELRCPT		'-'	/* remove recipient */
57 # define SMFIR_ACCEPT		'a'	/* accept */
58 # define SMFIR_REPLBODY		'b'	/* replace body (chunk) */
59 # define SMFIR_CONTINUE		'c'	/* continue */
60 # define SMFIR_DISCARD		'd'	/* discard */
61 # define SMFIR_CHGHEADER	'm'	/* change header */
62 # define SMFIR_PROGRESS		'p'	/* progress */
63 # define SMFIR_REJECT		'r'	/* reject */
64 # define SMFIR_TEMPFAIL		't'	/* tempfail */
65 # define SMFIR_ADDHEADER	'h'	/* add header */
66 # define SMFIR_REPLYCODE	'y'	/* reply code etc */
67 # if _FFR_QUARANTINE
68 #  define SMFIR_QUARANTINE	'q'	/* quarantine */
69 # endif /* _FFR_QUARANTINE */
70 
71 /* What the MTA can send/filter wants in protocol */
72 # define SMFIP_NOCONNECT 0x00000001L	/* MTA should not send connect info */
73 # define SMFIP_NOHELO	0x00000002L	/* MTA should not send HELO info */
74 # define SMFIP_NOMAIL	0x00000004L	/* MTA should not send MAIL info */
75 # define SMFIP_NORCPT	0x00000008L	/* MTA should not send RCPT info */
76 # define SMFIP_NOBODY	0x00000010L	/* MTA should not send body */
77 # define SMFIP_NOHDRS	0x00000020L	/* MTA should not send headers */
78 # define SMFIP_NOEOH	0x00000040L	/* MTA should not send EOH */
79 
80 # define SMFI_V1_PROT	0x0000003FL	/* The protocol of V1 filter */
81 # define SMFI_V2_PROT	0x0000007FL	/* The protocol of V2 filter */
82 # define SMFI_CURR_PROT	SMFI_V2_PROT	/* The current version */
83 
84 #endif /* !_LIBMILTER_MFDEF_H */
85