1 /*	$NetBSD: dsn_mask.h,v 1.1.1.1 2009/06/23 10:08:45 tron Exp $	*/
2 
3 #ifndef _DSN_MASK_H_INCLUDED_
4 #define _DSN_MASK_H_INCLUDED_
5 
6 /*++
7 /* NAME
8 /*	dsn_mask 3h
9 /* SUMMARY
10 /*	DSN embedding in SMTP
11 /* SYNOPSIS
12 /*	#include "dsn_mask.h"
13 /* DESCRIPTION
14 /* .nf
15 
16  /*
17   * Support for MAIL FROM ... RET=mumble.
18   */
19 #define DSN_RET_FULL	(1<<0)
20 #define DSN_RET_HDRS	(1<<1)
21 #define DSN_RET_BITS	(2)
22 
23  /*
24   * Use this to filter bad content in queue files.
25   */
26 #define DSN_RET_OK(v)	((v) == DSN_RET_FULL || (v) == DSN_RET_HDRS)
27 
28  /*
29   * Only when RET is specified by the sender is the SMTP client allowed to
30   * specify RET=mumble while delivering mail (RFC 3461 section 5.2.1).
31   * However, if RET is not requested, then the MTA is allowed to interpret
32   * this as RET=FULL or RET=HDRS (RFC 3461 section 4.3). Postfix chooses the
33   * former.
34   */
35 
36  /*
37   * Conversion routines: string to mask and reverse.
38   */
39 extern int dsn_ret_code(const char *);
40 extern const char *dsn_ret_str(int);
41 
42  /*
43   * Support for RCPT TO ... NOTIFY=mumble is in the form of bit masks.
44   */
45 #define DSN_NOTIFY_NEVER	(1<<0)	/* must not */
46 #define DSN_NOTIFY_SUCCESS	(1<<1)	/* must */
47 #define DSN_NOTIFY_FAILURE	(1<<2)	/* must */
48 #define DSN_NOTIFY_DELAY	(1<<3)	/* may */
49 #define DSN_NOTIFY_BITS		(4)
50 
51  /*
52   * Any form of sender-requested notification.
53   */
54 #define DSN_NOTIFY_ANY \
55     (DSN_NOTIFY_SUCCESS | DSN_NOTIFY_FAILURE | DSN_NOTIFY_DELAY)
56 
57  /*
58   * Override the sender-specified notification restriction.
59   */
60 #define DSN_NOTIFY_OVERRIDE	(DSN_NOTIFY_ANY | DSN_NOTIFY_NEVER)
61 
62  /*
63   * Use this to filter bad content in queue files.
64   */
65 #define DSN_NOTIFY_OK(v) \
66     ((v) == DSN_NOTIFY_NEVER || (v) == ((v) & DSN_NOTIFY_ANY))
67 
68  /*
69   * Only when NOTIFY=something was requested by the sender is the SMTP client
70   * allowed to specify NOTIFY=mumble while delivering mail (RFC 3461 section
71   * 5.2.1). However, if NOTIFY is not requested, then the MTA is allowed to
72   * interpret this as NOTIFY=FAILURE or NOTIFY=FAILURE,DELAY (RFC 3461
73   * section 4.1). Postfix chooses the latter.
74   */
75 
76  /*
77   * Conversion routines: string to mask and reverse.
78   */
79 extern int dsn_notify_mask(const char *);
80 extern const char *dsn_notify_str(int);
81 
82 /* LICENSE
83 /* .ad
84 /* .fi
85 /*	The Secure Mailer license must be distributed with this software.
86 /* AUTHOR(S)
87 /*	Wietse Venema
88 /*	IBM T.J. Watson Research
89 /*	P.O. Box 704
90 /*	Yorktown Heights, NY 10598, USA
91 /*--*/
92 
93 #endif
94