-/* $Cambridge: exim/src/src/macros.h,v 1.12 2005/04/07 10:54:54 ph10 Exp $ */
+/* $Cambridge: exim/src/src/macros.h,v 1.28 2006/10/23 13:24:21 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
*************************************************/
-/* Copyright (c) University of Cambridge 1995 - 2005 */
+/* Copyright (c) University of Cambridge 1995 - 2006 */
/* See the file NOTICE for conditions of use and distribution. */
#define WAIT_NAME_MAX 50
-/* The numbers of connection and message variables for ACLs */
-
-#define ACL_C_MAX 10
-#define ACL_M_MAX 10
-
/* Fixed option values for all PCRE functions */
#define PCRE_COPT 0 /* compile */
/* Options for dns_next_rr */
-enum { RESET_NEXT, RESET_ANSWERS, RESET_ADDITIONAL };
+enum { RESET_NEXT, RESET_ANSWERS, RESET_AUTHORITY, RESET_ADDITIONAL };
/* Argument values for the time-of-day function */
#define D_uid 0x20000000
#define D_verify 0x40000000
+/* The D_all value must always have all bits set, as it is recognized specially
+by the function that decodes debug and log selectors. This is to enable it to
+set all the bits in a multi-word selector. Debug doesn't use this yet, but we
+are getting close. In fact, we want to omit "memory" for -d+all, but can't
+handle this here. It is fudged externally. */
+
#define D_all 0xffffffff
#define D_any (D_all & \
D_pid | \
D_timestamp) )
-#define D_default (D_all & \
+#define D_default (0xffffffff & \
~(D_expand | \
D_filter | \
D_interface | \
These are only ever tested independently. "All" is a magic value that is used
only in the name table to set all options in both bit maps. */
+/* The L_all value must always have all bits set, as it is recognized specially
+by the function that decodes debug and log selectors. This is to enable it to
+set all the bits in a multi-word selector. */
+
#define L_all 0xffffffff
#define L_address_rewrite 0x00000001
#define L_smtp_protocol_error 0x00004000
#define L_smtp_syntax_error 0x00008000
-#define LX_arguments 0x80000001
-#define LX_deliver_time 0x80000002
-#define LX_delivery_size 0x80000004
-#define LX_ident_timeout 0x80000008
-#define LX_incoming_interface 0x80000010
-#define LX_incoming_port 0x80000020
-#define LX_outgoing_port 0x80000040
-#define LX_queue_time 0x80000080
-#define LX_queue_time_overall 0x80000100
-#define LX_received_sender 0x80000200
-#define LX_received_recipients 0x80000400
-#define LX_rejected_header 0x80000800
-#define LX_return_path_on_delivery 0x80001000
-#define LX_sender_on_delivery 0x80002000
-#define LX_smtp_confirmation 0x80004000
-#define LX_subject 0x80008000
-#define LX_tls_certificate_verified 0x80010000
-#define LX_tls_cipher 0x80020000
-#define LX_tls_peerdn 0x80040000
+#define LX_acl_warn_skipped 0x80000001
+#define LX_arguments 0x80000002
+#define LX_deliver_time 0x80000004
+#define LX_delivery_size 0x80000008
+#define LX_ident_timeout 0x80000010
+#define LX_incoming_interface 0x80000020
+#define LX_incoming_port 0x80000040
+#define LX_outgoing_port 0x80000080
+#define LX_queue_time 0x80000100
+#define LX_queue_time_overall 0x80000200
+#define LX_received_sender 0x80000400
+#define LX_received_recipients 0x80000800
+#define LX_rejected_header 0x80001000
+#define LX_return_path_on_delivery 0x80002000
+#define LX_sender_on_delivery 0x80004000
+#define LX_sender_verify_fail 0x80008000
+#define LX_smtp_confirmation 0x80010000
+#define LX_subject 0x80020000
+#define LX_tls_certificate_verified 0x80040000
+#define LX_tls_cipher 0x80080000
+#define LX_tls_peerdn 0x80100000
+#define LX_unknown_in_list 0x80200000
#define L_default (L_connection_reject | \
L_delay_delivery | \
L_size_reject | \
L_skip_delivery)
-#define LX_default ((LX_rejected_header | \
+#define LX_default ((LX_acl_warn_skipped | \
+ LX_rejected_header | \
+ LX_sender_verify_fail | \
LX_tls_cipher) & 0x7fffffff)
/* Private error numbers for delivery failures, set negative so as not
#define ERRNO_AUTHFAIL (-42) /* When required by client */
#define ERRNO_CONNECTTIMEOUT (-43) /* Used internally in smtp transport */
#define ERRNO_RCPT4XX (-44) /* RCPT gave 4xx error */
+#define ERRNO_MAIL4XX (-45) /* MAIL gave 4xx error */
+#define ERRNO_DATA4XX (-46) /* DATA gave 4xx error */
/* These must be last, so all retry deferments can easily be identified */
#define RDO_REWRITE 0x00020000 /* Rewrite generated addresses */
#define RDO_EXIM_FILTER 0x00040000 /* Forbid Exim filters */
#define RDO_SIEVE_FILTER 0x00080000 /* Forbid Sieve filters */
+#define RDO_PREPEND_HOME 0x00100000 /* Prepend $home to relative paths in Exim filter save commands */
/* This is the set that apply to expansions in filters */
enum { RDON_BLACKHOLE, RDON_DEFER, RDON_EACCES, RDON_ENOTDIR, RDON_EXISTS,
RDON_FAIL, RDON_FILTER, RDON_FREEZE, RDON_INCLUDE, RDON_LOG, RDON_LOOKUP,
RDON_PERL, RDON_READFILE, RDON_READSOCK, RDON_RUN, RDON_DLFUNC, RDON_REALLOG,
- RDON_REWRITE, RDON_EXIM_FILTER, RDON_SIEVE_FILTER };
+ RDON_REWRITE, RDON_EXIM_FILTER, RDON_SIEVE_FILTER, RDON_PREPEND_HOME };
/* Results of filter or forward file processing. Some are only from a filter;
some are only from a forward file. */
#define vopt_is_recipient 0x0002
#define vopt_qualify 0x0004
#define vopt_expn 0x0008
-#define vopt_callout_postmaster 0x0010 /* during callout */
+#define vopt_callout_fullpm 0x0010 /* full postmaster during callout */
#define vopt_callout_random 0x0020 /* during callout */
#define vopt_callout_no_cache 0x0040 /* disable callout cache */
#define vopt_callout_recipsender 0x0080 /* use real sender to verify recip */
#define vopt_callout_recippmaster 0x0100 /* use postmaster to verify recip */
+#define vopt_success_on_redirect 0x0200
/* Values for fields in callout cache records */
#define ccache_unknown 0 /* test hasn't been done */
#define ccache_accept 1
-#define ccache_reject 2
+#define ccache_reject 2 /* All rejections except */
+#define ccache_reject_mfnull 3 /* MAIL FROM:<> was rejected */
/* Options for lookup functions */
#define lookup_querystyle 1 /* query-style lookup */
#define lookup_absfile 2 /* requires absolute file name */
+#define lookup_absfilequery 4 /* query-style starts with file name */
/* Status values for host_item blocks. Require hstatus_unusable and
hstatus_unusable_expired to be last. */
enum { MSG_DELIVER, MSG_FREEZE, MSG_REMOVE, MSG_THAW, MSG_ADD_RECIPIENT,
MSG_MARK_ALL_DELIVERED, MSG_MARK_DELIVERED, MSG_EDIT_SENDER,
- MSG_SHOW_BODY, MSG_SHOW_HEADER, MSG_SHOW_LOG };
+ MSG_SHOW_BODY, MSG_SHOW_HEADER, MSG_SHOW_LOG, MSG_LOAD };
/* Returns from the spool_read_header() function */
ACL_WHERE_EXPN,
ACL_WHERE_HELO,
ACL_WHERE_MAILAUTH,
+ ACL_WHERE_NOTSMTP_START,
ACL_WHERE_QUIT,
ACL_WHERE_STARTTLS,
ACL_WHERE_VRFY