60 {
"_", NULL,
"The validated sender address"},
61 {
"c", NULL,
"The hop count (number of Received: lines"},
62 {
"g", NULL,
"The sender address relative to the recipient"},
63 {
"i", NULL,
"Queue ID"},
64 {
"j", NULL,
"The official domain name for this site"},
65 {
"v", NULL,
"The version number of the sendmail binary"},
68 "The mechanism used for SMTP auth (only set if successful"},
69 {
"{auth_authen}", NULL,
""},
70 {
"{auth_ssf}", NULL,
""},
71 {
"{auth_author}", NULL,
""},
73 {
"{daemon_addr}", NULL,
""},
74 {
"{daemon_family}", NULL,
""},
75 {
"{daemon_name}", NULL,
""},
76 {
"{daemon_port}", NULL,
""},
78 {
"{cert_issuer}", NULL,
"Distinguished Name of the Certification Authority"},
79 {
"{cert_subject}", NULL,
"Distinguished Name of the certificate"},
80 {
"{cipher_bits}", NULL,
"Effective key length of the symmetric key"},
81 {
"{cipher}", NULL,
"Cypher used for the connection"},
82 {
"{tls_version}", NULL,
""},
83 {
"{verify}", NULL,
""},
85 {
"{client_addr}", NULL,
"IP address of SMTP client"},
86 {
"{client_name}", NULL,
"Verified hostname of the client"},
87 {
"{client_ptr}", NULL,
"The result of PTR lookup for the client IP address"},
88 {
"{client_resolve}", NULL,
"Result of the resolve call for client_name"},
91 {
"{if_addr}", NULL,
""},
92 {
"{if_name}", NULL,
""},
95 {
"{mail_addr}", NULL,
""},
96 {
"{mail_host}", NULL,
""},
98 {
"{rcpt_addr}", NULL,
""},
99 {
"{rcpt_host}", NULL,
""},
100 {
"{rcpt_mailer}", NULL,
""},
102 {
"{nrcpts}", NULL,
""},
104 {
"{msg_size}", NULL,
""},
120 if ((p = malloc(
sizeof smmac)) != NULL) {
121 memcpy(p, smmac,
sizeof (smmac));
137 for (p = sm; p != NULL && p->
name != NULL; p++)
156 char *callback = NULL;
159 callback =
STRNULL(callback,
"CALLBACK");
161 for (p = sm; p != NULL && p->
name != NULL; p++) {
164 if (strlen(p->
name) == 0)
170 if ((s = smfi_getsymval(ctx, p->
name)) != NULL) {
173 p->
value = strdup(s);
174 if (p->
value == NULL)
197 for (p = sm; p != NULL && p->
name != NULL; p++) {
215 for (p = sm; p != NULL && p->
name != NULL; p++) {
216 if (strcasecmp(
name, p->
name) == 0) {
217 if (p->
value != NULL)
218 return atoi(p->
value);
237 for (p = sm; p != NULL && p->
name != NULL; p++) {
238 if (strlen(p->
name) > 0)
int sm_macro_get_int(sm_mac_T *sm, char *name)
sm_mac_T * sm_macro_new()
char * get_name_by_id(name2id_T *, int)
#define ZE_MessageInfo(level,...)
#define ZE_LogSysError(...)
#define CONNID_STR(connid)
char * callback_name(int id)
char * sm_macro_get_str(sm_mac_T *sm, char *name)
void sm_macro_free(sm_mac_T *sm)
void sm_macro_update(SMFICTX *ctx, sm_mac_T *sm)
void sm_macro_log_all(char *id, sm_mac_T *sm)