BOOL retry_use_local_part; /* Just what it says */
BOOL same_domain_copy_routing; /* TRUE => copy routing for same domain */
BOOL self_rewrite; /* TRUE to rewrite headers if making local */
+ uschar *set; /* Variable = value to set; list */
BOOL suffix_optional; /* As it says */
BOOL verify_only; /* Skip this router if not verifying */
BOOL verify_recipient; /* Use this router when verifying a recipient*/
int); /* sizeof buffer */
void (*version_report)( /* diagnostic version reporting */
FILE *); /* I/O stream to print to */
+ void (*macros_create)(void); /* feature-macro creation */
} auth_info;
int port;
BOOL v6_include_v4; /* Used in the daemon */
uschar address[46];
+ uschar * log; /* portion of "listening on" log line */
} ip_address_item;
/* Structure for chaining together arbitrary strings. */
uschar *errors_address; /* where to send errors (NULL => sender) */
header_line *extra_headers; /* additional headers */
uschar *remove_headers; /* list of those to remove */
+ void *variables; /* router-vasriables */
- #ifdef EXPERIMENTAL_SRS
+#ifdef EXPERIMENTAL_SRS
uschar *srs_sender; /* Change return path when delivering */
- #endif
+#endif
BOOL ignore_error:1; /* ignore delivery error */
- #ifdef SUPPORT_I18N
+#ifdef SUPPORT_I18N
BOOL utf8_msg:1; /* requires SMTPUTF8 processing */
BOOL utf8_downcvt:1; /* mandatory downconvert on delivery */
BOOL utf8_downcvt_maybe:1; /* optional downconvert on delivery */
- #endif
+#endif
} address_item_propagated;
uschar *self_hostname; /* after self=pass */
uschar *shadow_message; /* info about shadow transporting */
-#ifdef SUPPORT_TLS
+#ifndef DISABLE_TLS
+ const uschar *tlsver; /* version used for transport */
uschar *cipher; /* Cipher used for transport */
void *ourcert; /* Certificate offered to peer, binary */
void *peercert; /* Certificate from peer, binary */
BOOL af_tcp_fastopen:1; /* delivery usefully used TCP Fast Open */
BOOL af_tcp_fastopen_data:1; /* delivery sent SMTP commands on TCP Fast Open */
BOOL af_pipelining:1; /* delivery used (traditional) pipelining */
-#ifdef EXPERIMENTAL_PIPE_CONNECT
+#ifndef DISABLE_PIPE_CONNECT
BOOL af_early_pipe:1; /* delivery used connect-time pipelining */
#endif
#ifndef DISABLE_PRDR
#endif
#ifdef SUPPORT_I18N
BOOL af_utf8_downcvt:1; /* downconvert was done for delivery */
+#endif
+#ifdef EXPERIMENTAL_TLS_RESUME
+ BOOL af_tls_resume:1; /* TLS used a resumed session */
#endif
} flags;
unsigned int domain_cache[(MAX_NAMED_LIST * 2)/32];
unsigned int localpart_cache[(MAX_NAMED_LIST * 2)/32];
int mode; /* mode for local transporting to a file */
+ int basic_errno; /* status after failure */
int more_errno; /* additional error information */
- /* (may need to hold a timestamp) */
- unsigned int delivery_usec; /* subsecond part of delivery time */
+ struct timeval delivery_time; /* time taken to do delivery/attempt */
- short int basic_errno; /* status after failure */
unsigned short child_count; /* number of child addresses */
short int return_file; /* fileno of return data file */
short int special_action; /* ( used when when deferred or failed */
typedef struct expiring_data {
time_t expiry; /* if nonzero, data invalid after this time */
- void *ptr; /* pointer to data */
+ union
+ {
+ void *ptr; /* pointer to data */
+ int val; /* or integer data */
+ } data;
} expiring_data;
/* Structure for holding the handle and the cached last lookup for searches.
host_item * host;
int host_af;
uschar * interface;
+
+#ifdef SUPPORT_DANE
+ BOOL dane:1; /* connection must do dane */
+ dns_answer tlsa_dnsa; /* strictly, this should use tainted mem */
+#endif
} smtp_connect_args;
/* A client-initiated connection. If TLS, the second element is non-NULL */
/* Structures for Access Control Lists */
typedef struct acl_condition_block {
- struct acl_condition_block *next;
- uschar *arg;
- int type;
+ struct acl_condition_block * next;
+ uschar * arg;
+ int type;
union {
- BOOL negated;
- uschar *varname;
+ BOOL negated;
+ uschar * varname;
} u;
} acl_condition_block;
typedef struct acl_block {
- struct acl_block *next;
- acl_condition_block *condition;
- int verb;
+ struct acl_block * next;
+ acl_condition_block * condition;
+ int verb;
+ int srcline;
+ const uschar * srcfile;
} acl_block;
/* smtp transport calc outbound_ip */