1/*	$NetBSD: cleanup_user.h,v 1.3 2022/10/08 16:12:45 christos Exp $	*/
2
3#ifndef _CLEANUP_USER_H_INCLUDED_
4#define _CLEANUP_USER_H_INCLUDED_
5
6/*++
7/* NAME
8/*	cleanup_user 3h
9/* SUMMARY
10/*	cleanup user interface codes
11/* SYNOPSIS
12/*	#include <cleanup_user.h>
13/* DESCRIPTION
14/* .nf
15
16 /*
17  * Client processing options. Flags 16- are reserved for cleanup.h.
18  */
19#define CLEANUP_FLAG_NONE	0	/* No special features */
20#define CLEANUP_FLAG_BOUNCE	(1<<0)	/* Bounce bad messages */
21#define CLEANUP_FLAG_FILTER	(1<<1)	/* Enable header/body checks */
22#define CLEANUP_FLAG_HOLD	(1<<2)	/* Place message on hold */
23#define CLEANUP_FLAG_DISCARD	(1<<3)	/* Discard message silently */
24#define CLEANUP_FLAG_BCC_OK	(1<<4)	/* Ok to add auto-BCC addresses */
25#define CLEANUP_FLAG_MAP_OK	(1<<5)	/* Ok to map addresses */
26#define CLEANUP_FLAG_MILTER	(1<<6)	/* Enable Milter applications */
27#define CLEANUP_FLAG_SMTP_REPLY	(1<<7)	/* Enable SMTP reply */
28#define CLEANUP_FLAG_SMTPUTF8	(1<<8)	/* SMTPUTF8 requested */
29#define CLEANUP_FLAG_AUTOUTF8	(1<<9)	/* Autodetect SMTPUTF8 */
30
31#define CLEANUP_FLAG_FILTER_ALL	(CLEANUP_FLAG_FILTER | CLEANUP_FLAG_MILTER)
32 /*
33  * These are normally set when receiving mail from outside.
34  */
35#define CLEANUP_FLAG_MASK_EXTERNAL \
36	(CLEANUP_FLAG_FILTER_ALL | CLEANUP_FLAG_BCC_OK | CLEANUP_FLAG_MAP_OK)
37
38 /*
39  * These are normally set when generating notices or when forwarding mail
40  * internally.
41  */
42#define CLEANUP_FLAG_MASK_INTERNAL CLEANUP_FLAG_MAP_OK
43
44 /*
45  * These are set on the fly while processing SMTP envelopes or message
46  * content.
47  */
48#define CLEANUP_FLAG_MASK_EXTRA \
49	(CLEANUP_FLAG_HOLD | CLEANUP_FLAG_DISCARD)
50
51 /*
52  * Diagnostics.
53  *
54  * CLEANUP_STAT_CONT and CLEANUP_STAT_DEFER both update the reason attribute,
55  * but CLEANUP_STAT_DEFER takes precedence. It terminates queue record
56  * processing, and prevents bounces from being sent.
57  */
58#define CLEANUP_STAT_OK		0	/* Success. */
59#define CLEANUP_STAT_BAD	(1<<0)	/* Internal protocol error */
60#define CLEANUP_STAT_WRITE	(1<<1)	/* Error writing message file */
61#define CLEANUP_STAT_SIZE	(1<<2)	/* Message file too big */
62#define CLEANUP_STAT_CONT	(1<<3)	/* Message content rejected */
63#define CLEANUP_STAT_HOPS	(1<<4)	/* Too many hops */
64#define CLEANUP_STAT_RCPT	(1<<6)	/* No recipients found */
65#define CLEANUP_STAT_PROXY	(1<<7)	/* Proxy reject */
66#define CLEANUP_STAT_DEFER	(1<<8)	/* Temporary reject */
67#define CLEANUP_STAT_NOPERM	(1<<9)	/* Denied by non-content policy */
68
69 /*
70  * These are set when we can't bounce even if we were asked to.
71  */
72#define CLEANUP_STAT_MASK_CANT_BOUNCE \
73	(CLEANUP_STAT_BAD | CLEANUP_STAT_WRITE | CLEANUP_STAT_DEFER \
74	    | CLEANUP_STAT_RCPT)
75
76 /*
77  * These are set when we can't examine every record of a message.
78  */
79#define CLEANUP_STAT_MASK_INCOMPLETE \
80	(CLEANUP_STAT_BAD | CLEANUP_STAT_WRITE | CLEANUP_STAT_SIZE \
81	    | CLEANUP_STAT_DEFER)
82
83 /*
84  * Mapping from status code to DSN detail and free text.
85  */
86typedef struct {
87    const unsigned status;		/* CLEANUP_STAT_MUMBLE */
88    const int smtp;			/* RFC 821 */
89    const char *dsn;			/* RFC 3463 */
90    const char *text;			/* free text */
91} CLEANUP_STAT_DETAIL;
92
93extern const char *cleanup_strerror(unsigned);
94extern const CLEANUP_STAT_DETAIL *cleanup_stat_detail(unsigned);
95extern const char *cleanup_strflags(unsigned);
96
97/* LICENSE
98/* .ad
99/* .fi
100/*	The Secure Mailer license must be distributed with this software.
101/* AUTHOR(S)
102/*	Wietse Venema
103/*	IBM T.J. Watson Research
104/*	P.O. Box 704
105/*	Yorktown Heights, NY 10598, USA
106/*
107/*	Wietse Venema
108/*	Google, Inc.
109/*	111 8th Avenue
110/*	New York, NY 10011, USA
111/*--*/
112
113#endif
114