X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/7952eef9f77899f36b23f1b9fa679f459cd52ffd..dec766a1977250758eb7a3e127e079a9271afd89:/src/src/smtp_in.c diff --git a/src/src/smtp_in.c b/src/src/smtp_in.c index 498cfab5e..c45e7e26f 100644 --- a/src/src/smtp_in.c +++ b/src/src/smtp_in.c @@ -2,7 +2,7 @@ * Exim - an Internet mail transport agent * *************************************************/ -/* Copyright (c) University of Cambridge 1995 - 2017 */ +/* Copyright (c) University of Cambridge 1995 - 2018 */ /* See the file NOTICE for conditions of use and distribution. */ /* Functions for handling an incoming SMTP call. */ @@ -1838,7 +1838,7 @@ BOOL yield = helo_accept_junk; /* Discard any previous helo name */ -if (sender_helo_name != NULL) +if (sender_helo_name) { store_free(sender_helo_name); sender_helo_name = NULL; @@ -3522,7 +3522,7 @@ else HDEBUG(D_receive) debug_printf("getting IP address for %s\n", sender_helo_name); - rc = host_find_bydns(&h, NULL, HOST_FIND_BY_A, + rc = host_find_bydns(&h, NULL, HOST_FIND_BY_A | HOST_FIND_BY_AAAA, NULL, NULL, NULL, &d, NULL, NULL); if (rc == HOST_FOUND || rc == HOST_FOUND_LOCAL) for (hh = &h; hh; hh = hh->next) @@ -3724,7 +3724,7 @@ else smtp_printf("221 %s closing connection\r\n", FALSE, smtp_active_hostname); #ifdef SUPPORT_TLS -tls_close(TRUE, TRUE); +tls_close(TRUE, TLS_SHUTDOWN_NOWAIT); #endif log_write(L_smtp_connection, LOG_MAIN, "%s closed by QUIT", @@ -4040,9 +4040,9 @@ while (done <= 0) /* Force a reverse lookup if HELO quoted something in helo_lookup_domains because otherwise the log can be confusing. */ - if (sender_host_name == NULL && - (deliver_domain = sender_helo_name, /* set $domain */ - match_isinlist(sender_helo_name, CUSS &helo_lookup_domains, 0, + if ( !sender_host_name + && (deliver_domain = sender_helo_name, /* set $domain */ + match_isinlist(sender_helo_name, CUSS &helo_lookup_domains, 0, &domainlist_anchor, NULL, MCL_DOMAIN, TRUE, NULL)) == OK) (void)host_name_lookup(); @@ -4095,7 +4095,11 @@ while (done <= 0) &user_msg, &log_msg)) != OK) { done = smtp_handle_acl_fail(ACL_WHERE_HELO, rc, user_msg, log_msg); - sender_helo_name = NULL; + if (sender_helo_name) + { + store_free(sender_helo_name); + sender_helo_name = NULL; + } host_build_sender_fullhost(); /* Rebuild */ break; } @@ -5336,7 +5340,7 @@ while (done <= 0) cmd_list[CMD_LIST_EHLO].is_mail_cmd = TRUE; cmd_list[CMD_LIST_AUTH].is_mail_cmd = TRUE; cmd_list[CMD_LIST_TLS_AUTH].is_mail_cmd = TRUE; - if (sender_helo_name != NULL) + if (sender_helo_name) { store_free(sender_helo_name); sender_helo_name = NULL; @@ -5409,7 +5413,7 @@ while (done <= 0) smtp_printf("554 Security failure\r\n", FALSE); break; } - tls_close(TRUE, TRUE); + tls_close(TRUE, TLS_SHUTDOWN_NOWAIT); break; #endif @@ -5497,7 +5501,7 @@ while (done <= 0) case ETRN_CMD: HAD(SCH_ETRN); - if (sender_address != NULL) + if (sender_address) { done = synprot_error(L_smtp_protocol_error, 503, NULL, US"ETRN is not permitted inside a transaction"); @@ -5523,7 +5527,7 @@ while (done <= 0) since that is strictly the only kind of ETRN that can be implemented according to the RFC. */ - if (smtp_etrn_command != NULL) + if (smtp_etrn_command) { uschar *error; BOOL rc; @@ -5739,6 +5743,23 @@ while (done <= 0) return done - 2; /* Convert yield values */ } + + +gstring * +authres_smtpauth(gstring * g) +{ +if (!sender_host_authenticated) + return g; + +g = string_append(g, 4, US";\n\tauth=pass" + " (", sender_host_authenticated, US") smtp.auth=", authenticated_id); +if (authenticated_sender) + g = string_append(g, 2, US" smtp.mailfrom=", authenticated_sender); +return g; +} + + + /* vi: aw ai sw=2 */ /* End of smtp_in.c */