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