*/
static void
-add_acl_headers(int where, uschar *acl_name)
+add_acl_headers(int where, uschar * acl_name)
{
-header_line *last_received = NULL;
+header_line * last_received = NULL;
switch(where)
{
for (header_line * h = header_list; h; h = h->next) if (h->type != htype_old)
{
- const uschar * list = acl_removed_headers;
+ const uschar * list = acl_removed_headers, * s;
int sep = ':'; /* This is specified as a colon-separated list */
- uschar *s;
+ /* If a list element has a leading '^' then it is an RE for
+ the whole header, else just a header name. */
while ((s = string_nextinlist(&list, &sep, NULL, 0)))
- if (header_testname(h, s, Ustrlen(s), FALSE))
+ if ( ( *s == '^'
+ && regex_match(
+ regex_must_compile(s, MCS_CACHEABLE, FALSE),
+ h->text, h->slen, NULL)
+ )
+ || header_testname(h, s, Ustrlen(s), FALSE)
+ )
{
h->type = htype_old;
- DEBUG(D_receive|D_acl) debug_printf_indent(" %s", h->text);
+ DEBUG(D_receive|D_acl) debug_printf_indent(" %s", h->text);
}
}
acl_removed_headers = NULL;
sender_address,
sender_fullhost ? "H=" : "", sender_fullhost ? sender_fullhost : US"",
sender_ident ? "U=" : "", sender_ident ? sender_ident : US"");
- message_id[0] = 0; /* Indicate no message accepted */
smtp_reply = US"550 Too many \"Received\" headers - suspected mail loop";
- goto TIDYUP; /* Skip to end of function */
+ goto NOT_ACCEPTED; /* Skip to end of function */
}
received_header_gen();
add_acl_headers(ACL_WHERE_RCPT, US"MAIL or RCPT");
case END_EOF:
if (smtp_input)
{
- Uunlink(spool_name); /* Lose data file when closed */
+ Uunlink(spool_name); /* Lose data file when closed */
cancel_cutthrough_connection(TRUE, US"sender closed connection");
- message_id[0] = 0; /* Indicate no message accepted */
+ message_id[0] = 0; /* Indicate no message_accepted */
smtp_reply = handle_lost_connection(US"");
smtp_yield = FALSE;
- goto TIDYUP; /* Skip to end of function */
+ goto TIDYUP; /* Skip to end of function */
}
break;
if (smtp_input)
{
smtp_reply = US"552 Message size exceeds maximum permitted";
- message_id[0] = 0; /* Indicate no message accepted */
- goto TIDYUP; /* Skip to end of function */
+ goto NOT_ACCEPTED; /* Skip to end of function */
}
else
{
Uunlink(spool_name); /* Lose the data file when closed */
cancel_cutthrough_connection(TRUE, US"sender protocol error");
smtp_reply = US""; /* Response already sent */
- message_id[0] = 0; /* Indicate no message accepted */
- goto TIDYUP; /* Skip to end of function */
+ goto NOT_ACCEPTED; /* Skip to end of function */
}
}
smtp_reply = US"451 Error while writing spool file";
receive_swallow_smtp();
}
- message_id[0] = 0; /* Indicate no message accepted */
- goto TIDYUP; /* Skip to end of function */
+ goto NOT_ACCEPTED; /* Skip to end of function */
}
else
if (smtp_handle_acl_fail(ACL_WHERE_DKIM, rc, user_msg, log_msg) != 0)
smtp_yield = FALSE; /* No more messages after dropped connection */
smtp_reply = US""; /* Indicate reply already sent */
- message_id[0] = 0; /* Indicate no message accepted */
- goto TIDYUP; /* Skip to end of function */
+ goto NOT_ACCEPTED; /* Skip to end of function */
}
}
else
? US"accepted"
: US"accepted for some recipients");
if (recipients_count == 0)
- {
- message_id[0] = 0; /* Indicate no message accepted */
- goto TIDYUP;
- }
+ goto NOT_ACCEPTED;
}
else
prdr_requested = FALSE;
if (smtp_handle_acl_fail(ACL_WHERE_DATA, rc, user_msg, log_msg) != 0)
smtp_yield = FALSE; /* No more messages after dropped connection */
smtp_reply = US""; /* Indicate reply already sent */
- message_id[0] = 0; /* Indicate no message accepted */
- goto TIDYUP; /* Skip to end of function */
+ goto NOT_ACCEPTED; /* Skip to end of function */
}
}
}
if (!smtp_batched_input)
{
smtp_respond(smtp_code, 3, TRUE, errmsg);
- message_id[0] = 0; /* Indicate no message accepted */
smtp_reply = US""; /* Indicate reply already sent */
- goto TIDYUP; /* Skip to end of function */
+ goto NOT_ACCEPTED; /* Skip to end of function */
}
else
moan_smtp_batch(NULL, "%s %s", smtp_code, errmsg);
if (smtp_input)
{
smtp_reply = US"451 Error in writing spool file";
- message_id[0] = 0; /* Indicate no message accepted */
- goto TIDYUP;
+ goto NOT_ACCEPTED;
}
else
{
if (smtp_input)
{
smtp_reply = US"451 Error in writing spool file";
- message_id[0] = 0; /* Indicate no message accepted */
- goto TIDYUP;
+ goto NOT_ACCEPTED;
}
else
{
then we can think about properly declaring the message not-received. */
+goto TIDYUP;
+
+NOT_ACCEPTED:
+message_id[0] = 0; /* Indicate no message accepted */
+
TIDYUP:
process_info[process_info_len] = 0; /* Remove message id */
if (spool_data_file && cutthrough_done == NOT_TRIED)