📄 structs.h
字号:
reply_item *reply; /* data for autoreply */
retry_item *retries; /* chain of retry information */
uschar *address; /* address being delivered or routed */
uschar *unique; /* used for disambiguating */
uschar *cc_local_part; /* caseful local part */
uschar *lc_local_part; /* lowercased local part */
uschar *local_part; /* points to cc or lc version */
uschar *prefix; /* stripped prefix of local part */
uschar *suffix; /* stripped suffix of local part */
uschar *domain; /* working domain (lower cased) */
uschar *address_retry_key; /* retry key including full address */
uschar *domain_retry_key; /* retry key for domain only */
uschar *current_dir; /* current directory for transporting */
uschar *home_dir; /* home directory for transporting */
uschar *message; /* error message */
uschar *user_message; /* error message that can be sent over SMTP
or quoted in bounce message */
uschar *onetime_parent; /* saved original parent for onetime */
uschar **pipe_expandn; /* numeric expansions for pipe from filter */
uschar *return_filename; /* name of return file */
uschar *self_hostname; /* after self=pass */
uschar *shadow_message; /* info about shadow transporting */
#ifdef SUPPORT_TLS
uschar *cipher; /* Cipher used for transport */
uschar *peerdn; /* DN of server's certificate */
#endif
uid_t uid; /* uid for transporting */
gid_t gid; /* gid for transporting */
unsigned int flags; /* a row of bits, defined above */
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 more_errno; /* additional error information */
/* (may need to hold a timestamp) */
short int basic_errno; /* status after failure */
short int 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 */
/* ( also */
/* ( contains = or - when successful SMTP delivered */
/* ( also */
/* ( contains verify rc in sender verify cache */
short int transport_return; /* result of delivery attempt */
address_item_propagated p; /* fields that are propagated to children */
} address_item;
/* The table of header names consists of items of this type */
typedef struct {
uschar *name;
int len;
BOOL allow_resent;
int htype;
} header_name;
/* Chain of information about errors (e.g. bad addresses) */
typedef struct error_block {
struct error_block *next;
uschar *text1;
uschar *text2;
} error_block;
/* Chain of file names when processing the queue */
typedef struct queue_filename {
struct queue_filename *next;
uschar dir_uschar;
uschar text[1];
} queue_filename;
/* Chain of items of retry information, read from the retry config. */
typedef struct retry_rule {
struct retry_rule *next;
int rule;
int timeout;
int p1;
int p2;
} retry_rule;
typedef struct retry_config {
struct retry_config *next;
uschar *pattern;
int basic_errno;
int more_errno;
uschar *senders;
retry_rule *rules;
} retry_config;
/* Structure for each node in a tree, of which there are various kinds */
typedef struct tree_node {
struct tree_node *left; /* pointer to left child */
struct tree_node *right; /* pointer to right child */
union
{
void *ptr; /* pointer to data */
int val; /* or integer data */
} data;
uschar balance; /* balancing factor */
uschar name[1]; /* node name - variable length */
} tree_node;
/* Structure for holding the handle and the cached last lookup for searches.
This block is pointed to by the tree entry for the file. The file can get
closed if too many are opened at once. There is a LRU chain for deciding which
to close. */
typedef struct search_cache {
void *handle; /* lookup handle, or NULL if closed */
int search_type; /* search type */
tree_node *up; /* LRU up pointer */
tree_node *down; /* LRU down pointer */
tree_node *item_cache; /* tree of cached results */
} search_cache;
/* Structure for holding a partially decoded DNS record; the name has been
uncompressed, but the data pointer is into the raw data. */
typedef struct {
uschar name[DNS_MAXNAME]; /* domain name */
int type; /* record type */
int size; /* size of data */
uschar *data; /* pointer to data */
} dns_record;
/* Structure for holding the result of a DNS query. */
typedef struct {
int answerlen; /* length of the answer */
uschar answer[MAXPACKET]; /* the answer itself */
} dns_answer;
/* Structure for holding the intermediate data while scanning a DNS answer
block. */
typedef struct {
int rrcount; /* count of RRs in the answer */
uschar *aptr; /* pointer in the answer while scanning */
dns_record srr; /* data from current record in scan */
} dns_scan;
/* Structure for holding a chain of IP addresses that are extracted from
an A, AAAA, or A6 record. For the first two, there is only ever one address,
but the chaining feature of A6 allows for several addresses to be realized from
a single initial A6 record. The structure defines the address field of length
1. In use, a suitable sized block is obtained to hold the complete textual
address. */
typedef struct dns_address {
struct dns_address *next;
uschar address[1];
} dns_address;
/* Structure used for holding intermediate data during MD5 computations. */
#if 0
typedef struct md5 {
unsigned int length;
unsigned int abcd[4];
}
md5;
#endif
/* Structure used for holding intermediate data during SHA-1 computations. */
typedef struct sha1 {
unsigned int H[5];
unsigned int length;
}
sha1;
/* Structure used to hold incoming packets of SMTP responses for a specific
socket. The packets which may contain multiple lines (and in some cases,
multiple responses). */
typedef struct smtp_inblock {
int sock; /* the socket */
int buffersize; /* the size of the buffer */
uschar *ptr; /* current position in the buffer */
uschar *ptrend; /* end of data in the buffer */
uschar *buffer; /* the buffer itself */
} smtp_inblock;
/* Structure used to hold buffered outgoing packets of SMTP commands for a
specific socket. The packets which may contain multiple lines when pipelining
is in use. */
typedef struct smtp_outblock {
int sock; /* the socket */
int cmd_count; /* count of buffered commands */
int buffersize; /* the size of the buffer */
BOOL authenticating; /* TRUE when authenticating */
uschar *ptr; /* current position in the buffer */
uschar *buffer; /* the buffer itself */
} smtp_outblock;
/* Structure to hold information about the source of redirection information */
typedef struct redirect_block {
uschar *string; /* file name or string */
uid_t *owners; /* allowed file owners */
gid_t *owngroups; /* allowed file groups */
struct passwd *pw; /* possible owner if not NULL */
int modemask; /* forbidden bits */
BOOL isfile; /* TRUE if string is a file name */
BOOL check_owner; /* TRUE, FALSE, or TRUE_UNSET */
BOOL check_group; /* TRUE, FALSE, or TRUE_UNSET */
} redirect_block;
/* Structure for passing arguments to check_host() */
typedef struct check_host_block {
uschar *host_name;
uschar *host_address;
uschar *host_ipv4;
BOOL negative;
} check_host_block;
/* Structure for remembering lookup data when caching the result of
a lookup in a named list. */
typedef struct namedlist_cacheblock {
struct namedlist_cacheblock *next;
uschar *key;
uschar *data;
} namedlist_cacheblock;
/* Structure for holding data for an entry in a named list */
typedef struct namedlist_block {
uschar *string; /* the list string */
namedlist_cacheblock *cache_data; /* cached domain_data or localpart_data */
int number; /* the number of the list for caching */
} namedlist_block;
/* Structures for Access Control Lists */
typedef struct acl_condition_block {
struct acl_condition_block *next;
uschar *arg;
int type;
union {
BOOL negated;
uschar *varname;
} u;
} acl_condition_block;
typedef struct acl_block {
struct acl_block *next;
acl_condition_block *condition;
int verb;
} acl_block;
/* End of structs.h */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -