From 4e08fd50ebe820edb008a96b892a2749bbe8e72b Mon Sep 17 00:00:00 2001 From: Jeremy Harris Date: Fri, 3 Apr 2015 19:13:27 +0100 Subject: A-label expansion operators --- test/confs/4200 | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 test/confs/4200 (limited to 'test/confs') diff --git a/test/confs/4200 b/test/confs/4200 new file mode 100644 index 000000000..bce8e551f --- /dev/null +++ b/test/confs/4200 @@ -0,0 +1,12 @@ +# Exim test configuration 4200 + +exim_path = EXIM_PATH +spool_directory = DIR/spool +log_file_path = DIR/spool/log/%slog +gecos_name = CALLER_NAME + +# ----- Main settings ----- + +# ----- ACL ----- + +# End -- cgit v1.2.3 From 9d4319dfec653f43b64562c8f31b87f2890365b2 Mon Sep 17 00:00:00 2001 From: Jeremy Harris Date: Sun, 12 Apr 2015 19:18:26 +0100 Subject: smtp input --- TODO | 14 ++++-- doc/doc-txt/experimental-spec.txt | 15 ++++++ src/src/dns.c | 17 +++++++ src/src/exim.c | 4 ++ src/src/functions.h | 1 + src/src/globals.c | 2 +- src/src/parse.c | 10 ++-- src/src/smtp_in.c | 90 ++++++++++++++++++++---------------- src/src/utf8.c | 10 +--- test/confs/4201 | 60 ++++++++++++++++++++++++ test/log/4201 | 9 ++++ test/runtest | 6 ++- test/scripts/4200-International/4201 | 64 +++++++++++++++++++++++++ test/stdout/4201 | 70 ++++++++++++++++++++++++++++ 14 files changed, 308 insertions(+), 64 deletions(-) create mode 100644 test/confs/4201 create mode 100644 test/log/4201 create mode 100644 test/scripts/4200-International/4201 create mode 100644 test/stdout/4201 (limited to 'test/confs') diff --git a/TODO b/TODO index d2d31ef07..6cce9a6f5 100644 --- a/TODO +++ b/TODO @@ -15,23 +15,25 @@ destination supports the SMTPUTF8 extension ====================== to-Alabel convert of helo name +- smtp transport ++ An "international" flag on the message? ++ An is-international expansion condition? ++ helo-time option handling -conversion of utf-8 domains on input rfc5890 -- deconversion on forwarding -- deconversion for trace headers +++ conversion of utf-8 domains for DNS rfc5890 +-- MSA mode: convert on forward? + dsn handling rfc6533 logging - international msg - presentation of local-part in log -- a log option? encoding of local_part -encoding transform string-expansions + Recieved-by header tracking info - WITH protocol types get UTF8 prefix +- use for logging also forwarding checks rfc6530 7.1 -3- - rcpt-time rejects get 533 mailbox name not allowed @@ -39,9 +41,11 @@ forwarding checks rfc6530 7.1 -3- - bounces (see dsn handling) -expansions for to- and from-Alabel ? bug1567 +++ expansions for to- and from-Alabel ? bug1567 enhanced status codes? rfc5248++ VRFY EXPN + +non-smtp input diff --git a/doc/doc-txt/experimental-spec.txt b/doc/doc-txt/experimental-spec.txt index 738f02cce..59dd44ea1 100644 --- a/doc/doc-txt/experimental-spec.txt +++ b/doc/doc-txt/experimental-spec.txt @@ -1278,6 +1278,21 @@ RFCs 6530, 6533, 5890 Compile with EXPERIMENTAL_INTERNATIONAL and libidn. +Main config option smtputf8_advertise_hosts, default '*', +a host list. If this matches the sending host and +accept_8bitmime is true (the default) then the ESMTP option +SMTPUTF8 will be advertised. + +If the sender specifies the SMTPUTF8 option on a MAIL command +international handling for the message is enabled and +the expansion variable $message_smtputf8 will have value TRUE. + +The option allow_utf8_domains is set to true for this +message, but all DNS lookups are converted to a-label form. + +Log lines and Received-by: header lines will aquire a "utf8" +prefix on the 'with' element, eg. utf8esmtp. + Expansion operators: ${utf8_domain_to_alabel:str} ${utf8_domain_from_alabel:str} diff --git a/src/src/dns.c b/src/src/dns.c index a2f430993..f1619f4a4 100644 --- a/src/src/dns.c +++ b/src/src/dns.c @@ -576,6 +576,23 @@ if (previous != NULL) return previous->data.val; } +#ifdef EXPERIMENTAL_INTERNATIONAL +/* Convert all names to a-label form before doing lookup */ + { + uschar * alabel; + uschar * errstr = NULL; + if ((alabel = string_domain_utf8_to_alabel(name, &errstr)), errstr) + { + DEBUG(D_dns) + debug_printf("DNS name '%s' utf8 conversion to alabel failed: %s", name, + errstr); + host_find_failed_syntax = TRUE; + return DNS_NOMATCH; + } + name = alabel; + } +#endif + /* If configured, check the hygene of the name passed to lookup. Otherwise, although DNS lookups may give REFUSED at the lower level, some resolvers turn this into TRY_AGAIN, which is silly. Give a NOMATCH return, since such diff --git a/src/src/exim.c b/src/src/exim.c index f6d9be6ef..121c6c2e3 100644 --- a/src/src/exim.c +++ b/src/src/exim.c @@ -3705,6 +3705,10 @@ is equivalent to the ability to modify a setuid binary! This needs to happen before we read the main configuration. */ init_lookup_list(); +#ifdef EXPERIMENTAL_INTERNATIONAL +if (running_in_test_harness) smtputf8_advertise_hosts = NULL; +#endif + /* Read the main runtime configuration data; this gives up if there is a failure. It leaves the configuration file open so that the subsequent configuration data for delivery can be read if needed. */ diff --git a/src/src/functions.h b/src/src/functions.h index ac93c1635..fdd629228 100644 --- a/src/src/functions.h +++ b/src/src/functions.h @@ -422,6 +422,7 @@ extern const uschar *string_printing2(const uschar *, BOOL); extern uschar *string_split_message(uschar *); extern uschar *string_unprinting(uschar *); #ifdef EXPERIMENTAL_INTERNATIONAL +extern uschar *string_address_utf8_to_alabel(uschar *, uschar **, int *); extern uschar *string_domain_alabel_to_utf8(const uschar *, uschar **); extern uschar *string_domain_utf8_to_alabel(const uschar *, uschar **); extern uschar *string_localpart_alabel_to_utf8(const uschar *, uschar **); diff --git a/src/src/globals.c b/src/src/globals.c index cb93a0192..2cbafcdce 100644 --- a/src/src/globals.c +++ b/src/src/globals.c @@ -1274,7 +1274,7 @@ int smtp_rlr_threshold = INT_MAX; BOOL smtp_use_pipelining = FALSE; BOOL smtp_use_size = FALSE; #ifdef EXPERIMENTAL_INTERNATIONAL -uschar *smtputf8_advertise_hosts = US"*"; +uschar *smtputf8_advertise_hosts = US"*"; /* overridden under test-harness */ #endif #ifdef WITH_CONTENT_SCAN diff --git a/src/src/parse.c b/src/src/parse.c index ff814e738..a648f755a 100644 --- a/src/src/parse.c +++ b/src/src/parse.c @@ -550,9 +550,7 @@ read_addr_spec(uschar *s, uschar *t, int term, uschar **errorptr, { s = read_local_part(s, t, errorptr, FALSE); if (*errorptr == NULL) - { if (*s != term) - { if (*s != '@') *errorptr = string_sprintf("\"@\" or \".\" expected after \"%s\"", t); else @@ -562,8 +560,6 @@ if (*errorptr == NULL) *domainptr = t; s = read_domain(s, t, errorptr); } - } - } return s; } @@ -744,7 +740,7 @@ if (*s == '<') while (bracket_count-- > 0) if (*s++ != '>') { *errorptr = (s[-1] == 0)? US"'>' missing at end of address" : - string_sprintf("malformed address: %.32s may not follow %.*s", + string_sprintf("malformed address A: %.32s may not follow %.*s", s-1, s - (uschar *)mailbox - 1, mailbox); goto PARSE_FAILED; } @@ -797,7 +793,7 @@ if (*s != 0) } else { - *errorptr = string_sprintf("malformed address: %.32s may not follow %.*s", + *errorptr = string_sprintf("malformed address B: %.32s may not follow %.*s", s, s - (uschar *)mailbox, mailbox); goto PARSE_FAILED; } @@ -817,7 +813,7 @@ if (*end - *start > ADDRESS_MAXLENGTH) return NULL; } -return (uschar *)yield; +return yield; /* Use goto (via the macro FAILED) to get to here from a variety of places. We might have an empty address in a group - the caller can choose to ignore diff --git a/src/src/smtp_in.c b/src/src/smtp_in.c index 8086e9456..a0e44d89a 100644 --- a/src/src/smtp_in.c +++ b/src/src/smtp_in.c @@ -3828,10 +3828,8 @@ while (done <= 0) (char *)mail_args < (char *)env_mail_type_list + sizeof(env_mail_type_list); mail_args++ ) - { if (strcmpic(name, mail_args->name) == 0) break; - } if (mail_args->need_value && strcmpic(value, US"") == 0) break; @@ -3859,16 +3857,17 @@ while (done <= 0) and "7BIT" as body types, but take no action. */ case ENV_MAIL_OPT_BODY: if (accept_8bitmime) { - if (strcmpic(value, US"8BITMIME") == 0) { + if (strcmpic(value, US"8BITMIME") == 0) body_8bitmime = 8; - } else if (strcmpic(value, US"7BIT") == 0) { + else if (strcmpic(value, US"7BIT") == 0) body_8bitmime = 7; - } else { + else + { body_8bitmime = 0; done = synprot_error(L_smtp_syntax_error, 501, NULL, US"invalid data for BODY"); goto COMMAND_LOOP; - } + } DEBUG(D_receive) debug_printf("8BITMIME: %d\n", body_8bitmime); break; } @@ -3880,35 +3879,43 @@ while (done <= 0) is included only if configured in at build time. */ case ENV_MAIL_OPT_RET: - if (dsn_advertised) { + if (dsn_advertised) + { /* Check if RET has already been set */ - if (dsn_ret > 0) { + if (dsn_ret > 0) + { synprot_error(L_smtp_syntax_error, 501, NULL, US"RET can be specified once only"); goto COMMAND_LOOP; - } - dsn_ret = (strcmpic(value, US"HDRS") == 0)? dsn_ret_hdrs : - (strcmpic(value, US"FULL") == 0)? dsn_ret_full : 0; + } + dsn_ret = strcmpic(value, US"HDRS") == 0 + ? dsn_ret_hdrs + : strcmpic(value, US"FULL") == 0 + ? dsn_ret_full + : 0; DEBUG(D_receive) debug_printf("DSN_RET: %d\n", dsn_ret); /* Check for invalid invalid value, and exit with error */ - if (dsn_ret == 0) { + if (dsn_ret == 0) + { synprot_error(L_smtp_syntax_error, 501, NULL, US"Value for RET is invalid"); goto COMMAND_LOOP; - } - } + } + } break; case ENV_MAIL_OPT_ENVID: - if (dsn_advertised) { + if (dsn_advertised) + { /* Check if the dsn envid has been already set */ - if (dsn_envid != NULL) { + if (dsn_envid != NULL) + { synprot_error(L_smtp_syntax_error, 501, NULL, US"ENVID can be specified once only"); goto COMMAND_LOOP; - } + } dsn_envid = string_copy(value); DEBUG(D_receive) debug_printf("DSN_ENVID: %s\n", dsn_envid); - } + } break; /* Handle the AUTH extension. If the value given is not "<>" and either @@ -3948,34 +3955,34 @@ while (done <= 0) switch (rc) { case OK: - if (authenticated_by == NULL || - authenticated_by->mail_auth_condition == NULL || - expand_check_condition(authenticated_by->mail_auth_condition, - authenticated_by->name, US"authenticator")) - break; /* Accept the AUTH */ - - ignore_msg = US"server_mail_auth_condition failed"; - if (authenticated_id != NULL) - ignore_msg = string_sprintf("%s: authenticated ID=\"%s\"", - ignore_msg, authenticated_id); + if (authenticated_by == NULL || + authenticated_by->mail_auth_condition == NULL || + expand_check_condition(authenticated_by->mail_auth_condition, + authenticated_by->name, US"authenticator")) + break; /* Accept the AUTH */ + + ignore_msg = US"server_mail_auth_condition failed"; + if (authenticated_id != NULL) + ignore_msg = string_sprintf("%s: authenticated ID=\"%s\"", + ignore_msg, authenticated_id); /* Fall through */ case FAIL: - authenticated_sender = NULL; - log_write(0, LOG_MAIN, "ignoring AUTH=%s from %s (%s)", - value, host_and_ident(TRUE), ignore_msg); - break; + authenticated_sender = NULL; + log_write(0, LOG_MAIN, "ignoring AUTH=%s from %s (%s)", + value, host_and_ident(TRUE), ignore_msg); + break; /* Should only get DEFER or ERROR here. Put back terminator overrides for error message */ default: - value[-1] = '='; - name[-1] = ' '; - (void)smtp_handle_acl_fail(ACL_WHERE_MAILAUTH, rc, user_msg, - log_msg); - goto COMMAND_LOOP; + value[-1] = '='; + name[-1] = ' '; + (void)smtp_handle_acl_fail(ACL_WHERE_MAILAUTH, rc, user_msg, + log_msg); + goto COMMAND_LOOP; } } break; @@ -3990,7 +3997,7 @@ while (done <= 0) #ifdef EXPERIMENTAL_INTERNATIONAL case ENV_MAIL_OPT_UTF8: if (smtputf8_advertised) - message_smtputf8 = TRUE; + message_smtputf8 = allow_utf8_domains = TRUE; break; #endif /* Unknown option. Stick back the terminator characters and break @@ -4025,9 +4032,10 @@ while (done <= 0) /* Now extract the address, first applying any SMTP-time rewriting. The TRUE flag allows "<>" as a sender address. */ - raw_sender = ((rewrite_existflags & rewrite_smtp) != 0)? - rewrite_one(smtp_cmd_data, rewrite_smtp, NULL, FALSE, US"", - global_rewrite_rules) : smtp_cmd_data; + raw_sender = rewrite_existflags & rewrite_smtp + ? rewrite_one(smtp_cmd_data, rewrite_smtp, NULL, FALSE, US"", + global_rewrite_rules) + : smtp_cmd_data; /* rfc821_domains = TRUE; << no longer needed */ raw_sender = diff --git a/src/src/utf8.c b/src/src/utf8.c index 9a2b8656e..32d2eaed0 100644 --- a/src/src/utf8.c +++ b/src/src/utf8.c @@ -78,9 +78,6 @@ size_t p_len = ucs4_len*4; /* this multiplier is pure guesswork */ uschar * res = store_get(p_len+5); int rc; -DEBUG(D_expand) debug_printf("l_u2a: ulen %d plen %d\n", ucs4_len, p_len); -DEBUG(D_expand) for (rc = 0; rc < ucs4_len; rc++) debug_printf("%08x ", p[rc]); - res[0] = 'x'; res[1] = 'n'; res[2] = res[3] = '-'; if ((rc = punycode_encode(ucs4_len, p, NULL, &p_len, res+4)) != PUNYCODE_SUCCESS) @@ -90,10 +87,7 @@ if ((rc = punycode_encode(ucs4_len, p, NULL, &p_len, res+4)) != PUNYCODE_SUCCESS if (err) *err = US punycode_strerror(rc); return NULL; } -DEBUG(D_expand) debug_printf("l_u2a: plen %d\n", p_len); p_len += 4; -DEBUG(D_expand) for (rc = 0; rc < p_len; rc++) debug_printf("%02x ", res[rc]); -DEBUG(D_expand) debug_printf("\n"); free(p); res[p_len] = '\0'; return res; @@ -114,9 +108,8 @@ if (alabel[0] != 'x' || alabel[1] != 'n' || alabel[2] != '-' || alabel[3] != '-' if (err) *err = US"bad alabel prefix"; return NULL; } -p_len -= 4; -DEBUG(D_expand) debug_printf("l_a2u: plen %d\n", p_len); +p_len -= 4; p = (punycode_uint *) store_get((p_len+1) * sizeof(*p)); if ((rc = punycode_decode(p_len, CCS alabel+4, &p_len, p, NULL)) != PUNYCODE_SUCCESS) @@ -124,7 +117,6 @@ if ((rc = punycode_decode(p_len, CCS alabel+4, &p_len, p, NULL)) != PUNYCODE_SUC if (err) *err = US punycode_strerror(rc); return NULL; } -DEBUG(D_expand) debug_printf("l_a2u: dlen %d\n", p_len); s = stringprep_ucs4_to_utf8(p, p_len, NULL, &p_len); res = string_copyn(s, p_len); diff --git a/test/confs/4201 b/test/confs/4201 new file mode 100644 index 000000000..7d9af4bf3 --- /dev/null +++ b/test/confs/4201 @@ -0,0 +1,60 @@ +# Exim test configuration 4201 + +exim_path = EXIM_PATH +host_lookup_order = bydns +spool_directory = DIR/spool +log_file_path = DIR/spool/log/%slog +gecos_pattern = "" +gecos_name = CALLER_NAME + +# ----- Main settings ----- + +domainlist local_domains = test.ex + +acl_smtp_rcpt = check_recipient +trusted_users = CALLER +log_selector = +received_recipients + +queue_only +queue_run_in_order + +smtputf8_advertise_hosts = * + + +# ----- ACL ----- + +begin acl + +check_recipient: + accept hosts = : + accept domains = +local_domains + deny message = relay not permitted + +# ----- Routers ----- + +begin routers + +fail_remote_domains: + driver = redirect + domains = ! +local_domains + data = :fail: unrouteable mail domain "$domain" + +localuser: + driver = redirect + data = :blackhole: + +# ----- Transports ----- + +begin transports + +local_delivery: + driver = appendfile + delivery_date_add + envelope_to_add + file = DIR/test-mail/$local_part + headers_add = "X-body-linecount: $body_linecount\n\ + X-message-linecount: $message_linecount\n\ + X-received-count: $received_count" + return_path_add + +# End diff --git a/test/log/4201 b/test/log/4201 new file mode 100644 index 000000000..29ce53d48 --- /dev/null +++ b/test/log/4201 @@ -0,0 +1,9 @@ +1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225 +1999-03-02 09:44:33 10HmaX-0005vi-00 <= someone@some.domain H=(client) [127.0.0.1] P=esmtp S=sss for userx@test.ex +1999-03-02 09:44:33 10HmaY-0005vi-00 <= ليهمابتكلموشعربي؟@czech.Pročprostěnemluvíčesky.com H=(client) [127.0.0.1] P=esmtp S=sss for userx@test.ex +1999-03-02 09:44:33 Start queue run: pid=pppp -qq +1999-03-02 09:44:33 10HmaX-0005vi-00 => :blackhole: R=localuser +1999-03-02 09:44:33 10HmaX-0005vi-00 Completed +1999-03-02 09:44:33 10HmaY-0005vi-00 => :blackhole: R=localuser +1999-03-02 09:44:33 10HmaY-0005vi-00 Completed +1999-03-02 09:44:33 End queue run: pid=pppp -qq diff --git a/test/runtest b/test/runtest index 2baf2cafd..43ae1d42f 100755 --- a/test/runtest +++ b/test/runtest @@ -844,7 +844,6 @@ RESET_AFTER_EXTRA_LINE_READ: next if /^SSL info: unknown state/; next if /^SSL info: SSLv2\/v3 write client hello A/; next if /^SSL info: SSLv3 read server key exchange A/; - } # ======== stderr ======== @@ -1011,6 +1010,9 @@ RESET_AFTER_EXTRA_LINE_READ: next if /in\shosts_require_dane\?\sno\s\(option\sunset\)/x; + # Experimental_International + next if / in smtputf8_advertise_hosts\? no \(option unset\)/; + # Skip some lines that Exim puts out at the start of debugging output # because they will be different in different binaries. @@ -1027,6 +1029,8 @@ RESET_AFTER_EXTRA_LINE_READ: /^Fixed never_users:/ || /^Size of off_t:/ ); + + } next; diff --git a/test/scripts/4200-International/4201 b/test/scripts/4200-International/4201 new file mode 100644 index 000000000..bac040f9b --- /dev/null +++ b/test/scripts/4200-International/4201 @@ -0,0 +1,64 @@ +# Internationalised mail: smtp +# Exim test configuration 4200 +# +exim -DSERVER=server -bd -oX PORT_D +**** +# +# +# Basic smtp input, no delivery +client 127.0.0.1 PORT_D +??? 220 +EHLO client +??? 250- +??? 250-SIZE +??? 250-8BITMIME +??? 250-PIPELINING +??? 250-SMTPUTF8 +??? 250 HELP +MAIL FROM: SMTPUTF8 +??? 250 +RCPT TO: +??? 250 +DATA +??? 354 +Subject: test + +body +. +??? 250 +QUIT +??? 221 +**** +# +# +# utf-8 from, Basic smtp input, no delivery +client 127.0.0.1 PORT_D +??? 220 +EHLO client +??? 250- +??? 250-SIZE +??? 250-8BITMIME +??? 250-PIPELINING +??? 250-SMTPUTF8 +??? 250 HELP +MAIL FROM: <ليهمابتكلموشعربي؟@czech.Pročprostěnemluvíčesky.com> SMTPUTF8 +??? 250 +RCPT TO: +??? 250 +DATA +??? 354 +Subject: test + +body +. +??? 250 +QUIT +??? 221 +**** +# +# +killdaemon +exim -DSERVER=server -qq +**** +no_msglog_check + diff --git a/test/stdout/4201 b/test/stdout/4201 new file mode 100644 index 000000000..b37028d59 --- /dev/null +++ b/test/stdout/4201 @@ -0,0 +1,70 @@ +Connecting to 127.0.0.1 port 1225 ... connected +??? 220 +<<< 220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +>>> EHLO client +??? 250- +<<< 250-the.local.host.name Hello client [127.0.0.1] +??? 250-SIZE +<<< 250-SIZE 52428800 +??? 250-8BITMIME +<<< 250-8BITMIME +??? 250-PIPELINING +<<< 250-PIPELINING +??? 250-SMTPUTF8 +<<< 250-SMTPUTF8 +??? 250 HELP +<<< 250 HELP +>>> MAIL FROM: SMTPUTF8 +??? 250 +<<< 250 OK +>>> RCPT TO: +??? 250 +<<< 250 Accepted +>>> DATA +??? 354 +<<< 354 Enter message, ending with "." on a line by itself +>>> Subject: test +>>> +>>> body +>>> . +??? 250 +<<< 250 OK id=10HmaX-0005vi-00 +>>> QUIT +??? 221 +<<< 221 the.local.host.name closing connection +End of script +Connecting to 127.0.0.1 port 1225 ... connected +??? 220 +<<< 220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +>>> EHLO client +??? 250- +<<< 250-the.local.host.name Hello client [127.0.0.1] +??? 250-SIZE +<<< 250-SIZE 52428800 +??? 250-8BITMIME +<<< 250-8BITMIME +??? 250-PIPELINING +<<< 250-PIPELINING +??? 250-SMTPUTF8 +<<< 250-SMTPUTF8 +??? 250 HELP +<<< 250 HELP +>>> MAIL FROM: <ليهمابتكلموشعربي؟@czech.Pročprostěnemluvíčesky.com> SMTPUTF8 +??? 250 +<<< 250 OK +>>> RCPT TO: +??? 250 +<<< 250 Accepted +>>> DATA +??? 354 +<<< 354 Enter message, ending with "." on a line by itself +>>> Subject: test +>>> +>>> body +>>> . +??? 250 +<<< 250 OK id=10HmaY-0005vi-00 +>>> QUIT +??? 221 +<<< 221 the.local.host.name closing connection +End of script -- cgit v1.2.3 From 7ade712cc84d7f822f04baf2f46daee81701174d Mon Sep 17 00:00:00 2001 From: Jeremy Harris Date: Sun, 12 Apr 2015 19:19:58 +0100 Subject: smtp output --- TODO | 8 +++-- src/src/deliver.c | 9 +++++ src/src/functions.h | 1 + src/src/globals.c | 7 ++++ src/src/globals.h | 1 + src/src/macros.h | 6 +++- src/src/parse.c | 4 +-- src/src/smtp_in.c | 14 +++----- src/src/spool_in.c | 8 +++++ src/src/spool_out.c | 4 +++ src/src/structs.h | 3 ++ src/src/transports/smtp.c | 68 +++++++++++++++++++++++++++--------- test/confs/4201 | 17 +++++++++ test/log/4201 | 5 ++- test/scripts/4200-International/4201 | 15 ++++++++ test/stdout/4201 | 12 +++++++ 16 files changed, 150 insertions(+), 32 deletions(-) (limited to 'test/confs') diff --git a/TODO b/TODO index cca33151f..a282dc592 100644 --- a/TODO +++ b/TODO @@ -26,7 +26,13 @@ to-Alabel convert of helo name --- mua-wrapper --- acl control? +++ flag in spool file + +retries +- apply to a-label or utf8 form? + dsn handling rfc6533 + logging ++ - international msg - presentation of local-part in log @@ -42,8 +48,6 @@ forwarding checks rfc6530 7.1 -3- - mail-time rejects get 550 mailbox unavailable - bounces (see dsn handling) -flag in spool file - ++ expansions for to- and from-Alabel ? bug1567 enhanced status codes? rfc5248++ diff --git a/src/src/deliver.c b/src/src/deliver.c index 1cdecc6e9..cc43c921a 100644 --- a/src/src/deliver.c +++ b/src/src/deliver.c @@ -5594,6 +5594,10 @@ if (process_recipients != RECIP_IGNORE) recipient_item *r = recipients_list + i; address_item *new = deliver_make_addr(r->address, FALSE); new->p.errors_address = r->errors_to; +#ifdef EXPERIMENTAL_INTERNATIONAL + new->p.utf8 = message_smtputf8; + DEBUG(D_deliver) debug_printf("utf8: %c\n", message_smtputf8 ? 'T':'F'); +#endif if (r->pno >= 0) new->onetime_parent = recipients_list[r->pno].address; @@ -7857,6 +7861,11 @@ if (!regex_PRDR) regex_PRDR = regex_must_compile(US"\\n250[\\s\\-]PRDR(\\s|\\n|$)", FALSE, TRUE); #endif +#ifdef SUPPORT_TLS +if (!regex_UTF8) regex_UTF8 = + regex_must_compile(US"\\n250[\\s\\-]SMTPUTF8(\\s|\\n|$)", FALSE, TRUE); +#endif + if (!regex_DSN) regex_DSN = regex_must_compile(US"\\n250[\\s\\-]DSN(\\s|\\n|$)", FALSE, TRUE); diff --git a/src/src/functions.h b/src/src/functions.h index fdd629228..d1ada3844 100644 --- a/src/src/functions.h +++ b/src/src/functions.h @@ -422,6 +422,7 @@ extern const uschar *string_printing2(const uschar *, BOOL); extern uschar *string_split_message(uschar *); extern uschar *string_unprinting(uschar *); #ifdef EXPERIMENTAL_INTERNATIONAL +extern uschar *string_address_alabel_to_utf8(const uschar *, uschar **); extern uschar *string_address_utf8_to_alabel(uschar *, uschar **, int *); extern uschar *string_domain_alabel_to_utf8(const uschar *, uschar **); extern uschar *string_domain_utf8_to_alabel(const uschar *, uschar **); diff --git a/src/src/globals.c b/src/src/globals.c index 2cbafcdce..2bf4d0a02 100644 --- a/src/src/globals.c +++ b/src/src/globals.c @@ -175,6 +175,10 @@ BOOL prdr_requested = FALSE; const pcre *regex_PRDR = NULL; #endif +#ifdef EXPERIMENTAL_INTERNATIONAL +const pcre *regex_UTF8 = NULL; +#endif + /* Input-reading functions for messages, so we can use special ones for incoming TCP/IP. The defaults use stdin. We never need these for any stand-alone tests. */ @@ -383,6 +387,9 @@ address_item address_defaults = { NULL, /* remove_headers */ #ifdef EXPERIMENTAL_SRS NULL, /* srs_sender */ +#endif +#ifdef EXPERIMENTAL_INTERNATIONAL + FALSE, /* utf8 */ #endif } }; diff --git a/src/src/globals.h b/src/src/globals.h index d5b34201b..7cbf7bfab 100644 --- a/src/src/globals.h +++ b/src/src/globals.h @@ -572,6 +572,7 @@ extern int message_size; /* Size of message */ extern uschar *message_size_limit; /* As it says */ #ifdef EXPERIMENTAL_INTERNATIONAL extern BOOL message_smtputf8; /* Internationalized mail handling */ +const extern pcre *regex_UTF8; /* For recognizing SMTPUTF8 settings */ #endif extern uschar message_subdir[]; /* Subdirectory for messages */ extern uschar *message_reference; /* Reference for error messages */ diff --git a/src/src/macros.h b/src/src/macros.h index 0f893e812..a8ab4f7ae 100644 --- a/src/src/macros.h +++ b/src/src/macros.h @@ -503,7 +503,11 @@ to conflict with system errno values. */ #define ERRNO_MAIL4XX (-45) /* MAIL gave 4xx error */ #define ERRNO_DATA4XX (-46) /* DATA gave 4xx error */ #define ERRNO_PROXYFAIL (-47) /* Negotiation failed for proxy configured host */ -#define ERRNO_AUTHPROB (-48) /* Autheticator "other" failure */ +#define ERRNO_AUTHPROB (-48) /* Authenticator "other" failure */ + +#ifdef EXPERIMENTAL_INTERNATIONAL +# define ERRNO_UTF8_FWD (-49) /* target not supporting SMTPUTF8 */ +#endif /* These must be last, so all retry deferments can easily be identified */ diff --git a/src/src/parse.c b/src/src/parse.c index a648f755a..9e57365be 100644 --- a/src/src/parse.c +++ b/src/src/parse.c @@ -740,7 +740,7 @@ if (*s == '<') while (bracket_count-- > 0) if (*s++ != '>') { *errorptr = (s[-1] == 0)? US"'>' missing at end of address" : - string_sprintf("malformed address A: %.32s may not follow %.*s", + string_sprintf("malformed address: %.32s may not follow %.*s", s-1, s - (uschar *)mailbox - 1, mailbox); goto PARSE_FAILED; } @@ -793,7 +793,7 @@ if (*s != 0) } else { - *errorptr = string_sprintf("malformed address B: %.32s may not follow %.*s", + *errorptr = string_sprintf("malformed address: %.32s may not follow %.*s", s, s - (uschar *)mailbox, mailbox); goto PARSE_FAILED; } diff --git a/src/src/smtp_in.c b/src/src/smtp_in.c index eb22233ca..a9c7fb25c 100644 --- a/src/src/smtp_in.c +++ b/src/src/smtp_in.c @@ -4409,16 +4409,12 @@ while (done <= 0) receive_add_recipient(recipient, -1); /* Set the dsn flags in the recipients_list */ - if (orcpt != NULL) - recipients_list[recipients_count-1].orcpt = orcpt; - else - recipients_list[recipients_count-1].orcpt = NULL; + recipients_list[recipients_count-1].orcpt = orcpt; + recipients_list[recipients_count-1].dsn_flags = flags; - if (flags != 0) - recipients_list[recipients_count-1].dsn_flags = flags; - else - recipients_list[recipients_count-1].dsn_flags = 0; - DEBUG(D_receive) debug_printf("DSN: orcpt: %s flags: %d\n", recipients_list[recipients_count-1].orcpt, recipients_list[recipients_count-1].dsn_flags); + DEBUG(D_receive) debug_printf("DSN: orcpt: %s flags: %d\n", + recipients_list[recipients_count-1].orcpt, + recipients_list[recipients_count-1].dsn_flags); } /* The recipient was discarded */ diff --git a/src/src/spool_in.c b/src/src/spool_in.c index 79970cb40..742f4b579 100644 --- a/src/src/spool_in.c +++ b/src/src/spool_in.c @@ -299,6 +299,10 @@ tls_in.ocsp = OCSP_NOT_REQ; spam_score_int = NULL; #endif +#if defined(EXPERIMENTAL_INTERNATIONAL) && !defined(COMPILE_UTILITY) +message_smtputf8 = FALSE; +#endif + dsn_ret = 0; dsn_envid = NULL; @@ -568,6 +572,10 @@ for (;;) #ifdef WITH_CONTENT_SCAN else if (Ustrncmp(p, "pam_score_int ", 14) == 0) spam_score_int = string_copy(big_buffer + 16); +#endif +#if defined(EXPERIMENTAL_INTERNATIONAL) && !defined(COMPILE_UTILITY) + else if (Ustrncmp(p, "mtputf8", 7) == 0) + message_smtputf8 = TRUE; #endif break; diff --git a/src/src/spool_out.c b/src/src/spool_out.c index fc56057c1..6d22bff2c 100644 --- a/src/src/spool_out.c +++ b/src/src/spool_out.c @@ -245,6 +245,10 @@ if (tls_in.ourcert) if (tls_in.ocsp) fprintf(f, "-tls_ocsp %d\n", tls_in.ocsp); #endif +#ifdef EXPERIMENTAL_INTERNATIONAL +if (message_smtputf8) fprintf(f, "-smtputf8\n"); +#endif + /* Write the dsn flags to the spool header file */ DEBUG(D_deliver) debug_printf("DSN: Write SPOOL :-dsn_envid %s\n", dsn_envid); if (dsn_envid != NULL) fprintf(f, "-dsn_envid %s\n", dsn_envid); diff --git a/src/src/structs.h b/src/src/structs.h index 6ec52e1ec..df19cfad4 100644 --- a/src/src/structs.h +++ b/src/src/structs.h @@ -459,6 +459,9 @@ typedef struct address_item_propagated { #ifdef EXPERIMENTAL_SRS uschar *srs_sender; /* Change return path when delivering */ #endif + #ifdef EXPERIMENTAL_INTERNATIONAL + BOOL utf8; /* requires SMTPUTF8 processing */ + #endif } address_item_propagated; /* Bits for the flags field below */ diff --git a/src/src/transports/smtp.c b/src/src/transports/smtp.c index b0fe177e9..ffba14662 100644 --- a/src/src/transports/smtp.c +++ b/src/src/transports/smtp.c @@ -1355,6 +1355,9 @@ BOOL pass_message = FALSE; BOOL prdr_offered = FALSE; BOOL prdr_active; #endif +#ifdef EXPERIMENTAL_INTERNATIONAL +BOOL utf8_offered = FALSE; +#endif BOOL dsn_all_lasthop = TRUE; #if defined(SUPPORT_TLS) && defined(EXPERIMENTAL_DANE) BOOL dane = FALSE; @@ -1614,6 +1617,13 @@ goto SEND_QUIT; if (prdr_offered) {DEBUG(D_transport) debug_printf("PRDR usable\n");} #endif + +#ifdef EXPERIMENTAL_INTERNATIONAL + utf8_offered = esmtp + && addrlist->p.utf8 + && pcre_exec(regex_UTF8, NULL, CS buffer, Ustrlen(buffer), 0, + PCRE_EOPT, NULL, 0) >= 0; +#endif } /* For continuing deliveries down the same channel, the socket is the standard @@ -1821,16 +1831,24 @@ if (continue_hostname == NULL #ifndef DISABLE_PRDR prdr_offered = esmtp && pcre_exec(regex_PRDR, NULL, CS buffer, Ustrlen(CS buffer), 0, - PCRE_EOPT, NULL, 0) >= 0 + PCRE_EOPT, NULL, 0) >= 0 && verify_check_given_host(&ob->hosts_try_prdr, host) == OK; if (prdr_offered) {DEBUG(D_transport) debug_printf("PRDR usable\n");} #endif +#ifdef EXPERIMENTAL_INTERNATIONAL + utf8_offered = esmtp + && addrlist->p.utf8 + && pcre_exec(regex_UTF8, NULL, CS buffer, Ustrlen(buffer), 0, + PCRE_EOPT, NULL, 0) >= 0; +#endif + /* Note if the server supports DSN */ - smtp_use_dsn = esmtp && pcre_exec(regex_DSN, NULL, CS buffer, (int)Ustrlen(CS buffer), 0, - PCRE_EOPT, NULL, 0) >= 0; + smtp_use_dsn = esmtp + && pcre_exec(regex_DSN, NULL, CS buffer, Ustrlen(CS buffer), 0, + PCRE_EOPT, NULL, 0) >= 0; DEBUG(D_transport) debug_printf("use_dsn=%d\n", smtp_use_dsn); /* Note if the response to EHLO specifies support for the AUTH extension. @@ -1853,6 +1871,15 @@ message-specific. */ setting_up = FALSE; +#ifdef EXPERIMENTAL_INTERNATIONAL +/* If this is an international message we need the host to speak SMTPUTF8 */ +if (addrlist->p.utf8 && !utf8_offered) + { + errno = ERRNO_UTF8_FWD; + goto RESPONSE_FAILED; + } +#endif + /* If there is a filter command specified for this transport, we can now set it up. This cannot be done until the identify of the host is known. */ @@ -1929,18 +1956,25 @@ if (prdr_offered) } #endif +#ifdef EXPERIMENTAL_INTERNATIONAL +if (addrlist->p.utf8) + sprintf(CS p, " SMTPUTF8"), p += 9; +#endif + /* check if all addresses have lasthop flag */ /* do not send RET and ENVID if true */ -dsn_all_lasthop = TRUE; -for (addr = first_addr; +for (dsn_all_lasthop = TRUE, addr = first_addr; address_count < max_rcpt && addr != NULL; addr = addr->next) if ((addr->dsn_flags & rf_dsnlasthop) != 1) + { dsn_all_lasthop = FALSE; + break; + } /* Add any DSN flags to the mail command */ -if ((smtp_use_dsn) && (dsn_all_lasthop == FALSE)) +if (smtp_use_dsn && !dsn_all_lasthop) { if (dsn_ret == dsn_ret_hdrs) { @@ -1981,27 +2015,27 @@ buffer. */ pending_MAIL = TRUE; /* The block starts with MAIL */ rc = smtp_write_command(&outblock, smtp_use_pipelining, - "MAIL FROM:<%s>%s\r\n", return_path, buffer); + "MAIL FROM:<%s>%s\r\n", return_path, buffer); mail_command = string_copy(big_buffer); /* Save for later error message */ switch(rc) { case -1: /* Transmission error */ - goto SEND_FAILED; + goto SEND_FAILED; case +1: /* Block was sent */ - if (!smtp_read_response(&inblock, buffer, sizeof(buffer), '2', + if (!smtp_read_response(&inblock, buffer, sizeof(buffer), '2', ob->command_timeout)) - { - if (errno == 0 && buffer[0] == '4') { - errno = ERRNO_MAIL4XX; - addrlist->more_errno |= ((buffer[1] - '0')*10 + buffer[2] - '0') << 8; + if (errno == 0 && buffer[0] == '4') + { + errno = ERRNO_MAIL4XX; + addrlist->more_errno |= ((buffer[1] - '0')*10 + buffer[2] - '0') << 8; + } + goto RESPONSE_FAILED; } - goto RESPONSE_FAILED; - } - pending_MAIL = FALSE; - break; + pending_MAIL = FALSE; + break; } /* Pass over all the relevant recipient addresses for this host, which are the diff --git a/test/confs/4201 b/test/confs/4201 index 7d9af4bf3..3b87cd5fc 100644 --- a/test/confs/4201 +++ b/test/confs/4201 @@ -15,8 +15,10 @@ acl_smtp_rcpt = check_recipient trusted_users = CALLER log_selector = +received_recipients +.ifdef SERVER queue_only queue_run_in_order +.endif smtputf8_advertise_hosts = * @@ -34,6 +36,8 @@ check_recipient: begin routers +.ifdef SERVER + fail_remote_domains: driver = redirect domains = ! +local_domains @@ -43,6 +47,16 @@ localuser: driver = redirect data = :blackhole: +.else + +rmt: + driver = manualroute + route_data = <;[127.0.0.1]:PORT_D + transport = rmt_smtp + self = send + +.endif + # ----- Transports ----- begin transports @@ -57,4 +71,7 @@ local_delivery: X-received-count: $received_count" return_path_add +rmt_smtp: + driver = smtp + # End diff --git a/test/log/4201 b/test/log/4201 index 299952090..ebc09936a 100644 --- a/test/log/4201 +++ b/test/log/4201 @@ -1,9 +1,12 @@ 1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225 1999-03-02 09:44:33 10HmaX-0005vi-00 <= someone@some.domain H=(client) [127.0.0.1] P=utf8esmtp S=sss for userx@test.ex 1999-03-02 09:44:33 10HmaY-0005vi-00 <= ليهمابتكلموشعربي؟@czech.Pročprostěnemluvíčesky.com H=(client) [127.0.0.1] P=utf8esmtp S=sss for userx@test.ex +1999-03-02 09:44:33 10HmaZ-0005vi-00 <= 他们为什么不说中文@hebrew.למההםפשוטלאמדבריםעברית.com U=CALLER P=utf8local-esmtp S=sss for usery@test.ex +1999-03-02 09:44:33 10HmbA-0005vi-00 <= 他们为什么不说中文@hebrew.למההםפשוטלאמדבריםעברית.com H=localhost (the.local.host.name) [127.0.0.1] P=utf8esmtp S=sss id=E10HmaZ-0005vi-00@the.local.host.name for usery@test.ex +1999-03-02 09:44:33 10HmaZ-0005vi-00 => usery@test.ex R=rmt T=rmt_smtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbA-0005vi-00" +1999-03-02 09:44:33 10HmaZ-0005vi-00 Completed 1999-03-02 09:44:33 Start queue run: pid=pppp -qq 1999-03-02 09:44:33 10HmaX-0005vi-00 => :blackhole: R=localuser 1999-03-02 09:44:33 10HmaX-0005vi-00 Completed 1999-03-02 09:44:33 10HmaY-0005vi-00 => :blackhole: R=localuser 1999-03-02 09:44:33 10HmaY-0005vi-00 Completed -1999-03-02 09:44:33 End queue run: pid=pppp -qq diff --git a/test/scripts/4200-International/4201 b/test/scripts/4200-International/4201 index bac040f9b..1bb978634 100644 --- a/test/scripts/4200-International/4201 +++ b/test/scripts/4200-International/4201 @@ -57,6 +57,21 @@ QUIT **** # # +# utf-8 from, -bs input and forwarding +exim -bs -odi +EHLO client.bh +MAIL FROM: <他们为什么不说中文@hebrew.למההםפשוטלאמדבריםעברית.com> SMTPUTF8 +RCPT TO: +DATA +Subject: test + +body +. +QUIT +**** +# +# +# killdaemon exim -DSERVER=server -qq **** diff --git a/test/stdout/4201 b/test/stdout/4201 index b37028d59..8b89b2bd3 100644 --- a/test/stdout/4201 +++ b/test/stdout/4201 @@ -68,3 +68,15 @@ Connecting to 127.0.0.1 port 1225 ... connected ??? 221 <<< 221 the.local.host.name closing connection End of script +220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +250-the.local.host.name Hello CALLER at client.bh +250-SIZE 52428800 +250-8BITMIME +250-PIPELINING +250-SMTPUTF8 +250 HELP +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmaZ-0005vi-00 +221 the.local.host.name closing connection -- cgit v1.2.3 From 250b68713b5810a824bb14337b98737b6b81bf53 Mon Sep 17 00:00:00 2001 From: Jeremy Harris Date: Mon, 6 Apr 2015 14:07:31 +0100 Subject: smtp output, no remote support --- src/src/exim.c | 31 ++++++++++++++++++++++--------- src/src/receive.c | 14 ++++++++++++++ src/src/transports/smtp.c | 34 +++++++++++++++++++++++++--------- test/confs/4201 | 14 +++++++++++++- test/log/4201 | 7 +++++++ test/scripts/4200-International/4201 | 19 +++++++++++++++++++ test/stdout/4201 | 12 ++++++++++++ 7 files changed, 112 insertions(+), 19 deletions(-) (limited to 'test/confs') diff --git a/src/src/exim.c b/src/src/exim.c index 121c6c2e3..424806012 100644 --- a/src/src/exim.c +++ b/src/src/exim.c @@ -2519,7 +2519,7 @@ for (i = 1; i < argc; i++) case 'f': { - int start, end; + int dummy_start, dummy_end; uschar *errmess; if (*argrest == 0) { @@ -2527,9 +2527,7 @@ for (i = 1; i < argc; i++) { badarg = TRUE; break; } } if (*argrest == 0) - { sender_address = string_sprintf(""); /* Ensure writeable memory */ - } else { uschar *temp = argrest + Ustrlen(argrest) - 1; @@ -2537,8 +2535,15 @@ for (i = 1; i < argc; i++) if (temp >= argrest && *temp == '.') f_end_dot = TRUE; allow_domain_literals = TRUE; strip_trailing_dot = TRUE; - sender_address = parse_extract_address(argrest, &errmess, &start, &end, - &sender_address_domain, TRUE); +#ifdef EXPERIMENTAL_INTERNATIONAL + allow_utf8_domains = TRUE; +#endif + sender_address = parse_extract_address(argrest, &errmess, + &dummy_start, &dummy_end, &sender_address_domain, TRUE); +#ifdef EXPERIMENTAL_INTERNATIONAL + message_smtputf8 = string_is_utf8(sender_address); + allow_utf8_domains = FALSE; +#endif allow_domain_literals = FALSE; strip_trailing_dot = FALSE; if (sender_address == NULL) @@ -5358,7 +5363,6 @@ while (more) if (recipients_max > 0 && ++rcount > recipients_max && !extract_recipients) - { if (error_handling == ERRORS_STDERR) { fprintf(stderr, "exim: too many recipients\n"); @@ -5370,11 +5374,22 @@ while (more) moan_to_sender(ERRMESS_TOOMANYRECIP, NULL, NULL, stdin, TRUE)? errors_sender_rc : EXIT_FAILURE; } - } +#ifdef EXPERIMENTAL_INTERNATIONAL + { + BOOL b = allow_utf8_domains; + allow_utf8_domains = TRUE; +#endif recipient = parse_extract_address(s, &errmess, &start, &end, &domain, FALSE); +#ifdef EXPERIMENTAL_INTERNATIONAL + if (string_is_utf8(recipient)) + message_smtputf8 = TRUE; + else + allow_utf8_domains = b; + } +#endif if (domain == 0 && !allow_unqualified_recipient) { recipient = NULL; @@ -5474,9 +5489,7 @@ while (more) return_path = string_copy(sender_address); } else - { printf("Return-path = %s\n", (return_path[0] == 0)? US"<>" : return_path); - } printf("Sender = %s\n", (sender_address[0] == 0)? US"<>" : sender_address); receive_add_recipient( diff --git a/src/src/receive.c b/src/src/receive.c index 0b3546317..7c56f47ba 100644 --- a/src/src/receive.c +++ b/src/src/receive.c @@ -2303,9 +2303,23 @@ if (extract_recip) pp = recipient = store_get(ss - s + 1); for (p = s; p < ss; p++) if (*p != '\n') *pp++ = *p; *pp = 0; + +#ifdef EXPERIMENTAL_INTERNATIONAL + { + BOOL b = allow_utf8_domains; + allow_utf8_domains = TRUE; +#endif recipient = parse_extract_address(recipient, &errmess, &start, &end, &domain, FALSE); +#ifdef EXPERIMENTAL_INTERNATIONAL + if (string_is_utf8(recipient)) + message_smtputf8 = TRUE; + else + allow_utf8_domains = b; + } +#endif + /* Keep a list of all the bad addresses so we can send a single error message at the end. However, an empty address is not an error; just ignore it. This can come from an empty group list like diff --git a/src/src/transports/smtp.c b/src/src/transports/smtp.c index ffba14662..ef2650a3e 100644 --- a/src/src/transports/smtp.c +++ b/src/src/transports/smtp.c @@ -570,6 +570,16 @@ if (*errno_value == ERRNO_WRITEINCOMPLETE) return FALSE; } +#ifdef EXPERIMENTAL_INTERNATIONAL +/* Handle lack of advertised SMTPUTF8, for international message */ +if (*errno_value == ERRNO_UTF8_FWD) + { + *message = US string_sprintf("utf8 support required for forwarding"); + DEBUG(D_deliver|D_transport) debug_printf("%s\n", *message); + return TRUE; + } +#endif + /* Handle error responses from the remote mailer. */ if (buffer[0] != 0) @@ -2524,24 +2534,29 @@ if (!ok) switch(save_errno) { +#ifdef EXPERIMENTAL_INTERNATIONAL + case ERRNO_UTF8_FWD: + code = '5'; + /*FALLTHROUGH*/ +#endif case 0: case ERRNO_MAIL4XX: case ERRNO_DATA4XX: - message_error = TRUE; - break; + message_error = TRUE; + break; case ETIMEDOUT: - message_error = Ustrncmp(smtp_command,"MAIL",4) == 0 || - Ustrncmp(smtp_command,"end ",4) == 0; - break; + message_error = Ustrncmp(smtp_command,"MAIL",4) == 0 || + Ustrncmp(smtp_command,"end ",4) == 0; + break; case ERRNO_SMTPCLOSED: - message_error = Ustrncmp(smtp_command,"end ",4) == 0; - break; + message_error = Ustrncmp(smtp_command,"end ",4) == 0; + break; default: - message_error = FALSE; - break; + message_error = FALSE; + break; } /* Handle the cases that are treated as message errors. These are: @@ -2549,6 +2564,7 @@ if (!ok) (a) negative response or timeout after MAIL (b) negative response after DATA (c) negative response or timeout or dropped connection after "." + (d) utf8 support required and not offered It won't be a negative response or timeout after RCPT, as that is dealt with separately above. The action in all cases is to set an appropriate diff --git a/test/confs/4201 b/test/confs/4201 index 3b87cd5fc..36e38bcd5 100644 --- a/test/confs/4201 +++ b/test/confs/4201 @@ -1,4 +1,7 @@ # Exim test configuration 4201 +# SMTPUTF8 handling + +OPTION = * exim_path = EXIM_PATH host_lookup_order = bydns @@ -20,7 +23,7 @@ queue_only queue_run_in_order .endif -smtputf8_advertise_hosts = * +smtputf8_advertise_hosts = OPTION # ----- ACL ----- @@ -28,6 +31,10 @@ smtputf8_advertise_hosts = * begin acl check_recipient: + +.ifndef SERVER + accept domains = * +.endif accept hosts = : accept domains = +local_domains deny message = relay not permitted @@ -51,10 +58,15 @@ localuser: rmt: driver = manualroute + domains = +local_domains route_data = <;[127.0.0.1]:PORT_D transport = rmt_smtp self = send +hole: + driver = redirect + data = :blackhole: + .endif # ----- Transports ----- diff --git a/test/log/4201 b/test/log/4201 index ebc09936a..7bd340b59 100644 --- a/test/log/4201 +++ b/test/log/4201 @@ -5,6 +5,13 @@ 1999-03-02 09:44:33 10HmbA-0005vi-00 <= 他们为什么不说中文@hebrew.למההםפשוטלאמדבריםעברית.com H=localhost (the.local.host.name) [127.0.0.1] P=utf8esmtp S=sss id=E10HmaZ-0005vi-00@the.local.host.name for usery@test.ex 1999-03-02 09:44:33 10HmaZ-0005vi-00 => usery@test.ex R=rmt T=rmt_smtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbA-0005vi-00" 1999-03-02 09:44:33 10HmaZ-0005vi-00 Completed +1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225 +1999-03-02 09:44:33 10HmbB-0005vi-00 <= यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.com U=CALLER P=utf8local-esmtp S=sss for userz@test.ex +1999-03-02 09:44:33 10HmbB-0005vi-00 ** userz@test.ex R=rmt T=rmt_smtp H=127.0.0.1 [127.0.0.1]: utf8 support required for forwarding +1999-03-02 09:44:33 10HmbC-0005vi-00 <= <> R=10HmbB-0005vi-00 U=EXIMUSER P=local S=sss for यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.com +1999-03-02 09:44:33 10HmbC-0005vi-00 => :blackhole: <यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.com> R=hole +1999-03-02 09:44:33 10HmbC-0005vi-00 Completed +1999-03-02 09:44:33 10HmbB-0005vi-00 Completed 1999-03-02 09:44:33 Start queue run: pid=pppp -qq 1999-03-02 09:44:33 10HmaX-0005vi-00 => :blackhole: R=localuser 1999-03-02 09:44:33 10HmaX-0005vi-00 Completed diff --git a/test/scripts/4200-International/4201 b/test/scripts/4200-International/4201 index 1bb978634..17b97c7e6 100644 --- a/test/scripts/4200-International/4201 +++ b/test/scripts/4200-International/4201 @@ -65,6 +65,25 @@ RCPT TO: DATA Subject: test +body +. +QUIT +**** +# +# +# +killdaemon +exim -DSERVER=server -DOPTION="" -bd -oX PORT_D +**** +# +# forwarding fails when target does not support SMTPUTF8 +exim -bs -odi +EHLO client.ffail +MAIL FROM: <यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.com> SMTPUTF8 +RCPT TO: +DATA +Subject: test + body . QUIT diff --git a/test/stdout/4201 b/test/stdout/4201 index 8b89b2bd3..e5f488632 100644 --- a/test/stdout/4201 +++ b/test/stdout/4201 @@ -80,3 +80,15 @@ End of script 354 Enter message, ending with "." on a line by itself 250 OK id=10HmaZ-0005vi-00 221 the.local.host.name closing connection +220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +250-the.local.host.name Hello CALLER at client.ffail +250-SIZE 52428800 +250-8BITMIME +250-PIPELINING +250-SMTPUTF8 +250 HELP +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbB-0005vi-00 +221 the.local.host.name closing connection -- cgit v1.2.3 From 9671784a54a6729881f7716a0b963a0422e8b3dd Mon Sep 17 00:00:00 2001 From: Jeremy Harris Date: Tue, 7 Apr 2015 22:15:43 +0100 Subject: bounce message --- TODO | 2 + src/src/deliver.c | 86 +++++++++++++--------- test/confs/4201 | 28 +++++-- test/log/4201 | 24 +++--- ...40\245\207\340\244\271\340\245\210\340\244\202" | 59 +++++++++++++++ test/scripts/4200-International/4201 | 12 ++- test/stderr/0275 | 2 +- test/stderr/0278 | 2 +- test/stderr/0361 | 4 +- test/stderr/0386 | 4 +- test/stderr/0402 | 14 ++-- test/stderr/0403 | 4 +- test/stderr/0404 | 6 +- test/stderr/0408 | 2 +- test/stderr/0487 | 2 +- test/stderr/2600 | 2 +- test/stderr/5004 | 4 +- test/stderr/5005 | 4 +- test/stderr/5006 | 2 +- 19 files changed, 186 insertions(+), 77 deletions(-) create mode 100644 "test/mail/4201.\340\244\257\340\244\271\340\244\262\340\245\213\340\244\227\340\244\271\340\244\277\340\244\250\340\245\215\340\244\246\340\245\200\340\244\225\340\245\215\340\244\257\340\245\213\340\244\202\340\244\250\340\244\271\340\245\200\340\244\202\340\244\254\340\245\213\340\244\262\340\244\270\340\244\225\340\244\244\340\245\207\340\244\271\340\245\210\340\244\202" (limited to 'test/confs') diff --git a/TODO b/TODO index a282dc592..4445d0fe4 100644 --- a/TODO +++ b/TODO @@ -32,6 +32,8 @@ retries - apply to a-label or utf8 form? dsn handling rfc6533 +- ORCPT param: utf8 vs. unitext encoded +-- to/from unitext expansions ( foo\x{HEXPOINT} - 2-6 hex digits ) logging ++ - international msg diff --git a/src/src/deliver.c b/src/src/deliver.c index cc43c921a..17edb65db 100644 --- a/src/src/deliver.c +++ b/src/src/deliver.c @@ -6664,29 +6664,36 @@ else if (!dont_deliver) retry_update(&addr_defer, &addr_failed, &addr_succeed); addr_dsntmp = addr_succeed; addr_senddsn = NULL; -while(addr_dsntmp != NULL) +while(addr_dsntmp) { - DEBUG(D_deliver) - debug_printf("DSN: processing router : %s\n", addr_dsntmp->router->name); - - DEBUG(D_deliver) - debug_printf("DSN: processing successful delivery address: %s\n", addr_dsntmp->address); - /* af_ignore_error not honored here. it's not an error */ - - DEBUG(D_deliver) debug_printf("DSN: Sender_address: %s\n", sender_address); - DEBUG(D_deliver) debug_printf("DSN: orcpt: %s flags: %d\n", addr_dsntmp->dsn_orcpt, addr_dsntmp->dsn_flags); - DEBUG(D_deliver) debug_printf("DSN: envid: %s ret: %d\n", dsn_envid, dsn_ret); - DEBUG(D_deliver) debug_printf("DSN: Final recipient: %s\n", addr_dsntmp->address); - DEBUG(D_deliver) debug_printf("DSN: Remote SMTP server supports DSN: %d\n", addr_dsntmp->dsn_aware); + DEBUG(D_deliver) + { + debug_printf("DSN: processing router : %s\n" + "DSN: processing successful delivery address: %s\n" + "DSN: Sender_address: %s\n" + "DSN: orcpt: %s flags: %d\n" + "DSN: envid: %s ret: %d\n" + "DSN: Final recipient: %s\n" + "DSN: Remote SMTP server supports DSN: %d\n", + addr_dsntmp->router->name, + addr_dsntmp->address, + sender_address, + addr_dsntmp->dsn_orcpt, addr_dsntmp->dsn_flags, + dsn_envid, dsn_ret, + addr_dsntmp->address, + addr_dsntmp->dsn_aware + ); + } /* send report if next hop not DSN aware or a router flagged "last DSN hop" and a report was requested */ - if (((addr_dsntmp->dsn_aware != dsn_support_yes) || - ((addr_dsntmp->dsn_flags & rf_dsnlasthop) != 0)) - && - (((addr_dsntmp->dsn_flags & rf_dsnflags) != 0) && - ((addr_dsntmp->dsn_flags & rf_notify_success) != 0))) + if ( ( addr_dsntmp->dsn_aware != dsn_support_yes + || addr_dsntmp->dsn_flags & rf_dsnlasthop + ) + && addr_dsntmp->dsn_flags & rf_dsnflags + && addr_dsntmp->dsn_flags & rf_notify_success + ) { /* copy and relink address_item and send report with all of them at once later */ address_item *addr_next; @@ -6696,14 +6703,12 @@ while(addr_dsntmp != NULL) addr_senddsn->next = addr_next; } else - { - DEBUG(D_deliver) debug_printf("DSN: *** NOT SENDING DSN SUCCESS Message ***\n"); - } + DEBUG(D_deliver) debug_printf("DSN: not sending DSN success message\n"); addr_dsntmp = addr_dsntmp->next; } -if (addr_senddsn != NULL) +if (addr_senddsn) { pid_t pid; int fd; @@ -6860,8 +6865,8 @@ while (addr_failed != NULL) if (sender_address[0] == 0 && addr_failed->p.errors_address == NULL) { - if (!testflag(addr_failed, af_retry_timedout) && - !testflag(addr_failed, af_ignore_error)) + if ( !testflag(addr_failed, af_retry_timedout) + && !testflag(addr_failed, af_ignore_error)) { log_write(0, LOG_MAIN|LOG_PANIC, "internal error: bounce message " "failure is neither frozen nor ignored (it's been ignored)"); @@ -6874,8 +6879,8 @@ while (addr_failed != NULL) mark the recipient done. */ if ( testflag(addr_failed, af_ignore_error) - || ( ((addr_failed->dsn_flags & rf_dsnflags) != 0) - && ((addr_failed->dsn_flags & rf_notify_failure) != rf_notify_failure)) + || ( addr_failed->dsn_flags & rf_dsnflags + && (addr_failed->dsn_flags & rf_notify_failure) != rf_notify_failure) ) { addr = addr_failed; @@ -7140,10 +7145,18 @@ wording. */ } /* output machine readable part */ - fprintf(f, "--%s\n" - "Content-type: message/delivery-status\n\n" - "Reporting-MTA: dns; %s\n", - bound, smtp_active_hostname); +#ifdef EXPERIMENTAL_INTERNATIONAL + if (message_smtputf8) + fprintf(f, "--%s\n" + "Content-type: message/global-delivery-status\n\n" + "Reporting-MTA: dns; %s\n", + bound, smtp_active_hostname); + else +#endif + fprintf(f, "--%s\n" + "Content-type: message/delivery-status\n\n" + "Reporting-MTA: dns; %s\n", + bound, smtp_active_hostname); if (dsn_envid) { @@ -7218,9 +7231,16 @@ wording. */ } } - fputs(topt & topt_no_body ? "Content-type: text/rfc822-headers\n\n" - : "Content-type: message/rfc822\n\n", - f); +#ifdef EXPERIMENTAL_INTERNATIONAL + if (message_smtputf8) + fputs(topt & topt_no_body ? "Content-type: message/global-headers\n\n" + : "Content-type: message/global\n\n", + f); + else +#endif + fputs(topt & topt_no_body ? "Content-type: text/rfc822-headers\n\n" + : "Content-type: message/rfc822\n\n", + f); fflush(f); transport_filter_argv = NULL; /* Just in case */ diff --git a/test/confs/4201 b/test/confs/4201 index 36e38bcd5..aea468447 100644 --- a/test/confs/4201 +++ b/test/confs/4201 @@ -15,8 +15,10 @@ gecos_name = CALLER_NAME domainlist local_domains = test.ex acl_smtp_rcpt = check_recipient +acl_not_smtp = non_smtp + trusted_users = CALLER -log_selector = +received_recipients +log_selector = +received_recipients +sender_on_delivery .ifdef SERVER queue_only @@ -39,6 +41,13 @@ check_recipient: accept domains = +local_domains deny message = relay not permitted +.ifndef SERVER +non_smtp: + accept senders = : + control = queue_only + accept +.endif + # ----- Routers ----- begin routers @@ -50,12 +59,24 @@ fail_remote_domains: domains = ! +local_domains data = :fail: unrouteable mail domain "$domain" +bounces: + driver = redirect + condition = ${if eq {} {$sender_address}} + data = DIR/test-mail/$local_part + file_transport = local_delivery + localuser: driver = redirect data = :blackhole: .else +bounces: + driver = redirect + domains = *.local + data = DIR/test-mail/$local_part + file_transport = local_delivery + rmt: driver = manualroute domains = +local_domains @@ -63,10 +84,6 @@ rmt: transport = rmt_smtp self = send -hole: - driver = redirect - data = :blackhole: - .endif # ----- Transports ----- @@ -75,6 +92,7 @@ begin transports local_delivery: driver = appendfile + user = CALLER delivery_date_add envelope_to_add file = DIR/test-mail/$local_part diff --git a/test/log/4201 b/test/log/4201 index 7bd340b59..fcaaba1c2 100644 --- a/test/log/4201 +++ b/test/log/4201 @@ -3,17 +3,23 @@ 1999-03-02 09:44:33 10HmaY-0005vi-00 <= ليهمابتكلموشعربي؟@czech.Pročprostěnemluvíčesky.com H=(client) [127.0.0.1] P=utf8esmtp S=sss for userx@test.ex 1999-03-02 09:44:33 10HmaZ-0005vi-00 <= 他们为什么不说中文@hebrew.למההםפשוטלאמדבריםעברית.com U=CALLER P=utf8local-esmtp S=sss for usery@test.ex 1999-03-02 09:44:33 10HmbA-0005vi-00 <= 他们为什么不说中文@hebrew.למההםפשוטלאמדבריםעברית.com H=localhost (the.local.host.name) [127.0.0.1] P=utf8esmtp S=sss id=E10HmaZ-0005vi-00@the.local.host.name for usery@test.ex -1999-03-02 09:44:33 10HmaZ-0005vi-00 => usery@test.ex R=rmt T=rmt_smtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbA-0005vi-00" +1999-03-02 09:44:33 10HmaZ-0005vi-00 => usery@test.ex F=<他们为什么不说中文@hebrew.למההםפשוטלאמדבריםעברית.com> R=rmt T=rmt_smtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbA-0005vi-00" 1999-03-02 09:44:33 10HmaZ-0005vi-00 Completed -1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225 -1999-03-02 09:44:33 10HmbB-0005vi-00 <= यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.com U=CALLER P=utf8local-esmtp S=sss for userz@test.ex -1999-03-02 09:44:33 10HmbB-0005vi-00 ** userz@test.ex R=rmt T=rmt_smtp H=127.0.0.1 [127.0.0.1]: utf8 support required for forwarding -1999-03-02 09:44:33 10HmbC-0005vi-00 <= <> R=10HmbB-0005vi-00 U=EXIMUSER P=local S=sss for यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.com -1999-03-02 09:44:33 10HmbC-0005vi-00 => :blackhole: <यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.com> R=hole -1999-03-02 09:44:33 10HmbC-0005vi-00 Completed -1999-03-02 09:44:33 10HmbB-0005vi-00 Completed -1999-03-02 09:44:33 Start queue run: pid=pppp -qq +1999-03-02 09:44:33 Start queue run: pid=pppp -qqff 1999-03-02 09:44:33 10HmaX-0005vi-00 => :blackhole: R=localuser 1999-03-02 09:44:33 10HmaX-0005vi-00 Completed 1999-03-02 09:44:33 10HmaY-0005vi-00 => :blackhole: R=localuser 1999-03-02 09:44:33 10HmaY-0005vi-00 Completed +1999-03-02 09:44:33 10HmbA-0005vi-00 => :blackhole: R=localuser +1999-03-02 09:44:33 10HmbA-0005vi-00 Completed +1999-03-02 09:44:33 End queue run: pid=pppp -qqff +1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225 +1999-03-02 09:44:33 10HmbB-0005vi-00 <= यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local U=CALLER P=utf8local-esmtp S=sss for userz@test.ex +1999-03-02 09:44:33 10HmbB-0005vi-00 ** userz@test.ex F=<यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local> R=rmt T=rmt_smtp H=127.0.0.1 [127.0.0.1]: utf8 support required for forwarding +1999-03-02 09:44:33 10HmbC-0005vi-00 <= <> R=10HmbB-0005vi-00 U=EXIMUSER P=local S=sss for यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local +1999-03-02 09:44:33 10HmbC-0005vi-00 no immediate delivery: queued by ACL +1999-03-02 09:44:33 10HmbB-0005vi-00 Completed +1999-03-02 09:44:33 Start queue run: pid=pppp -qfl +1999-03-02 09:44:33 10HmbC-0005vi-00 => TESTSUITE/test-mail/यहलोगहिन्दीक्योंनहींबोलसकतेहैं <यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local> F=<> R=bounces T=local_delivery +1999-03-02 09:44:33 10HmbC-0005vi-00 Completed +1999-03-02 09:44:33 End queue run: pid=pppp -qfl diff --git "a/test/mail/4201.\340\244\257\340\244\271\340\244\262\340\245\213\340\244\227\340\244\271\340\244\277\340\244\250\340\245\215\340\244\246\340\245\200\340\244\225\340\245\215\340\244\257\340\245\213\340\244\202\340\244\250\340\244\271\340\245\200\340\244\202\340\244\254\340\245\213\340\244\262\340\244\270\340\244\225\340\244\244\340\245\207\340\244\271\340\245\210\340\244\202" "b/test/mail/4201.\340\244\257\340\244\271\340\244\262\340\245\213\340\244\227\340\244\271\340\244\277\340\244\250\340\245\215\340\244\246\340\245\200\340\244\225\340\245\215\340\244\257\340\245\213\340\244\202\340\244\250\340\244\271\340\245\200\340\244\202\340\244\254\340\245\213\340\244\262\340\244\270\340\244\225\340\244\244\340\245\207\340\244\271\340\245\210\340\244\202" new file mode 100644 index 000000000..cb2203570 --- /dev/null +++ "b/test/mail/4201.\340\244\257\340\244\271\340\244\262\340\245\213\340\244\227\340\244\271\340\244\277\340\244\250\340\245\215\340\244\246\340\245\200\340\244\225\340\245\215\340\244\257\340\245\213\340\244\202\340\244\250\340\244\271\340\245\200\340\244\202\340\244\254\340\245\213\340\244\262\340\244\270\340\244\225\340\244\244\340\245\207\340\244\271\340\245\210\340\244\202" @@ -0,0 +1,59 @@ +From MAILER-DAEMON Tue Mar 02 09:44:33 1999 +Return-path: <> +Envelope-to: यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local +Delivery-date: Tue, 2 Mar 1999 09:44:33 +0000 +Received: from EXIMUSER by the.local.host.name with local (Exim x.yz) + id 10HmbC-0005vi-00 + for यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local; Tue, 2 Mar 1999 09:44:33 +0000 +X-Failed-Recipients: userz@test.ex +Auto-Submitted: auto-replied +From: Mail Delivery System +To: यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local +Content-Type: multipart/report; report-type=delivery-status; boundary=NNNNNNNNNN-eximdsn-MMMMMMMMMM +MIME-Version: 1.0 +Subject: Mail delivery failed: returning message to sender +Message-Id: +Date: Tue, 2 Mar 1999 09:44:33 +0000 +X-body-linecount: 38 +X-message-linecount: 50 +X-received-count: 1 + +--NNNNNNNNNN-eximdsn-MMMMMMMMMM +Content-type: text/plain; charset=us-ascii + +This message was created automatically by mail delivery software. + +A message that you sent could not be delivered to one or more of its +recipients. This is a permanent error. The following address(es) failed: + + userz@test.ex + host 127.0.0.1 [127.0.0.1] + +--NNNNNNNNNN-eximdsn-MMMMMMMMMM +Content-type: message/global-delivery-status + +Reporting-MTA: dns; the.local.host.name + +Action: failed +Final-Recipient: rfc822;userz@test.ex +Status: 5.0.0 +Remote-MTA: dns; 127.0.0.1 + +--NNNNNNNNNN-eximdsn-MMMMMMMMMM +Content-type: message/global + +Return-path: <यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local> +Received: from CALLER (helo=client.ffail) + by the.local.host.name with utf8local-esmtp (Exim x.yz) + (envelope-from <यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local>) + id 10HmbB-0005vi-00 + for userz@test.ex; Tue, 2 Mar 1999 09:44:33 +0000 +Subject: test +Message-Id: +From: यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local +Date: Tue, 2 Mar 1999 09:44:33 +0000 + +body + +--NNNNNNNNNN-eximdsn-MMMMMMMMMM-- + diff --git a/test/scripts/4200-International/4201 b/test/scripts/4200-International/4201 index 17b97c7e6..d2fb96cdf 100644 --- a/test/scripts/4200-International/4201 +++ b/test/scripts/4200-International/4201 @@ -73,13 +73,18 @@ QUIT # # killdaemon +sleep 1 +exim -DSERVER=server -qqff +**** +# +# exim -DSERVER=server -DOPTION="" -bd -oX PORT_D **** # # forwarding fails when target does not support SMTPUTF8 exim -bs -odi EHLO client.ffail -MAIL FROM: <यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.com> SMTPUTF8 +MAIL FROM: <यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local> SMTPUTF8 RCPT TO: DATA Subject: test @@ -92,7 +97,6 @@ QUIT # # killdaemon -exim -DSERVER=server -qq +# +exim -qfl **** -no_msglog_check - diff --git a/test/stderr/0275 b/test/stderr/0275 index a634ad530..bb642b01b 100644 --- a/test/stderr/0275 +++ b/test/stderr/0275 @@ -341,7 +341,7 @@ DSN: orcpt: NULL flags: 0 DSN: envid: NULL ret: 0 DSN: Final recipient: userx@test.ex DSN: Remote SMTP server supports DSN: 0 -DSN: *** NOT SENDING DSN SUCCESS Message *** +DSN: not sending DSN success message LOG: MAIN Completed end delivery of 10HmaX-0005vi-00 diff --git a/test/stderr/0278 b/test/stderr/0278 index 062aaaff6..fd5795b04 100644 --- a/test/stderr/0278 +++ b/test/stderr/0278 @@ -243,7 +243,7 @@ DSN: orcpt: NULL flags: 0 DSN: envid: NULL ret: 0 DSN: Final recipient: CALLER@test.ex DSN: Remote SMTP server supports DSN: 0 -DSN: *** NOT SENDING DSN SUCCESS Message *** +DSN: not sending DSN success message LOG: MAIN Completed end delivery of 10HmaX-0005vi-00 diff --git a/test/stderr/0361 b/test/stderr/0361 index 5b93c6e9c..43bcdbf84 100644 --- a/test/stderr/0361 +++ b/test/stderr/0361 @@ -240,7 +240,7 @@ DSN: orcpt: NULL flags: 0 DSN: envid: NULL ret: 0 DSN: Final recipient: kilos@recurse.test.ex.test.ex DSN: Remote SMTP server supports DSN: 0 -DSN: *** NOT SENDING DSN SUCCESS Message *** +DSN: not sending DSN success message DSN: processing router : r3 DSN: processing successful delivery address: kilos@recurse.test.ex.test.ex DSN: Sender_address: CALLER@test.ex @@ -248,7 +248,7 @@ DSN: orcpt: NULL flags: 0 DSN: envid: NULL ret: 0 DSN: Final recipient: kilos@recurse.test.ex.test.ex DSN: Remote SMTP server supports DSN: 0 -DSN: *** NOT SENDING DSN SUCCESS Message *** +DSN: not sending DSN success message LOG: MAIN Completed end delivery of 10HmaY-0005vi-00 diff --git a/test/stderr/0386 b/test/stderr/0386 index 086297cf1..3232ada03 100644 --- a/test/stderr/0386 +++ b/test/stderr/0386 @@ -329,7 +329,7 @@ DSN: orcpt: NULL flags: 0 DSN: envid: NULL ret: 0 DSN: Final recipient: 2@b DSN: Remote SMTP server supports DSN: 0 -DSN: *** NOT SENDING DSN SUCCESS Message *** +DSN: not sending DSN success message LOG: MAIN Completed end delivery of 10HmaX-0005vi-00 @@ -505,7 +505,7 @@ DSN: orcpt: NULL flags: 0 DSN: envid: NULL ret: 0 DSN: Final recipient: 2@b DSN: Remote SMTP server supports DSN: 0 -DSN: *** NOT SENDING DSN SUCCESS Message *** +DSN: not sending DSN success message LOG: MAIN Completed end delivery of 10HmaY-0005vi-00 diff --git a/test/stderr/0402 b/test/stderr/0402 index ec373f5fe..c0a03d3ee 100644 --- a/test/stderr/0402 +++ b/test/stderr/0402 @@ -568,7 +568,7 @@ DSN: orcpt: NULL flags: 0 DSN: envid: NULL ret: 0 DSN: Final recipient: userz@test.ex DSN: Remote SMTP server supports DSN: 0 -DSN: *** NOT SENDING DSN SUCCESS Message *** +DSN: not sending DSN success message DSN: processing router : r2 DSN: processing successful delivery address: usery@test.ex DSN: Sender_address: CALLER@test.ex @@ -576,7 +576,7 @@ DSN: orcpt: NULL flags: 0 DSN: envid: NULL ret: 0 DSN: Final recipient: usery@test.ex DSN: Remote SMTP server supports DSN: 0 -DSN: *** NOT SENDING DSN SUCCESS Message *** +DSN: not sending DSN success message DSN: processing router : r1 DSN: processing successful delivery address: CALLER@test.ex DSN: Sender_address: CALLER@test.ex @@ -584,7 +584,7 @@ DSN: orcpt: NULL flags: 0 DSN: envid: NULL ret: 0 DSN: Final recipient: CALLER@test.ex DSN: Remote SMTP server supports DSN: 0 -DSN: *** NOT SENDING DSN SUCCESS Message *** +DSN: not sending DSN success message DSN: processing router : r4 DSN: processing successful delivery address: TESTSUITE/test-mail/junk DSN: Sender_address: CALLER@test.ex @@ -592,7 +592,7 @@ DSN: orcpt: NULL flags: 0 DSN: envid: NULL ret: 0 DSN: Final recipient: TESTSUITE/test-mail/junk DSN: Remote SMTP server supports DSN: 0 -DSN: *** NOT SENDING DSN SUCCESS Message *** +DSN: not sending DSN success message DSN: processing router : r5 DSN: processing successful delivery address: TESTSUITE/test-mail/junk DSN: Sender_address: CALLER@test.ex @@ -600,7 +600,7 @@ DSN: orcpt: NULL flags: 0 DSN: envid: NULL ret: 0 DSN: Final recipient: TESTSUITE/test-mail/junk DSN: Remote SMTP server supports DSN: 0 -DSN: *** NOT SENDING DSN SUCCESS Message *** +DSN: not sending DSN success message DSN: processing router : r4 DSN: processing successful delivery address: rd+CALLER@test.ex DSN: Sender_address: CALLER@test.ex @@ -608,7 +608,7 @@ DSN: orcpt: NULL flags: 0 DSN: envid: NULL ret: 0 DSN: Final recipient: rd+CALLER@test.ex DSN: Remote SMTP server supports DSN: 0 -DSN: *** NOT SENDING DSN SUCCESS Message *** +DSN: not sending DSN success message DSN: processing router : r5 DSN: processing successful delivery address: rd+usery@test.ex DSN: Sender_address: CALLER@test.ex @@ -616,7 +616,7 @@ DSN: orcpt: NULL flags: 0 DSN: envid: NULL ret: 0 DSN: Final recipient: rd+usery@test.ex DSN: Remote SMTP server supports DSN: 0 -DSN: *** NOT SENDING DSN SUCCESS Message *** +DSN: not sending DSN success message LOG: MAIN Completed end delivery of 10HmaX-0005vi-00 diff --git a/test/stderr/0403 b/test/stderr/0403 index 27b209df2..96e990bfd 100644 --- a/test/stderr/0403 +++ b/test/stderr/0403 @@ -191,7 +191,7 @@ DSN: orcpt: NULL flags: 0 DSN: envid: NULL ret: 0 DSN: Final recipient: TESTSUITE/test-mail/junk DSN: Remote SMTP server supports DSN: 0 -DSN: *** NOT SENDING DSN SUCCESS Message *** +DSN: not sending DSN success message DSN: processing router : r1 DSN: processing successful delivery address: userx@test.ex DSN: Sender_address: CALLER@test.ex @@ -199,7 +199,7 @@ DSN: orcpt: NULL flags: 0 DSN: envid: NULL ret: 0 DSN: Final recipient: userx@test.ex DSN: Remote SMTP server supports DSN: 0 -DSN: *** NOT SENDING DSN SUCCESS Message *** +DSN: not sending DSN success message LOG: MAIN Completed end delivery of 10HmaX-0005vi-00 diff --git a/test/stderr/0404 b/test/stderr/0404 index 9d04fe58a..1f791c416 100644 --- a/test/stderr/0404 +++ b/test/stderr/0404 @@ -18020,7 +18020,7 @@ DSN: orcpt: NULL flags: 0 DSN: envid: NULL ret: 0 DSN: Final recipient: sender@test.ex DSN: Remote SMTP server supports DSN: 0 -DSN: *** NOT SENDING DSN SUCCESS Message *** +DSN: not sending DSN success message LOG: MAIN Completed end delivery of 10HmaY-0005vi-00 @@ -18057,7 +18057,7 @@ DSN: orcpt: NULL flags: 0 DSN: envid: NULL ret: 0 DSN: Final recipient: >sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex,sender@test.ex, ... DSN: Remote SMTP server supports DSN: 0 -DSN: *** NOT SENDING DSN SUCCESS Message *** +DSN: not sending DSN success message DSN: processing router : r2 DSN: processing successful delivery address: userx@test.ex DSN: Sender_address: CALLER@test.ex @@ -18065,7 +18065,7 @@ DSN: orcpt: NULL flags: 0 DSN: envid: NULL ret: 0 DSN: Final recipient: userx@test.ex DSN: Remote SMTP server supports DSN: 0 -DSN: *** NOT SENDING DSN SUCCESS Message *** +DSN: not sending DSN success message LOG: MAIN Completed end delivery of 10HmaX-0005vi-00 diff --git a/test/stderr/0408 b/test/stderr/0408 index f578e30c1..67fe44cb5 100644 --- a/test/stderr/0408 +++ b/test/stderr/0408 @@ -181,7 +181,7 @@ DSN: orcpt: NULL flags: 0 DSN: envid: NULL ret: 0 DSN: Final recipient: userx@test.ex DSN: Remote SMTP server supports DSN: 0 -DSN: *** NOT SENDING DSN SUCCESS Message *** +DSN: not sending DSN success message LOG: MAIN Completed end delivery of 10HmaX-0005vi-00 diff --git a/test/stderr/0487 b/test/stderr/0487 index e3217abe2..c8d720beb 100644 --- a/test/stderr/0487 +++ b/test/stderr/0487 @@ -184,7 +184,7 @@ DSN: orcpt: NULL flags: 0 DSN: envid: NULL ret: 0 DSN: Final recipient: userx@test.ex DSN: Remote SMTP server supports DSN: 0 -DSN: *** NOT SENDING DSN SUCCESS Message *** +DSN: not sending DSN success message LOG: MAIN Completed end delivery of 10HmaX-0005vi-00 diff --git a/test/stderr/2600 b/test/stderr/2600 index 8c0bdb080..cc1864aa2 100644 --- a/test/stderr/2600 +++ b/test/stderr/2600 @@ -457,7 +457,7 @@ DSN: orcpt: NULL flags: 0 DSN: envid: NULL ret: 0 DSN: Final recipient: userx@myhost.test.ex DSN: Remote SMTP server supports DSN: 0 -DSN: *** NOT SENDING DSN SUCCESS Message *** +DSN: not sending DSN success message LOG: MAIN Completed end delivery of 10HmaX-0005vi-00 diff --git a/test/stderr/5004 b/test/stderr/5004 index f8d86b750..501488711 100644 --- a/test/stderr/5004 +++ b/test/stderr/5004 @@ -181,7 +181,7 @@ DSN: orcpt: NULL flags: 0 DSN: envid: NULL ret: 0 DSN: Final recipient: TESTSUITE/test-mail DSN: Remote SMTP server supports DSN: 0 -DSN: *** NOT SENDING DSN SUCCESS Message *** +DSN: not sending DSN success message DSN: processing router : r1 DSN: processing successful delivery address: userx@test.ex DSN: Sender_address: CALLER@test.ex @@ -189,7 +189,7 @@ DSN: orcpt: NULL flags: 0 DSN: envid: NULL ret: 0 DSN: Final recipient: userx@test.ex DSN: Remote SMTP server supports DSN: 0 -DSN: *** NOT SENDING DSN SUCCESS Message *** +DSN: not sending DSN success message LOG: MAIN Completed end delivery of 10HmaX-0005vi-00 diff --git a/test/stderr/5005 b/test/stderr/5005 index 8a9536a34..ae0dbba0b 100644 --- a/test/stderr/5005 +++ b/test/stderr/5005 @@ -173,7 +173,7 @@ DSN: orcpt: NULL flags: 0 DSN: envid: NULL ret: 0 DSN: Final recipient: nofile@test.ex DSN: Remote SMTP server supports DSN: 0 -DSN: *** NOT SENDING DSN SUCCESS Message *** +DSN: not sending DSN success message LOG: MAIN Completed end delivery of 10HmaX-0005vi-00 @@ -357,7 +357,7 @@ DSN: orcpt: NULL flags: 0 DSN: envid: NULL ret: 0 DSN: Final recipient: userx@test.ex DSN: Remote SMTP server supports DSN: 0 -DSN: *** NOT SENDING DSN SUCCESS Message *** +DSN: not sending DSN success message LOG: MAIN Completed end delivery of 10HmaY-0005vi-00 diff --git a/test/stderr/5006 b/test/stderr/5006 index 72b650fbf..9df6ced95 100644 --- a/test/stderr/5006 +++ b/test/stderr/5006 @@ -171,7 +171,7 @@ DSN: orcpt: NULL flags: 0 DSN: envid: NULL ret: 0 DSN: Final recipient: userx@test.ex DSN: Remote SMTP server supports DSN: 0 -DSN: *** NOT SENDING DSN SUCCESS Message *** +DSN: not sending DSN success message LOG: MAIN Completed end delivery of 10HmaX-0005vi-00 -- cgit v1.2.3 From 9bfc60ebf1f86a212280c19a28bb4399e8fbb392 Mon Sep 17 00:00:00 2001 From: Jeremy Harris Date: Wed, 8 Apr 2015 21:33:51 +0100 Subject: recipient verify callout --- src/src/acl.c | 3 ++ src/src/transports/smtp.c | 2 +- src/src/verify.c | 50 ++++++++++++++++++++++++++-- test/confs/4201 | 25 ++++++++++---- test/log/4201 | 21 +++++++++++- test/rejectlog/4201 | 3 ++ test/runtest | 1 + test/scripts/4200-International/4201 | 63 +++++++++++++++++++++++++++++++++++- test/stdout/4201 | 44 +++++++++++++++++++++++++ 9 files changed, 201 insertions(+), 11 deletions(-) create mode 100644 test/rejectlog/4201 (limited to 'test/confs') diff --git a/src/src/acl.c b/src/src/acl.c index ea078f6fd..e16fbb989 100644 --- a/src/src/acl.c +++ b/src/src/acl.c @@ -4382,6 +4382,9 @@ if (where == ACL_WHERE_RCPT) *log_msgptr = US"defer in percent_hack_domains check"; return DEFER; } +#ifdef EXPERIMENTAL_INTERNATIONAL + addr->p.utf8 = message_smtputf8; +#endif deliver_domain = addr->domain; deliver_localpart = addr->local_part; } diff --git a/src/src/transports/smtp.c b/src/src/transports/smtp.c index ef2650a3e..c64885531 100644 --- a/src/src/transports/smtp.c +++ b/src/src/transports/smtp.c @@ -574,7 +574,7 @@ if (*errno_value == ERRNO_WRITEINCOMPLETE) /* Handle lack of advertised SMTPUTF8, for international message */ if (*errno_value == ERRNO_UTF8_FWD) { - *message = US string_sprintf("utf8 support required for forwarding"); + *message = US string_sprintf("utf8 support required but not offerred for forwarding"); DEBUG(D_deliver|D_transport) debug_printf("%s\n", *message); return TRUE; } diff --git a/src/src/verify.c b/src/src/verify.c index 678ee6315..e39b55db8 100644 --- a/src/src/verify.c +++ b/src/src/verify.c @@ -920,6 +920,25 @@ can do it there for the non-rcpt-verify case. For this we keep an addresscount. } } +#ifdef EXPERIMENTAL_INTERNATIONAL + else if ( addr->p.utf8 + && !( esmtp + && ( regex_UTF8 + || ( (regex_UTF8 = regex_must_compile( + US"\\n250[\\s\\-]SMTPUTF8(\\s|\\n|$)", FALSE, TRUE)), + TRUE + ) ) + && pcre_exec(regex_UTF8, NULL, CS responsebuffer, + Ustrlen(responsebuffer), 0, PCRE_EOPT, NULL, 0) >= 0 + ) ) + { + HDEBUG(D_acl|D_v) debug_printf("utf8 required but not offered\n"); + errno = ERRNO_UTF8_FWD; + setflag(addr, af_verify_nsfail); + done = FALSE; + } +#endif + /* If we haven't authenticated, but are required to, give up. */ /* Try to AUTH */ @@ -937,7 +956,13 @@ can do it there for the non-rcpt-verify case. For this we keep an addresscount. ( (addr->auth_sndr = client_authenticated_sender), /* Send the MAIL command */ - (smtp_write_command(&outblock, FALSE, "MAIL FROM:<%s>%s\r\n", + (smtp_write_command(&outblock, FALSE, +#ifdef EXPERIMENTAL_INTERNATIONAL + addr->p.utf8 + ? "MAIL FROM:<%s>%s SMTPUTF8\r\n" + : +#endif + "MAIL FROM:<%s>%s\r\n", from_address, responsebuffer) >= 0) ) && @@ -1022,7 +1047,13 @@ can do it there for the non-rcpt-verify case. For this we keep an addresscount. smtp_read_response(&inblock, responsebuffer, sizeof(responsebuffer), '2', callout) && - smtp_write_command(&outblock, FALSE, "MAIL FROM:<%s>\r\n", + smtp_write_command(&outblock, FALSE, +#ifdef EXPERIMENTAL_INTERNATIONAL + addr->p.utf8 + ? "MAIL FROM:<%s> SMTPUTF8\r\n" + : +#endif + "MAIL FROM:<%s>\r\n", from_address) >= 0 && smtp_read_response(&inblock, responsebuffer, sizeof(responsebuffer), '2', callout); @@ -1146,6 +1177,21 @@ can do it there for the non-rcpt-verify case. For this we keep an addresscount. HDEBUG(D_verify) debug_printf("SMTP timeout\n"); send_quit = FALSE; } +#ifdef EXPERIMENTAL_INTERNATIONAL + else if (errno == ERRNO_UTF8_FWD) + { + extern int acl_where; /* src/acl.c */ + errno = 0; + addr->message = string_sprintf( + "response to \"%s\" from %s [%s] did not include SMTPUTF8", + big_buffer, host->name, host->address); + addr->user_message = acl_where == ACL_WHERE_RCPT + ? US"533 mailbox name not allowed" + : US"550 mailbox unavailable"; + yield = FAIL; + done = TRUE; + } +#endif else if (errno == 0) { if (*responsebuffer == 0) Ustrcpy(responsebuffer, US"connection dropped"); diff --git a/test/confs/4201 b/test/confs/4201 index aea468447..b34c7c1f9 100644 --- a/test/confs/4201 +++ b/test/confs/4201 @@ -2,6 +2,7 @@ # SMTPUTF8 handling OPTION = * +CONTROL = exim_path = EXIM_PATH host_lookup_order = bydns @@ -12,7 +13,7 @@ gecos_name = CALLER_NAME # ----- Main settings ----- -domainlist local_domains = test.ex +domainlist local_domains = test.ex : cname acl_smtp_rcpt = check_recipient acl_not_smtp = non_smtp @@ -32,20 +33,32 @@ smtputf8_advertise_hosts = OPTION begin acl -check_recipient: -.ifndef SERVER - accept domains = * -.endif +.ifdef SERVER + +check_recipient: accept hosts = : accept domains = +local_domains + local_parts = ^user.*\$ deny message = relay not permitted -.ifndef SERVER +.else + +sub: +.ifdef CONTROL + require CONTROL +.endif + accept + +check_recipient: + accept domains = * + acl = sub + non_smtp: accept senders = : control = queue_only accept + .endif # ----- Routers ----- diff --git a/test/log/4201 b/test/log/4201 index fcaaba1c2..6d8260be1 100644 --- a/test/log/4201 +++ b/test/log/4201 @@ -15,7 +15,7 @@ 1999-03-02 09:44:33 End queue run: pid=pppp -qqff 1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225 1999-03-02 09:44:33 10HmbB-0005vi-00 <= यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local U=CALLER P=utf8local-esmtp S=sss for userz@test.ex -1999-03-02 09:44:33 10HmbB-0005vi-00 ** userz@test.ex F=<यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local> R=rmt T=rmt_smtp H=127.0.0.1 [127.0.0.1]: utf8 support required for forwarding +1999-03-02 09:44:33 10HmbB-0005vi-00 ** userz@test.ex F=<यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local> R=rmt T=rmt_smtp H=127.0.0.1 [127.0.0.1]: utf8 support required but not offerred for forwarding 1999-03-02 09:44:33 10HmbC-0005vi-00 <= <> R=10HmbB-0005vi-00 U=EXIMUSER P=local S=sss for यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local 1999-03-02 09:44:33 10HmbC-0005vi-00 no immediate delivery: queued by ACL 1999-03-02 09:44:33 10HmbB-0005vi-00 Completed @@ -23,3 +23,22 @@ 1999-03-02 09:44:33 10HmbC-0005vi-00 => TESTSUITE/test-mail/यहलोगहिन्दीक्योंनहींबोलसकतेहैं <यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local> F=<> R=bounces T=local_delivery 1999-03-02 09:44:33 10HmbC-0005vi-00 Completed 1999-03-02 09:44:33 End queue run: pid=pppp -qfl +1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225 +1999-03-02 09:44:33 10HmbD-0005vi-00 <= 세계의모든사람들이한국어를이해한다면얼마나좋을까@russian.почемужеонинеговорятпорусски.com U=CALLER P=utf8local-esmtp S=sss for userQ@test.ex +1999-03-02 09:44:33 10HmbE-0005vi-00 <= 세계의모든사람들이한국어를이해한다면얼마나좋을까@russian.почемужеонинеговорятпорусски.com H=localhost (the.local.host.name) [127.0.0.1] P=utf8esmtp S=sss id=E10HmbD-0005vi-00@the.local.host.name for userQ@test.ex +1999-03-02 09:44:33 10HmbD-0005vi-00 => userq@test.ex F=<세계의모든사람들이한국어를이해한다면얼마나좋을까@russian.почемужеонинеговорятпорусски.com> R=rmt T=rmt_smtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbE-0005vi-00" +1999-03-02 09:44:33 10HmbD-0005vi-00 Completed +1999-03-02 09:44:33 H=localhost (the.local.host.name) [127.0.0.1] F=<> rejected RCPT : relay not permitted +1999-03-02 09:44:33 10HmbF-0005vi-00 <= 세계의모든사람들이한국어를이해한다면얼마나좋을까@russian.почемужеонинеговорятпорусски.com U=CALLER P=utf8local-esmtp S=sss for userR@test.ex +1999-03-02 09:44:33 10HmbG-0005vi-00 <= 세계의모든사람들이한국어를이해한다면얼마나좋을까@russian.почемужеонинеговорятпорусски.com H=localhost (the.local.host.name) [127.0.0.1] P=utf8esmtp S=sss id=E10HmbF-0005vi-00@the.local.host.name for userR@test.ex +1999-03-02 09:44:33 10HmbF-0005vi-00 => userr@test.ex F=<세계의모든사람들이한국어를이해한다면얼마나좋을까@russian.почемужеонинеговорятпорусски.com> R=rmt T=rmt_smtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbG-0005vi-00" +1999-03-02 09:44:33 10HmbF-0005vi-00 Completed +1999-03-02 09:44:33 Start queue run: pid=pppp -qqff +1999-03-02 09:44:33 10HmbE-0005vi-00 => :blackhole: R=localuser +1999-03-02 09:44:33 10HmbE-0005vi-00 Completed +1999-03-02 09:44:33 10HmbG-0005vi-00 => :blackhole: R=localuser +1999-03-02 09:44:33 10HmbG-0005vi-00 Completed +1999-03-02 09:44:33 End queue run: pid=pppp -qqff +1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225 +1999-03-02 09:44:33 U=CALLER F= rejected RCPT : response to "EHLO the.local.host.name" from 127.0.0.1 [127.0.0.1] did not include SMTPUTF8 +1999-03-02 09:44:33 U=CALLER F= rejected RCPT : response to "EHLO the.local.host.name" from 127.0.0.1 [127.0.0.1] did not include SMTPUTF8 diff --git a/test/rejectlog/4201 b/test/rejectlog/4201 new file mode 100644 index 000000000..efd8f1576 --- /dev/null +++ b/test/rejectlog/4201 @@ -0,0 +1,3 @@ +1999-03-02 09:44:33 H=localhost (the.local.host.name) [127.0.0.1] F=<> rejected RCPT : relay not permitted +1999-03-02 09:44:33 U=CALLER F= rejected RCPT : response to "EHLO the.local.host.name" from 127.0.0.1 [127.0.0.1] did not include SMTPUTF8 +1999-03-02 09:44:33 U=CALLER F= rejected RCPT : response to "EHLO the.local.host.name" from 127.0.0.1 [127.0.0.1] did not include SMTPUTF8 diff --git a/test/runtest b/test/runtest index 43ae1d42f..4a4427839 100755 --- a/test/runtest +++ b/test/runtest @@ -413,6 +413,7 @@ RESET_AFTER_EXTRA_LINE_READ: # Random local part in callout cache testing s/myhost.test.ex-\d+-testing/myhost.test.ex-dddddddd-testing/; + s/the.local.host.name-\d+-testing/the.local.host.name-dddddddd-testing/; # File descriptor numbers may vary s/^writing data block fd=\d+/writing data block fd=dddd/; diff --git a/test/scripts/4200-International/4201 b/test/scripts/4200-International/4201 index d2fb96cdf..a697764f5 100644 --- a/test/scripts/4200-International/4201 +++ b/test/scripts/4200-International/4201 @@ -73,7 +73,6 @@ QUIT # # killdaemon -sleep 1 exim -DSERVER=server -qqff **** # @@ -100,3 +99,65 @@ killdaemon # exim -qfl **** +# +# +# +# +# +exim -DSERVER=server -bd -oX PORT_D +**** +# +# Recipient verify callout, pass +exim -bs -odi -DCONTROL="verify=recipient/callout" +EHLO client.bh +MAIL FROM: <세계의모든사람들이한국어를이해한다면얼마나좋을까@russian.почемужеонинеговорятпорусски.com> SMTPUTF8 +RCPT TO: +DATA +Subject: test + +body +. +QUIT +**** +# Recipient+random verify callout, pass +exim -bs -odi -DCONTROL="verify=recipient/callout=random" +EHLO client.bh +MAIL FROM: <세계의모든사람들이한국어를이해한다면얼마나좋을까@russian.почемужеонинеговорятпорусски.com> SMTPUTF8 +RCPT TO: +DATA +Subject: test + +body +. +QUIT +**** +# +killdaemon +exim -DSERVER=server -qqff +**** +# +# +# +# +# +exim -DSERVER=server -DOPTION="" -bd -oX PORT_D +**** +# +# Recipient verify callout, fail +exim -bs -odi -DCONTROL="verify=recipient/callout" +EHLO client.ffail +MAIL FROM: SMTPUTF8 +RCPT TO: +QUIT +**** +# +# Recipient+random verify callout, fail +exim -bs -odi -DCONTROL="verify=recipient/callout=random" +EHLO client.ffail +MAIL FROM: SMTPUTF8 +RCPT TO: +QUIT +**** +# +killdaemon +# diff --git a/test/stdout/4201 b/test/stdout/4201 index e5f488632..937824322 100644 --- a/test/stdout/4201 +++ b/test/stdout/4201 @@ -92,3 +92,47 @@ End of script 354 Enter message, ending with "." on a line by itself 250 OK id=10HmbB-0005vi-00 221 the.local.host.name closing connection +220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +250-the.local.host.name Hello CALLER at client.bh +250-SIZE 52428800 +250-8BITMIME +250-PIPELINING +250-SMTPUTF8 +250 HELP +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbD-0005vi-00 +221 the.local.host.name closing connection +220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +250-the.local.host.name Hello CALLER at client.bh +250-SIZE 52428800 +250-8BITMIME +250-PIPELINING +250-SMTPUTF8 +250 HELP +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbF-0005vi-00 +221 the.local.host.name closing connection +220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +250-the.local.host.name Hello CALLER at client.ffail +250-SIZE 52428800 +250-8BITMIME +250-PIPELINING +250-SMTPUTF8 +250 HELP +250 OK +533 mailbox name not allowed +221 the.local.host.name closing connection +220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +250-the.local.host.name Hello CALLER at client.ffail +250-SIZE 52428800 +250-8BITMIME +250-PIPELINING +250-SMTPUTF8 +250 HELP +250 OK +533 mailbox name not allowed +221 the.local.host.name closing connection -- cgit v1.2.3 From 8ecb706aed8a3946654fc4419bfd6a3e93e5438b Mon Sep 17 00:00:00 2001 From: Jeremy Harris Date: Sun, 12 Apr 2015 15:18:51 +0100 Subject: tls --- test/confs/4211 | 126 +++++++++++ test/confs/4221 | 126 +++++++++++ test/log/4211 | 74 +++++++ test/log/4221 | 74 +++++++ ...40\245\207\340\244\271\340\245\210\340\244\202" | 59 +++++ ...40\245\207\340\244\271\340\245\210\340\244\202" | 59 +++++ test/rejectlog/4211 | 8 + test/rejectlog/4221 | 8 + test/scripts/4210-GnuTLS-International/4211 | 246 +++++++++++++++++++++ test/scripts/4210-GnuTLS-International/REQUIRES | 2 + test/scripts/4220-OpenSSL-International/4221 | 245 ++++++++++++++++++++ test/scripts/4220-OpenSSL-International/REQUIRES | 2 + test/stdout/4211 | 223 +++++++++++++++++++ test/stdout/4221 | 223 +++++++++++++++++++ 14 files changed, 1475 insertions(+) create mode 100644 test/confs/4211 create mode 100644 test/confs/4221 create mode 100644 test/log/4211 create mode 100644 test/log/4221 create mode 100644 "test/mail/4211.\340\244\257\340\244\271\340\244\262\340\245\213\340\244\227\340\244\271\340\244\277\340\244\250\340\245\215\340\244\246\340\245\200\340\244\225\340\245\215\340\244\257\340\245\213\340\244\202\340\244\250\340\244\271\340\245\200\340\244\202\340\244\254\340\245\213\340\244\262\340\244\270\340\244\225\340\244\244\340\245\207\340\244\271\340\245\210\340\244\202" create mode 100644 "test/mail/4221.\340\244\257\340\244\271\340\244\262\340\245\213\340\244\227\340\244\271\340\244\277\340\244\250\340\245\215\340\244\246\340\245\200\340\244\225\340\245\215\340\244\257\340\245\213\340\244\202\340\244\250\340\244\271\340\245\200\340\244\202\340\244\254\340\245\213\340\244\262\340\244\270\340\244\225\340\244\244\340\245\207\340\244\271\340\245\210\340\244\202" create mode 100644 test/rejectlog/4211 create mode 100644 test/rejectlog/4221 create mode 100644 test/scripts/4210-GnuTLS-International/4211 create mode 100644 test/scripts/4210-GnuTLS-International/REQUIRES create mode 100644 test/scripts/4220-OpenSSL-International/4221 create mode 100644 test/scripts/4220-OpenSSL-International/REQUIRES create mode 100644 test/stdout/4211 create mode 100644 test/stdout/4221 (limited to 'test/confs') diff --git a/test/confs/4211 b/test/confs/4211 new file mode 100644 index 000000000..085fecc72 --- /dev/null +++ b/test/confs/4211 @@ -0,0 +1,126 @@ +# Exim test configuration 4201 +# SMTPUTF8 handling + +OPTION = * +CONTROL = + +exim_path = EXIM_PATH +host_lookup_order = bydns +spool_directory = DIR/spool +log_file_path = DIR/spool/log/%slog +gecos_pattern = "" +gecos_name = CALLER_NAME + +# ----- Main settings ----- + +domainlist local_domains = test.ex : cname + +acl_smtp_rcpt = check_recipient +acl_not_smtp = non_smtp + +trusted_users = CALLER +log_selector = +received_recipients +sender_on_delivery + +.ifdef SERVER +queue_only +queue_run_in_order +.endif + +tls_certificate = ${if eq {SERVER}{server}{DIR/aux-fixed/cert1}fail} +tls_privatekey = ${if eq {SERVER}{server}{DIR/aux-fixed/cert1}fail} +tls_advertise_hosts = * + +smtputf8_advertise_hosts = OPTION + + +# ----- ACL ----- + +begin acl + + +.ifdef SERVER + +check_recipient: + accept hosts = : + accept domains = +local_domains + local_parts = ^user.*\$ + deny message = relay not permitted + +.else + +sub: +.ifdef CONTROL + require CONTROL +.endif + accept + +check_recipient: + accept domains = * + acl = sub + +non_smtp: + accept senders = : + control = queue_only + accept + +.endif + +# ----- Routers ----- + +begin routers + +.ifdef SERVER + +fail_remote_domains: + driver = redirect + domains = ! +local_domains + data = :fail: unrouteable mail domain "$domain" + +bounces: + driver = redirect + condition = ${if eq {} {$sender_address}} + data = DIR/test-mail/$local_part + file_transport = local_delivery + +localuser: + driver = redirect + data = :blackhole: + +.else + +bounces: + driver = redirect + domains = *.local + data = DIR/test-mail/$local_part + file_transport = local_delivery + +rmt: + driver = manualroute + domains = +local_domains + route_data = <;[127.0.0.1]:PORT_D + transport = rmt_smtp + self = send + +.endif + +# ----- Transports ----- + +begin transports + +local_delivery: + driver = appendfile + user = CALLER + delivery_date_add + envelope_to_add + file = DIR/test-mail/$local_part + headers_add = "X-body-linecount: $body_linecount\n\ + X-message-linecount: $message_linecount\n\ + X-received-count: $received_count" + return_path_add + +rmt_smtp: + driver = smtp + hosts_require_tls = * + tls_try_verify_hosts = : + +# End diff --git a/test/confs/4221 b/test/confs/4221 new file mode 100644 index 000000000..085fecc72 --- /dev/null +++ b/test/confs/4221 @@ -0,0 +1,126 @@ +# Exim test configuration 4201 +# SMTPUTF8 handling + +OPTION = * +CONTROL = + +exim_path = EXIM_PATH +host_lookup_order = bydns +spool_directory = DIR/spool +log_file_path = DIR/spool/log/%slog +gecos_pattern = "" +gecos_name = CALLER_NAME + +# ----- Main settings ----- + +domainlist local_domains = test.ex : cname + +acl_smtp_rcpt = check_recipient +acl_not_smtp = non_smtp + +trusted_users = CALLER +log_selector = +received_recipients +sender_on_delivery + +.ifdef SERVER +queue_only +queue_run_in_order +.endif + +tls_certificate = ${if eq {SERVER}{server}{DIR/aux-fixed/cert1}fail} +tls_privatekey = ${if eq {SERVER}{server}{DIR/aux-fixed/cert1}fail} +tls_advertise_hosts = * + +smtputf8_advertise_hosts = OPTION + + +# ----- ACL ----- + +begin acl + + +.ifdef SERVER + +check_recipient: + accept hosts = : + accept domains = +local_domains + local_parts = ^user.*\$ + deny message = relay not permitted + +.else + +sub: +.ifdef CONTROL + require CONTROL +.endif + accept + +check_recipient: + accept domains = * + acl = sub + +non_smtp: + accept senders = : + control = queue_only + accept + +.endif + +# ----- Routers ----- + +begin routers + +.ifdef SERVER + +fail_remote_domains: + driver = redirect + domains = ! +local_domains + data = :fail: unrouteable mail domain "$domain" + +bounces: + driver = redirect + condition = ${if eq {} {$sender_address}} + data = DIR/test-mail/$local_part + file_transport = local_delivery + +localuser: + driver = redirect + data = :blackhole: + +.else + +bounces: + driver = redirect + domains = *.local + data = DIR/test-mail/$local_part + file_transport = local_delivery + +rmt: + driver = manualroute + domains = +local_domains + route_data = <;[127.0.0.1]:PORT_D + transport = rmt_smtp + self = send + +.endif + +# ----- Transports ----- + +begin transports + +local_delivery: + driver = appendfile + user = CALLER + delivery_date_add + envelope_to_add + file = DIR/test-mail/$local_part + headers_add = "X-body-linecount: $body_linecount\n\ + X-message-linecount: $message_linecount\n\ + X-received-count: $received_count" + return_path_add + +rmt_smtp: + driver = smtp + hosts_require_tls = * + tls_try_verify_hosts = : + +# End diff --git a/test/log/4211 b/test/log/4211 new file mode 100644 index 000000000..345337583 --- /dev/null +++ b/test/log/4211 @@ -0,0 +1,74 @@ +1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225 +1999-03-02 09:44:33 10HmaX-0005vi-00 <= someone@some.domain H=(client) [127.0.0.1] P=utf8esmtp S=sss for userx@test.ex +1999-03-02 09:44:33 10HmaY-0005vi-00 <= ليهمابتكلموشعربي؟@czech.Pročprostěnemluvíčesky.com H=(client) [127.0.0.1] P=utf8esmtp S=sss for userx@test.ex +1999-03-02 09:44:33 10HmaZ-0005vi-00 <= 他们为什么不说中文@hebrew.למההםפשוטלאמדבריםעברית.com U=CALLER P=utf8local-esmtp S=sss for usery@test.ex +1999-03-02 09:44:33 10HmbA-0005vi-00 <= 他们为什么不说中文@hebrew.למההםפשוטלאמדבריםעברית.com H=localhost (the.local.host.name) [127.0.0.1] P=utf8esmtps X=TLS1.x:xxxxRSA_AES_256_CBC_SHAnnn:256 CV=no S=sss id=E10HmaZ-0005vi-00@the.local.host.name for usery@test.ex +1999-03-02 09:44:33 10HmaZ-0005vi-00 => usery@test.ex F=<他们为什么不说中文@hebrew.למההםפשוטלאמדבריםעברית.com> R=rmt T=rmt_smtp H=127.0.0.1 [127.0.0.1] X=TLS1.x:xxxxRSA_AES_256_CBC_SHAnnn:256 CV=no C="250 OK id=10HmbA-0005vi-00" +1999-03-02 09:44:33 10HmaZ-0005vi-00 Completed +1999-03-02 09:44:33 Start queue run: pid=pppp -qqff +1999-03-02 09:44:33 10HmaX-0005vi-00 => :blackhole: R=localuser +1999-03-02 09:44:33 10HmaX-0005vi-00 Completed +1999-03-02 09:44:33 10HmaY-0005vi-00 => :blackhole: R=localuser +1999-03-02 09:44:33 10HmaY-0005vi-00 Completed +1999-03-02 09:44:33 10HmbA-0005vi-00 => :blackhole: R=localuser +1999-03-02 09:44:33 10HmbA-0005vi-00 Completed +1999-03-02 09:44:33 End queue run: pid=pppp -qqff +1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225 +1999-03-02 09:44:33 10HmbB-0005vi-00 <= यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local U=CALLER P=utf8local-esmtp S=sss for userz@test.ex +1999-03-02 09:44:33 10HmbB-0005vi-00 ** userz@test.ex F=<यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local> R=rmt T=rmt_smtp H=127.0.0.1 [127.0.0.1] X=TLS1.x:xxxxRSA_AES_256_CBC_SHAnnn:256 CV=no: utf8 support required but not offered for forwarding +1999-03-02 09:44:33 10HmbC-0005vi-00 <= <> R=10HmbB-0005vi-00 U=EXIMUSER P=local S=sss for यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local +1999-03-02 09:44:33 10HmbC-0005vi-00 no immediate delivery: queued by ACL +1999-03-02 09:44:33 10HmbB-0005vi-00 Completed +1999-03-02 09:44:33 Start queue run: pid=pppp -qfl +1999-03-02 09:44:33 10HmbC-0005vi-00 => TESTSUITE/test-mail/यहलोगहिन्दीक्योंनहींबोलसकतेहैं <यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local> F=<> R=bounces T=local_delivery +1999-03-02 09:44:33 10HmbC-0005vi-00 Completed +1999-03-02 09:44:33 End queue run: pid=pppp -qfl +1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225 +1999-03-02 09:44:33 10HmbD-0005vi-00 <= 세계의모든사람들이한국어를이해한다면얼마나좋을까@russian.почемужеонинеговорятпорусски.com U=CALLER P=utf8local-esmtp S=sss for userQ@test.ex +1999-03-02 09:44:33 10HmbE-0005vi-00 <= 세계의모든사람들이한국어를이해한다면얼마나좋을까@russian.почемужеонинеговорятпорусски.com H=localhost (the.local.host.name) [127.0.0.1] P=utf8esmtps X=TLS1.x:xxxxRSA_AES_256_CBC_SHAnnn:256 CV=no S=sss id=E10HmbD-0005vi-00@the.local.host.name for userQ@test.ex +1999-03-02 09:44:33 10HmbD-0005vi-00 => userq@test.ex F=<세계의모든사람들이한국어를이해한다면얼마나좋을까@russian.почемужеонинеговорятпорусски.com> R=rmt T=rmt_smtp H=127.0.0.1 [127.0.0.1] X=TLS1.x:xxxxRSA_AES_256_CBC_SHAnnn:256 CV=no C="250 OK id=10HmbE-0005vi-00" +1999-03-02 09:44:33 10HmbD-0005vi-00 Completed +1999-03-02 09:44:33 H=localhost (the.local.host.name) [127.0.0.1] X=TLS1.x:xxxxRSA_AES_256_CBC_SHAnnn:256 CV=no F=<> rejected RCPT : relay not permitted +1999-03-02 09:44:33 10HmbF-0005vi-00 <= 세계의모든사람들이한국어를이해한다면얼마나좋을까@russian.почемужеонинеговорятпорусски.com U=CALLER P=utf8local-esmtp S=sss for userR@test.ex +1999-03-02 09:44:33 10HmbG-0005vi-00 <= 세계의모든사람들이한국어를이해한다면얼마나좋을까@russian.почемужеонинеговорятпорусски.com H=localhost (the.local.host.name) [127.0.0.1] P=utf8esmtps X=TLS1.x:xxxxRSA_AES_256_CBC_SHAnnn:256 CV=no S=sss id=E10HmbF-0005vi-00@the.local.host.name for userR@test.ex +1999-03-02 09:44:33 10HmbF-0005vi-00 => userr@test.ex F=<세계의모든사람들이한국어를이해한다면얼마나좋을까@russian.почемужеонинеговорятпорусски.com> R=rmt T=rmt_smtp H=127.0.0.1 [127.0.0.1] X=TLS1.x:xxxxRSA_AES_256_CBC_SHAnnn:256 CV=no C="250 OK id=10HmbG-0005vi-00" +1999-03-02 09:44:33 10HmbF-0005vi-00 Completed +1999-03-02 09:44:33 Start queue run: pid=pppp -qqff +1999-03-02 09:44:33 10HmbE-0005vi-00 => :blackhole: R=localuser +1999-03-02 09:44:33 10HmbE-0005vi-00 Completed +1999-03-02 09:44:33 10HmbG-0005vi-00 => :blackhole: R=localuser +1999-03-02 09:44:33 10HmbG-0005vi-00 Completed +1999-03-02 09:44:33 End queue run: pid=pppp -qqff +1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225 +1999-03-02 09:44:33 U=CALLER F= rejected RCPT : response to "EHLO the.local.host.name" from 127.0.0.1 [127.0.0.1] did not include SMTPUTF8 +1999-03-02 09:44:33 U=CALLER F= rejected RCPT : response to "EHLO the.local.host.name" from 127.0.0.1 [127.0.0.1] did not include SMTPUTF8 +1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225 +1999-03-02 09:44:33 10HmbH-0005vi-00 <= userU@test.ex U=CALLER P=utf8local-esmtp S=sss for user.γλυκύρριζα@test.ex +1999-03-02 09:44:33 10HmbI-0005vi-00 <= userU@test.ex H=localhost (the.local.host.name) [127.0.0.1] P=utf8esmtps X=TLS1.x:xxxxRSA_AES_256_CBC_SHAnnn:256 CV=no S=sss id=E10HmbH-0005vi-00@the.local.host.name for user.γλυκύρριζα@test.ex +1999-03-02 09:44:33 10HmbH-0005vi-00 => user.γλυκύρριζα@test.ex F= R=rmt T=rmt_smtp H=127.0.0.1 [127.0.0.1] X=TLS1.x:xxxxRSA_AES_256_CBC_SHAnnn:256 CV=no C="250 OK id=10HmbI-0005vi-00" +1999-03-02 09:44:33 10HmbH-0005vi-00 Completed +1999-03-02 09:44:33 Start queue run: pid=pppp -qqff +1999-03-02 09:44:33 10HmbI-0005vi-00 => :blackhole: R=localuser +1999-03-02 09:44:33 10HmbI-0005vi-00 Completed +1999-03-02 09:44:33 End queue run: pid=pppp -qqff +1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225 +1999-03-02 09:44:33 10HmbJ-0005vi-00 <= userV.වැල්_මී@test.ex U=CALLER P=utf8local-esmtp S=sss for user.அதிமதுரம்@test.ex +1999-03-02 09:44:33 10HmbK-0005vi-00 <= userV.වැල්_මී@test.ex H=localhost (the.local.host.name) [127.0.0.1] P=utf8esmtps X=TLS1.x:xxxxRSA_AES_256_CBC_SHAnnn:256 CV=no S=sss id=E10HmbJ-0005vi-00@the.local.host.name for user.அதிமதுரம்@test.ex +1999-03-02 09:44:33 10HmbJ-0005vi-00 => user.அதிமதுரம்@test.ex F= R=rmt T=rmt_smtp H=127.0.0.1 [127.0.0.1] X=TLS1.x:xxxxRSA_AES_256_CBC_SHAnnn:256 CV=no C="250 OK id=10HmbK-0005vi-00" +1999-03-02 09:44:33 10HmbJ-0005vi-00 Completed +1999-03-02 09:44:33 H=localhost (the.local.host.name) [127.0.0.1] X=TLS1.x:xxxxRSA_AES_256_CBC_SHAnnn:256 CV=no F=<> rejected RCPT : relay not permitted +1999-03-02 09:44:33 10HmbL-0005vi-00 <= userW@test.ex U=CALLER P=utf8local-esmtp S=sss for user.ഇരട്ടിമധുരം@test.ex +1999-03-02 09:44:33 10HmbM-0005vi-00 <= userW@test.ex H=localhost (the.local.host.name) [127.0.0.1] P=utf8esmtps X=TLS1.x:xxxxRSA_AES_256_CBC_SHAnnn:256 CV=no S=sss id=E10HmbL-0005vi-00@the.local.host.name for user.ഇരട്ടിമധുരം@test.ex +1999-03-02 09:44:33 10HmbL-0005vi-00 => user.ഇരട്ടിമധുരം@test.ex F= R=rmt T=rmt_smtp H=127.0.0.1 [127.0.0.1] X=TLS1.x:xxxxRSA_AES_256_CBC_SHAnnn:256 CV=no C="250 OK id=10HmbM-0005vi-00" +1999-03-02 09:44:33 10HmbL-0005vi-00 Completed +1999-03-02 09:44:33 Start queue run: pid=pppp -qqff +1999-03-02 09:44:33 10HmbK-0005vi-00 => :blackhole: R=localuser +1999-03-02 09:44:33 10HmbK-0005vi-00 Completed +1999-03-02 09:44:33 10HmbM-0005vi-00 => :blackhole: R=localuser +1999-03-02 09:44:33 10HmbM-0005vi-00 Completed +1999-03-02 09:44:33 End queue run: pid=pppp -qqff +1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225 +1999-03-02 09:44:33 U=CALLER sender verify fail for : response to "EHLO the.local.host.name" from 127.0.0.1 [127.0.0.1] did not include SMTPUTF8 +1999-03-02 09:44:33 U=CALLER F= rejected RCPT : Sender verify failed +1999-03-02 09:44:33 U=CALLER sender verify fail for : response to "EHLO the.local.host.name" from 127.0.0.1 [127.0.0.1] did not include SMTPUTF8 +1999-03-02 09:44:33 U=CALLER F= rejected RCPT : Sender verify failed diff --git a/test/log/4221 b/test/log/4221 new file mode 100644 index 000000000..ddbbe8c11 --- /dev/null +++ b/test/log/4221 @@ -0,0 +1,74 @@ +1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225 +1999-03-02 09:44:33 10HmaX-0005vi-00 <= someone@some.domain H=(client) [127.0.0.1] P=utf8esmtp S=sss for userx@test.ex +1999-03-02 09:44:33 10HmaY-0005vi-00 <= ليهمابتكلموشعربي؟@czech.Pročprostěnemluvíčesky.com H=(client) [127.0.0.1] P=utf8esmtp S=sss for userx@test.ex +1999-03-02 09:44:33 10HmaZ-0005vi-00 <= 他们为什么不说中文@hebrew.למההםפשוטלאמדבריםעברית.com U=CALLER P=utf8local-esmtp S=sss for usery@test.ex +1999-03-02 09:44:33 10HmbA-0005vi-00 <= 他们为什么不说中文@hebrew.למההםפשוטלאמדבריםעברית.com H=localhost (the.local.host.name) [127.0.0.1] P=utf8esmtps X=TLSv1:AES256-SHA:256 CV=no S=sss id=E10HmaZ-0005vi-00@the.local.host.name for usery@test.ex +1999-03-02 09:44:33 10HmaZ-0005vi-00 => usery@test.ex F=<他们为什么不说中文@hebrew.למההםפשוטלאמדבריםעברית.com> R=rmt T=rmt_smtp H=127.0.0.1 [127.0.0.1] X=TLSv1:AES256-SHA:256 CV=no C="250 OK id=10HmbA-0005vi-00" +1999-03-02 09:44:33 10HmaZ-0005vi-00 Completed +1999-03-02 09:44:33 Start queue run: pid=pppp -qqff +1999-03-02 09:44:33 10HmaX-0005vi-00 => :blackhole: R=localuser +1999-03-02 09:44:33 10HmaX-0005vi-00 Completed +1999-03-02 09:44:33 10HmaY-0005vi-00 => :blackhole: R=localuser +1999-03-02 09:44:33 10HmaY-0005vi-00 Completed +1999-03-02 09:44:33 10HmbA-0005vi-00 => :blackhole: R=localuser +1999-03-02 09:44:33 10HmbA-0005vi-00 Completed +1999-03-02 09:44:33 End queue run: pid=pppp -qqff +1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225 +1999-03-02 09:44:33 10HmbB-0005vi-00 <= यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local U=CALLER P=utf8local-esmtp S=sss for userz@test.ex +1999-03-02 09:44:33 10HmbB-0005vi-00 ** userz@test.ex F=<यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local> R=rmt T=rmt_smtp H=127.0.0.1 [127.0.0.1] X=TLSv1:AES256-SHA:256 CV=no: utf8 support required but not offered for forwarding +1999-03-02 09:44:33 10HmbC-0005vi-00 <= <> R=10HmbB-0005vi-00 U=EXIMUSER P=local S=sss for यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local +1999-03-02 09:44:33 10HmbC-0005vi-00 no immediate delivery: queued by ACL +1999-03-02 09:44:33 10HmbB-0005vi-00 Completed +1999-03-02 09:44:33 Start queue run: pid=pppp -qfl +1999-03-02 09:44:33 10HmbC-0005vi-00 => TESTSUITE/test-mail/यहलोगहिन्दीक्योंनहींबोलसकतेहैं <यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local> F=<> R=bounces T=local_delivery +1999-03-02 09:44:33 10HmbC-0005vi-00 Completed +1999-03-02 09:44:33 End queue run: pid=pppp -qfl +1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225 +1999-03-02 09:44:33 10HmbD-0005vi-00 <= 세계의모든사람들이한국어를이해한다면얼마나좋을까@russian.почемужеонинеговорятпорусски.com U=CALLER P=utf8local-esmtp S=sss for userQ@test.ex +1999-03-02 09:44:33 10HmbE-0005vi-00 <= 세계의모든사람들이한국어를이해한다면얼마나좋을까@russian.почемужеонинеговорятпорусски.com H=localhost (the.local.host.name) [127.0.0.1] P=utf8esmtps X=TLSv1:AES256-SHA:256 CV=no S=sss id=E10HmbD-0005vi-00@the.local.host.name for userQ@test.ex +1999-03-02 09:44:33 10HmbD-0005vi-00 => userq@test.ex F=<세계의모든사람들이한국어를이해한다면얼마나좋을까@russian.почемужеонинеговорятпорусски.com> R=rmt T=rmt_smtp H=127.0.0.1 [127.0.0.1] X=TLSv1:AES256-SHA:256 CV=no C="250 OK id=10HmbE-0005vi-00" +1999-03-02 09:44:33 10HmbD-0005vi-00 Completed +1999-03-02 09:44:33 H=localhost (the.local.host.name) [127.0.0.1] X=TLSv1:AES256-SHA:256 CV=no F=<> rejected RCPT : relay not permitted +1999-03-02 09:44:33 10HmbF-0005vi-00 <= 세계의모든사람들이한국어를이해한다면얼마나좋을까@russian.почемужеонинеговорятпорусски.com U=CALLER P=utf8local-esmtp S=sss for userR@test.ex +1999-03-02 09:44:33 10HmbG-0005vi-00 <= 세계의모든사람들이한국어를이해한다면얼마나좋을까@russian.почемужеонинеговорятпорусски.com H=localhost (the.local.host.name) [127.0.0.1] P=utf8esmtps X=TLSv1:AES256-SHA:256 CV=no S=sss id=E10HmbF-0005vi-00@the.local.host.name for userR@test.ex +1999-03-02 09:44:33 10HmbF-0005vi-00 => userr@test.ex F=<세계의모든사람들이한국어를이해한다면얼마나좋을까@russian.почемужеонинеговорятпорусски.com> R=rmt T=rmt_smtp H=127.0.0.1 [127.0.0.1] X=TLSv1:AES256-SHA:256 CV=no C="250 OK id=10HmbG-0005vi-00" +1999-03-02 09:44:33 10HmbF-0005vi-00 Completed +1999-03-02 09:44:33 Start queue run: pid=pppp -qqff +1999-03-02 09:44:33 10HmbE-0005vi-00 => :blackhole: R=localuser +1999-03-02 09:44:33 10HmbE-0005vi-00 Completed +1999-03-02 09:44:33 10HmbG-0005vi-00 => :blackhole: R=localuser +1999-03-02 09:44:33 10HmbG-0005vi-00 Completed +1999-03-02 09:44:33 End queue run: pid=pppp -qqff +1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225 +1999-03-02 09:44:33 U=CALLER F= rejected RCPT : response to "EHLO the.local.host.name" from 127.0.0.1 [127.0.0.1] did not include SMTPUTF8 +1999-03-02 09:44:33 U=CALLER F= rejected RCPT : response to "EHLO the.local.host.name" from 127.0.0.1 [127.0.0.1] did not include SMTPUTF8 +1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225 +1999-03-02 09:44:33 10HmbH-0005vi-00 <= userU@test.ex U=CALLER P=utf8local-esmtp S=sss for user.γλυκύρριζα@test.ex +1999-03-02 09:44:33 10HmbI-0005vi-00 <= userU@test.ex H=localhost (the.local.host.name) [127.0.0.1] P=utf8esmtps X=TLSv1:AES256-SHA:256 CV=no S=sss id=E10HmbH-0005vi-00@the.local.host.name for user.γλυκύρριζα@test.ex +1999-03-02 09:44:33 10HmbH-0005vi-00 => user.γλυκύρριζα@test.ex F= R=rmt T=rmt_smtp H=127.0.0.1 [127.0.0.1] X=TLSv1:AES256-SHA:256 CV=no C="250 OK id=10HmbI-0005vi-00" +1999-03-02 09:44:33 10HmbH-0005vi-00 Completed +1999-03-02 09:44:33 Start queue run: pid=pppp -qqff +1999-03-02 09:44:33 10HmbI-0005vi-00 => :blackhole: R=localuser +1999-03-02 09:44:33 10HmbI-0005vi-00 Completed +1999-03-02 09:44:33 End queue run: pid=pppp -qqff +1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225 +1999-03-02 09:44:33 10HmbJ-0005vi-00 <= userV.වැල්_මී@test.ex U=CALLER P=utf8local-esmtp S=sss for user.அதிமதுரம்@test.ex +1999-03-02 09:44:33 10HmbK-0005vi-00 <= userV.වැල්_මී@test.ex H=localhost (the.local.host.name) [127.0.0.1] P=utf8esmtps X=TLSv1:AES256-SHA:256 CV=no S=sss id=E10HmbJ-0005vi-00@the.local.host.name for user.அதிமதுரம்@test.ex +1999-03-02 09:44:33 10HmbJ-0005vi-00 => user.அதிமதுரம்@test.ex F= R=rmt T=rmt_smtp H=127.0.0.1 [127.0.0.1] X=TLSv1:AES256-SHA:256 CV=no C="250 OK id=10HmbK-0005vi-00" +1999-03-02 09:44:33 10HmbJ-0005vi-00 Completed +1999-03-02 09:44:33 H=localhost (the.local.host.name) [127.0.0.1] X=TLSv1:AES256-SHA:256 CV=no F=<> rejected RCPT : relay not permitted +1999-03-02 09:44:33 10HmbL-0005vi-00 <= userW@test.ex U=CALLER P=utf8local-esmtp S=sss for user.ഇരട്ടിമധുരം@test.ex +1999-03-02 09:44:33 10HmbM-0005vi-00 <= userW@test.ex H=localhost (the.local.host.name) [127.0.0.1] P=utf8esmtps X=TLSv1:AES256-SHA:256 CV=no S=sss id=E10HmbL-0005vi-00@the.local.host.name for user.ഇരട്ടിമധുരം@test.ex +1999-03-02 09:44:33 10HmbL-0005vi-00 => user.ഇരട്ടിമധുരം@test.ex F= R=rmt T=rmt_smtp H=127.0.0.1 [127.0.0.1] X=TLSv1:AES256-SHA:256 CV=no C="250 OK id=10HmbM-0005vi-00" +1999-03-02 09:44:33 10HmbL-0005vi-00 Completed +1999-03-02 09:44:33 Start queue run: pid=pppp -qqff +1999-03-02 09:44:33 10HmbK-0005vi-00 => :blackhole: R=localuser +1999-03-02 09:44:33 10HmbK-0005vi-00 Completed +1999-03-02 09:44:33 10HmbM-0005vi-00 => :blackhole: R=localuser +1999-03-02 09:44:33 10HmbM-0005vi-00 Completed +1999-03-02 09:44:33 End queue run: pid=pppp -qqff +1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225 +1999-03-02 09:44:33 U=CALLER sender verify fail for : response to "EHLO the.local.host.name" from 127.0.0.1 [127.0.0.1] did not include SMTPUTF8 +1999-03-02 09:44:33 U=CALLER F= rejected RCPT : Sender verify failed +1999-03-02 09:44:33 U=CALLER sender verify fail for : response to "EHLO the.local.host.name" from 127.0.0.1 [127.0.0.1] did not include SMTPUTF8 +1999-03-02 09:44:33 U=CALLER F= rejected RCPT : Sender verify failed diff --git "a/test/mail/4211.\340\244\257\340\244\271\340\244\262\340\245\213\340\244\227\340\244\271\340\244\277\340\244\250\340\245\215\340\244\246\340\245\200\340\244\225\340\245\215\340\244\257\340\245\213\340\244\202\340\244\250\340\244\271\340\245\200\340\244\202\340\244\254\340\245\213\340\244\262\340\244\270\340\244\225\340\244\244\340\245\207\340\244\271\340\245\210\340\244\202" "b/test/mail/4211.\340\244\257\340\244\271\340\244\262\340\245\213\340\244\227\340\244\271\340\244\277\340\244\250\340\245\215\340\244\246\340\245\200\340\244\225\340\245\215\340\244\257\340\245\213\340\244\202\340\244\250\340\244\271\340\245\200\340\244\202\340\244\254\340\245\213\340\244\262\340\244\270\340\244\225\340\244\244\340\245\207\340\244\271\340\245\210\340\244\202" new file mode 100644 index 000000000..cb2203570 --- /dev/null +++ "b/test/mail/4211.\340\244\257\340\244\271\340\244\262\340\245\213\340\244\227\340\244\271\340\244\277\340\244\250\340\245\215\340\244\246\340\245\200\340\244\225\340\245\215\340\244\257\340\245\213\340\244\202\340\244\250\340\244\271\340\245\200\340\244\202\340\244\254\340\245\213\340\244\262\340\244\270\340\244\225\340\244\244\340\245\207\340\244\271\340\245\210\340\244\202" @@ -0,0 +1,59 @@ +From MAILER-DAEMON Tue Mar 02 09:44:33 1999 +Return-path: <> +Envelope-to: यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local +Delivery-date: Tue, 2 Mar 1999 09:44:33 +0000 +Received: from EXIMUSER by the.local.host.name with local (Exim x.yz) + id 10HmbC-0005vi-00 + for यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local; Tue, 2 Mar 1999 09:44:33 +0000 +X-Failed-Recipients: userz@test.ex +Auto-Submitted: auto-replied +From: Mail Delivery System +To: यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local +Content-Type: multipart/report; report-type=delivery-status; boundary=NNNNNNNNNN-eximdsn-MMMMMMMMMM +MIME-Version: 1.0 +Subject: Mail delivery failed: returning message to sender +Message-Id: +Date: Tue, 2 Mar 1999 09:44:33 +0000 +X-body-linecount: 38 +X-message-linecount: 50 +X-received-count: 1 + +--NNNNNNNNNN-eximdsn-MMMMMMMMMM +Content-type: text/plain; charset=us-ascii + +This message was created automatically by mail delivery software. + +A message that you sent could not be delivered to one or more of its +recipients. This is a permanent error. The following address(es) failed: + + userz@test.ex + host 127.0.0.1 [127.0.0.1] + +--NNNNNNNNNN-eximdsn-MMMMMMMMMM +Content-type: message/global-delivery-status + +Reporting-MTA: dns; the.local.host.name + +Action: failed +Final-Recipient: rfc822;userz@test.ex +Status: 5.0.0 +Remote-MTA: dns; 127.0.0.1 + +--NNNNNNNNNN-eximdsn-MMMMMMMMMM +Content-type: message/global + +Return-path: <यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local> +Received: from CALLER (helo=client.ffail) + by the.local.host.name with utf8local-esmtp (Exim x.yz) + (envelope-from <यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local>) + id 10HmbB-0005vi-00 + for userz@test.ex; Tue, 2 Mar 1999 09:44:33 +0000 +Subject: test +Message-Id: +From: यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local +Date: Tue, 2 Mar 1999 09:44:33 +0000 + +body + +--NNNNNNNNNN-eximdsn-MMMMMMMMMM-- + diff --git "a/test/mail/4221.\340\244\257\340\244\271\340\244\262\340\245\213\340\244\227\340\244\271\340\244\277\340\244\250\340\245\215\340\244\246\340\245\200\340\244\225\340\245\215\340\244\257\340\245\213\340\244\202\340\244\250\340\244\271\340\245\200\340\244\202\340\244\254\340\245\213\340\244\262\340\244\270\340\244\225\340\244\244\340\245\207\340\244\271\340\245\210\340\244\202" "b/test/mail/4221.\340\244\257\340\244\271\340\244\262\340\245\213\340\244\227\340\244\271\340\244\277\340\244\250\340\245\215\340\244\246\340\245\200\340\244\225\340\245\215\340\244\257\340\245\213\340\244\202\340\244\250\340\244\271\340\245\200\340\244\202\340\244\254\340\245\213\340\244\262\340\244\270\340\244\225\340\244\244\340\245\207\340\244\271\340\245\210\340\244\202" new file mode 100644 index 000000000..cb2203570 --- /dev/null +++ "b/test/mail/4221.\340\244\257\340\244\271\340\244\262\340\245\213\340\244\227\340\244\271\340\244\277\340\244\250\340\245\215\340\244\246\340\245\200\340\244\225\340\245\215\340\244\257\340\245\213\340\244\202\340\244\250\340\244\271\340\245\200\340\244\202\340\244\254\340\245\213\340\244\262\340\244\270\340\244\225\340\244\244\340\245\207\340\244\271\340\245\210\340\244\202" @@ -0,0 +1,59 @@ +From MAILER-DAEMON Tue Mar 02 09:44:33 1999 +Return-path: <> +Envelope-to: यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local +Delivery-date: Tue, 2 Mar 1999 09:44:33 +0000 +Received: from EXIMUSER by the.local.host.name with local (Exim x.yz) + id 10HmbC-0005vi-00 + for यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local; Tue, 2 Mar 1999 09:44:33 +0000 +X-Failed-Recipients: userz@test.ex +Auto-Submitted: auto-replied +From: Mail Delivery System +To: यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local +Content-Type: multipart/report; report-type=delivery-status; boundary=NNNNNNNNNN-eximdsn-MMMMMMMMMM +MIME-Version: 1.0 +Subject: Mail delivery failed: returning message to sender +Message-Id: +Date: Tue, 2 Mar 1999 09:44:33 +0000 +X-body-linecount: 38 +X-message-linecount: 50 +X-received-count: 1 + +--NNNNNNNNNN-eximdsn-MMMMMMMMMM +Content-type: text/plain; charset=us-ascii + +This message was created automatically by mail delivery software. + +A message that you sent could not be delivered to one or more of its +recipients. This is a permanent error. The following address(es) failed: + + userz@test.ex + host 127.0.0.1 [127.0.0.1] + +--NNNNNNNNNN-eximdsn-MMMMMMMMMM +Content-type: message/global-delivery-status + +Reporting-MTA: dns; the.local.host.name + +Action: failed +Final-Recipient: rfc822;userz@test.ex +Status: 5.0.0 +Remote-MTA: dns; 127.0.0.1 + +--NNNNNNNNNN-eximdsn-MMMMMMMMMM +Content-type: message/global + +Return-path: <यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local> +Received: from CALLER (helo=client.ffail) + by the.local.host.name with utf8local-esmtp (Exim x.yz) + (envelope-from <यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local>) + id 10HmbB-0005vi-00 + for userz@test.ex; Tue, 2 Mar 1999 09:44:33 +0000 +Subject: test +Message-Id: +From: यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local +Date: Tue, 2 Mar 1999 09:44:33 +0000 + +body + +--NNNNNNNNNN-eximdsn-MMMMMMMMMM-- + diff --git a/test/rejectlog/4211 b/test/rejectlog/4211 new file mode 100644 index 000000000..90d7d73e1 --- /dev/null +++ b/test/rejectlog/4211 @@ -0,0 +1,8 @@ +1999-03-02 09:44:33 H=localhost (the.local.host.name) [127.0.0.1] X=TLS1.x:xxxxRSA_AES_256_CBC_SHAnnn:256 CV=no F=<> rejected RCPT : relay not permitted +1999-03-02 09:44:33 U=CALLER F= rejected RCPT : response to "EHLO the.local.host.name" from 127.0.0.1 [127.0.0.1] did not include SMTPUTF8 +1999-03-02 09:44:33 U=CALLER F= rejected RCPT : response to "EHLO the.local.host.name" from 127.0.0.1 [127.0.0.1] did not include SMTPUTF8 +1999-03-02 09:44:33 H=localhost (the.local.host.name) [127.0.0.1] X=TLS1.x:xxxxRSA_AES_256_CBC_SHAnnn:256 CV=no F=<> rejected RCPT : relay not permitted +1999-03-02 09:44:33 U=CALLER sender verify fail for : response to "EHLO the.local.host.name" from 127.0.0.1 [127.0.0.1] did not include SMTPUTF8 +1999-03-02 09:44:33 U=CALLER F= rejected RCPT : Sender verify failed +1999-03-02 09:44:33 U=CALLER sender verify fail for : response to "EHLO the.local.host.name" from 127.0.0.1 [127.0.0.1] did not include SMTPUTF8 +1999-03-02 09:44:33 U=CALLER F= rejected RCPT : Sender verify failed diff --git a/test/rejectlog/4221 b/test/rejectlog/4221 new file mode 100644 index 000000000..067e530de --- /dev/null +++ b/test/rejectlog/4221 @@ -0,0 +1,8 @@ +1999-03-02 09:44:33 H=localhost (the.local.host.name) [127.0.0.1] X=TLSv1:AES256-SHA:256 CV=no F=<> rejected RCPT : relay not permitted +1999-03-02 09:44:33 U=CALLER F= rejected RCPT : response to "EHLO the.local.host.name" from 127.0.0.1 [127.0.0.1] did not include SMTPUTF8 +1999-03-02 09:44:33 U=CALLER F= rejected RCPT : response to "EHLO the.local.host.name" from 127.0.0.1 [127.0.0.1] did not include SMTPUTF8 +1999-03-02 09:44:33 H=localhost (the.local.host.name) [127.0.0.1] X=TLSv1:AES256-SHA:256 CV=no F=<> rejected RCPT : relay not permitted +1999-03-02 09:44:33 U=CALLER sender verify fail for : response to "EHLO the.local.host.name" from 127.0.0.1 [127.0.0.1] did not include SMTPUTF8 +1999-03-02 09:44:33 U=CALLER F= rejected RCPT : Sender verify failed +1999-03-02 09:44:33 U=CALLER sender verify fail for : response to "EHLO the.local.host.name" from 127.0.0.1 [127.0.0.1] did not include SMTPUTF8 +1999-03-02 09:44:33 U=CALLER F= rejected RCPT : Sender verify failed diff --git a/test/scripts/4210-GnuTLS-International/4211 b/test/scripts/4210-GnuTLS-International/4211 new file mode 100644 index 000000000..2e13f3f90 --- /dev/null +++ b/test/scripts/4210-GnuTLS-International/4211 @@ -0,0 +1,246 @@ +# Internationalised mail: smtp +# Exim test configuration 4200 +gnutls +# +exim -DSERVER=server -bd -oX PORT_D +**** +# +# +# Basic smtp input, no delivery +client 127.0.0.1 PORT_D +??? 220 +EHLO client +??? 250- +??? 250-SIZE +??? 250-8BITMIME +??? 250-PIPELINING +??? 250-STARTTLS +??? 250-SMTPUTF8 +??? 250 HELP +MAIL FROM: SMTPUTF8 +??? 250 +RCPT TO: +??? 250 +DATA +??? 354 +Subject: test + +body +. +??? 250 +QUIT +??? 221 +**** +# +# +# utf-8 from, Basic smtp input, no delivery +client 127.0.0.1 PORT_D +??? 220 +EHLO client +??? 250- +??? 250-SIZE +??? 250-8BITMIME +??? 250-PIPELINING +??? 250-STARTTLS +??? 250-SMTPUTF8 +??? 250 HELP +MAIL FROM: <ليهمابتكلموشعربي؟@czech.Pročprostěnemluvíčesky.com> SMTPUTF8 +??? 250 +RCPT TO: +??? 250 +DATA +??? 354 +Subject: test + +body +. +??? 250 +QUIT +??? 221 +**** +# +# +# utf-8 from, -bs input and forwarding +exim -bs -odi +EHLO client.bh +MAIL FROM: <他们为什么不说中文@hebrew.למההםפשוטלאמדבריםעברית.com> SMTPUTF8 +RCPT TO: +DATA +Subject: test + +body +. +QUIT +**** +# +# +# +killdaemon +exim -DSERVER=server -qqff +**** +# +# +exim -DSERVER=server -DOPTION="" -bd -oX PORT_D +**** +# +# forwarding fails when target does not support SMTPUTF8 +exim -bs -odi +EHLO client.ffail +MAIL FROM: <यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local> SMTPUTF8 +RCPT TO: +DATA +Subject: test + +body +. +QUIT +**** +# +# +# +killdaemon +# +exim -qfl +**** +# +# +# +# +# +exim -DSERVER=server -bd -oX PORT_D +**** +# +# Recipient verify callout, pass +exim -bs -odi -DCONTROL="verify=recipient/callout" +EHLO client.bh +MAIL FROM: <세계의모든사람들이한국어를이해한다면얼마나좋을까@russian.почемужеонинеговорятпорусски.com> SMTPUTF8 +RCPT TO: +DATA +Subject: test + +body +. +QUIT +**** +# Recipient+random verify callout, pass +exim -bs -odi -DCONTROL="verify=recipient/callout=random" +EHLO client.bh +MAIL FROM: <세계의모든사람들이한국어를이해한다면얼마나좋을까@russian.почемужеонинеговорятпорусски.com> SMTPUTF8 +RCPT TO: +DATA +Subject: test + +body +. +QUIT +**** +# +killdaemon +exim -DSERVER=server -qqff +**** +# +# +# +# +# +exim -DSERVER=server -DOPTION="" -bd -oX PORT_D +**** +# +# Recipient verify callout, fail +exim -bs -odi -DCONTROL="verify=recipient/callout" +EHLO client.ffail +MAIL FROM: SMTPUTF8 +RCPT TO: +QUIT +**** +# +# Recipient+random verify callout, fail +exim -bs -odi -DCONTROL="verify=recipient/callout=random" +EHLO client.ffail +MAIL FROM: SMTPUTF8 +RCPT TO: +QUIT +**** +# +killdaemon +# +# +# +# +# +# +# +exim -DSERVER=server -bd -oX PORT_D +**** +# +# utf-8 to, -bs input and forwarding +exim -bs -odi +EHLO client.bh +MAIL FROM: SMTPUTF8 +RCPT TO: +DATA +Subject: test + +body +. +QUIT +**** +# +killdaemon +exim -DSERVER=server -qqff +**** +# +# +exim -DSERVER=server -bd -oX PORT_D +**** +# +# sender verify callout, pass +exim -bs -odi -DCONTROL="verify=sender/callout" +EHLO client.bh +MAIL FROM: SMTPUTF8 +RCPT TO: +DATA +Subject: test + +body +. +QUIT +**** +# sender+random verify callout, pass +exim -bs -odi -DCONTROL="verify=sender/callout=random" +EHLO client.bh +MAIL FROM: SMTPUTF8 +RCPT TO: +DATA +Subject: test + +body +. +QUIT +**** +# +killdaemon +exim -DSERVER=server -qqff +**** +# +# +# +# +exim -DSERVER=server -DOPTION="" -bd -oX PORT_D +**** +# sender verify callout, fail +exim -bs -odi -DCONTROL="verify=sender/callout" +EHLO client.sfail +MAIL FROM: SMTPUTF8 +RCPT TO: +QUIT +**** +# sender+random verify callout, fail +exim -bs -odi -DCONTROL="verify=sender/callout=random" +EHLO client.sfail +MAIL FROM: SMTPUTF8 +RCPT TO: +QUIT +**** +# +killdaemon diff --git a/test/scripts/4210-GnuTLS-International/REQUIRES b/test/scripts/4210-GnuTLS-International/REQUIRES new file mode 100644 index 000000000..d75e95074 --- /dev/null +++ b/test/scripts/4210-GnuTLS-International/REQUIRES @@ -0,0 +1,2 @@ +support Experimental_International +support GnuTLS diff --git a/test/scripts/4220-OpenSSL-International/4221 b/test/scripts/4220-OpenSSL-International/4221 new file mode 100644 index 000000000..e06ecd339 --- /dev/null +++ b/test/scripts/4220-OpenSSL-International/4221 @@ -0,0 +1,245 @@ +# Internationalised mail: smtp +# Exim test configuration 4200 +# +exim -DSERVER=server -bd -oX PORT_D +**** +# +# +# Basic smtp input, no delivery +client 127.0.0.1 PORT_D +??? 220 +EHLO client +??? 250- +??? 250-SIZE +??? 250-8BITMIME +??? 250-PIPELINING +??? 250-STARTTLS +??? 250-SMTPUTF8 +??? 250 HELP +MAIL FROM: SMTPUTF8 +??? 250 +RCPT TO: +??? 250 +DATA +??? 354 +Subject: test + +body +. +??? 250 +QUIT +??? 221 +**** +# +# +# utf-8 from, Basic smtp input, no delivery +client 127.0.0.1 PORT_D +??? 220 +EHLO client +??? 250- +??? 250-SIZE +??? 250-8BITMIME +??? 250-PIPELINING +??? 250-STARTTLS +??? 250-SMTPUTF8 +??? 250 HELP +MAIL FROM: <ليهمابتكلموشعربي؟@czech.Pročprostěnemluvíčesky.com> SMTPUTF8 +??? 250 +RCPT TO: +??? 250 +DATA +??? 354 +Subject: test + +body +. +??? 250 +QUIT +??? 221 +**** +# +# +# utf-8 from, -bs input and forwarding +exim -bs -odi +EHLO client.bh +MAIL FROM: <他们为什么不说中文@hebrew.למההםפשוטלאמדבריםעברית.com> SMTPUTF8 +RCPT TO: +DATA +Subject: test + +body +. +QUIT +**** +# +# +# +killdaemon +exim -DSERVER=server -qqff +**** +# +# +exim -DSERVER=server -DOPTION="" -bd -oX PORT_D +**** +# +# forwarding fails when target does not support SMTPUTF8 +exim -bs -odi +EHLO client.ffail +MAIL FROM: <यहलोगहिन्दीक्योंनहींबोलसकतेहैं@japanese.なぜみんな日本語を話してくれないのか.local> SMTPUTF8 +RCPT TO: +DATA +Subject: test + +body +. +QUIT +**** +# +# +# +killdaemon +# +exim -qfl +**** +# +# +# +# +# +exim -DSERVER=server -bd -oX PORT_D +**** +# +# Recipient verify callout, pass +exim -bs -odi -DCONTROL="verify=recipient/callout" +EHLO client.bh +MAIL FROM: <세계의모든사람들이한국어를이해한다면얼마나좋을까@russian.почемужеонинеговорятпорусски.com> SMTPUTF8 +RCPT TO: +DATA +Subject: test + +body +. +QUIT +**** +# Recipient+random verify callout, pass +exim -bs -odi -DCONTROL="verify=recipient/callout=random" +EHLO client.bh +MAIL FROM: <세계의모든사람들이한국어를이해한다면얼마나좋을까@russian.почемужеонинеговорятпорусски.com> SMTPUTF8 +RCPT TO: +DATA +Subject: test + +body +. +QUIT +**** +# +killdaemon +exim -DSERVER=server -qqff +**** +# +# +# +# +# +exim -DSERVER=server -DOPTION="" -bd -oX PORT_D +**** +# +# Recipient verify callout, fail +exim -bs -odi -DCONTROL="verify=recipient/callout" +EHLO client.ffail +MAIL FROM: SMTPUTF8 +RCPT TO: +QUIT +**** +# +# Recipient+random verify callout, fail +exim -bs -odi -DCONTROL="verify=recipient/callout=random" +EHLO client.ffail +MAIL FROM: SMTPUTF8 +RCPT TO: +QUIT +**** +# +killdaemon +# +# +# +# +# +# +# +exim -DSERVER=server -bd -oX PORT_D +**** +# +# utf-8 to, -bs input and forwarding +exim -bs -odi +EHLO client.bh +MAIL FROM: SMTPUTF8 +RCPT TO: +DATA +Subject: test + +body +. +QUIT +**** +# +killdaemon +exim -DSERVER=server -qqff +**** +# +# +exim -DSERVER=server -bd -oX PORT_D +**** +# +# sender verify callout, pass +exim -bs -odi -DCONTROL="verify=sender/callout" +EHLO client.bh +MAIL FROM: SMTPUTF8 +RCPT TO: +DATA +Subject: test + +body +. +QUIT +**** +# sender+random verify callout, pass +exim -bs -odi -DCONTROL="verify=sender/callout=random" +EHLO client.bh +MAIL FROM: SMTPUTF8 +RCPT TO: +DATA +Subject: test + +body +. +QUIT +**** +# +killdaemon +exim -DSERVER=server -qqff +**** +# +# +# +# +exim -DSERVER=server -DOPTION="" -bd -oX PORT_D +**** +# sender verify callout, fail +exim -bs -odi -DCONTROL="verify=sender/callout" +EHLO client.sfail +MAIL FROM: SMTPUTF8 +RCPT TO: +QUIT +**** +# sender+random verify callout, fail +exim -bs -odi -DCONTROL="verify=sender/callout=random" +EHLO client.sfail +MAIL FROM: SMTPUTF8 +RCPT TO: +QUIT +**** +# +killdaemon diff --git a/test/scripts/4220-OpenSSL-International/REQUIRES b/test/scripts/4220-OpenSSL-International/REQUIRES new file mode 100644 index 000000000..74b249f4c --- /dev/null +++ b/test/scripts/4220-OpenSSL-International/REQUIRES @@ -0,0 +1,2 @@ +support Experimental_International +support OpenSSL diff --git a/test/stdout/4211 b/test/stdout/4211 new file mode 100644 index 000000000..18eec3215 --- /dev/null +++ b/test/stdout/4211 @@ -0,0 +1,223 @@ +Connecting to 127.0.0.1 port 1225 ... connected +??? 220 +<<< 220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +>>> EHLO client +??? 250- +<<< 250-the.local.host.name Hello client [127.0.0.1] +??? 250-SIZE +<<< 250-SIZE 52428800 +??? 250-8BITMIME +<<< 250-8BITMIME +??? 250-PIPELINING +<<< 250-PIPELINING +??? 250-STARTTLS +<<< 250-STARTTLS +??? 250-SMTPUTF8 +<<< 250-SMTPUTF8 +??? 250 HELP +<<< 250 HELP +>>> MAIL FROM: SMTPUTF8 +??? 250 +<<< 250 OK +>>> RCPT TO: +??? 250 +<<< 250 Accepted +>>> DATA +??? 354 +<<< 354 Enter message, ending with "." on a line by itself +>>> Subject: test +>>> +>>> body +>>> . +??? 250 +<<< 250 OK id=10HmaX-0005vi-00 +>>> QUIT +??? 221 +<<< 221 the.local.host.name closing connection +End of script +Connecting to 127.0.0.1 port 1225 ... connected +??? 220 +<<< 220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +>>> EHLO client +??? 250- +<<< 250-the.local.host.name Hello client [127.0.0.1] +??? 250-SIZE +<<< 250-SIZE 52428800 +??? 250-8BITMIME +<<< 250-8BITMIME +??? 250-PIPELINING +<<< 250-PIPELINING +??? 250-STARTTLS +<<< 250-STARTTLS +??? 250-SMTPUTF8 +<<< 250-SMTPUTF8 +??? 250 HELP +<<< 250 HELP +>>> MAIL FROM: <ليهمابتكلموشعربي؟@czech.Pročprostěnemluvíčesky.com> SMTPUTF8 +??? 250 +<<< 250 OK +>>> RCPT TO: +??? 250 +<<< 250 Accepted +>>> DATA +??? 354 +<<< 354 Enter message, ending with "." on a line by itself +>>> Subject: test +>>> +>>> body +>>> . +??? 250 +<<< 250 OK id=10HmaY-0005vi-00 +>>> QUIT +??? 221 +<<< 221 the.local.host.name closing connection +End of script +220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +250-the.local.host.name Hello CALLER at client.bh +250-SIZE 52428800 +250-8BITMIME +250-PIPELINING +250-STARTTLS +250-SMTPUTF8 +250 HELP +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmaZ-0005vi-00 +221 the.local.host.name closing connection +220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +250-the.local.host.name Hello CALLER at client.ffail +250-SIZE 52428800 +250-8BITMIME +250-PIPELINING +250-STARTTLS +250-SMTPUTF8 +250 HELP +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbB-0005vi-00 +221 the.local.host.name closing connection +220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +250-the.local.host.name Hello CALLER at client.bh +250-SIZE 52428800 +250-8BITMIME +250-PIPELINING +250-STARTTLS +250-SMTPUTF8 +250 HELP +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbD-0005vi-00 +221 the.local.host.name closing connection +220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +250-the.local.host.name Hello CALLER at client.bh +250-SIZE 52428800 +250-8BITMIME +250-PIPELINING +250-STARTTLS +250-SMTPUTF8 +250 HELP +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbF-0005vi-00 +221 the.local.host.name closing connection +220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +250-the.local.host.name Hello CALLER at client.ffail +250-SIZE 52428800 +250-8BITMIME +250-PIPELINING +250-STARTTLS +250-SMTPUTF8 +250 HELP +250 OK +533 mailbox name not allowed +221 the.local.host.name closing connection +220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +250-the.local.host.name Hello CALLER at client.ffail +250-SIZE 52428800 +250-8BITMIME +250-PIPELINING +250-STARTTLS +250-SMTPUTF8 +250 HELP +250 OK +533 mailbox name not allowed +221 the.local.host.name closing connection +220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +250-the.local.host.name Hello CALLER at client.bh +250-SIZE 52428800 +250-8BITMIME +250-PIPELINING +250-STARTTLS +250-SMTPUTF8 +250 HELP +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbH-0005vi-00 +221 the.local.host.name closing connection +220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +250-the.local.host.name Hello CALLER at client.bh +250-SIZE 52428800 +250-8BITMIME +250-PIPELINING +250-STARTTLS +250-SMTPUTF8 +250 HELP +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbJ-0005vi-00 +221 the.local.host.name closing connection +220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +250-the.local.host.name Hello CALLER at client.bh +250-SIZE 52428800 +250-8BITMIME +250-PIPELINING +250-STARTTLS +250-SMTPUTF8 +250 HELP +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbL-0005vi-00 +221 the.local.host.name closing connection +220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +250-the.local.host.name Hello CALLER at client.sfail +250-SIZE 52428800 +250-8BITMIME +250-PIPELINING +250-STARTTLS +250-SMTPUTF8 +250 HELP +250 OK +550-Callback setup failed while verifying +550-533 mailbox name not allowed +550-The initial connection, or a HELO or MAIL FROM:<> command was +550-rejected. Refusing MAIL FROM:<> does not help fight spam, disregards +550-RFC requirements, and stops you from receiving standard bounce +550-messages. This host does not accept mail from domains whose servers +550-refuse bounces. +550 Sender verify failed +221 the.local.host.name closing connection +220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +250-the.local.host.name Hello CALLER at client.sfail +250-SIZE 52428800 +250-8BITMIME +250-PIPELINING +250-STARTTLS +250-SMTPUTF8 +250 HELP +250 OK +550-Callback setup failed while verifying +550-533 mailbox name not allowed +550-The initial connection, or a HELO or MAIL FROM:<> command was +550-rejected. Refusing MAIL FROM:<> does not help fight spam, disregards +550-RFC requirements, and stops you from receiving standard bounce +550-messages. This host does not accept mail from domains whose servers +550-refuse bounces. +550 Sender verify failed +221 the.local.host.name closing connection diff --git a/test/stdout/4221 b/test/stdout/4221 new file mode 100644 index 000000000..18eec3215 --- /dev/null +++ b/test/stdout/4221 @@ -0,0 +1,223 @@ +Connecting to 127.0.0.1 port 1225 ... connected +??? 220 +<<< 220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +>>> EHLO client +??? 250- +<<< 250-the.local.host.name Hello client [127.0.0.1] +??? 250-SIZE +<<< 250-SIZE 52428800 +??? 250-8BITMIME +<<< 250-8BITMIME +??? 250-PIPELINING +<<< 250-PIPELINING +??? 250-STARTTLS +<<< 250-STARTTLS +??? 250-SMTPUTF8 +<<< 250-SMTPUTF8 +??? 250 HELP +<<< 250 HELP +>>> MAIL FROM: SMTPUTF8 +??? 250 +<<< 250 OK +>>> RCPT TO: +??? 250 +<<< 250 Accepted +>>> DATA +??? 354 +<<< 354 Enter message, ending with "." on a line by itself +>>> Subject: test +>>> +>>> body +>>> . +??? 250 +<<< 250 OK id=10HmaX-0005vi-00 +>>> QUIT +??? 221 +<<< 221 the.local.host.name closing connection +End of script +Connecting to 127.0.0.1 port 1225 ... connected +??? 220 +<<< 220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +>>> EHLO client +??? 250- +<<< 250-the.local.host.name Hello client [127.0.0.1] +??? 250-SIZE +<<< 250-SIZE 52428800 +??? 250-8BITMIME +<<< 250-8BITMIME +??? 250-PIPELINING +<<< 250-PIPELINING +??? 250-STARTTLS +<<< 250-STARTTLS +??? 250-SMTPUTF8 +<<< 250-SMTPUTF8 +??? 250 HELP +<<< 250 HELP +>>> MAIL FROM: <ليهمابتكلموشعربي؟@czech.Pročprostěnemluvíčesky.com> SMTPUTF8 +??? 250 +<<< 250 OK +>>> RCPT TO: +??? 250 +<<< 250 Accepted +>>> DATA +??? 354 +<<< 354 Enter message, ending with "." on a line by itself +>>> Subject: test +>>> +>>> body +>>> . +??? 250 +<<< 250 OK id=10HmaY-0005vi-00 +>>> QUIT +??? 221 +<<< 221 the.local.host.name closing connection +End of script +220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +250-the.local.host.name Hello CALLER at client.bh +250-SIZE 52428800 +250-8BITMIME +250-PIPELINING +250-STARTTLS +250-SMTPUTF8 +250 HELP +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmaZ-0005vi-00 +221 the.local.host.name closing connection +220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +250-the.local.host.name Hello CALLER at client.ffail +250-SIZE 52428800 +250-8BITMIME +250-PIPELINING +250-STARTTLS +250-SMTPUTF8 +250 HELP +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbB-0005vi-00 +221 the.local.host.name closing connection +220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +250-the.local.host.name Hello CALLER at client.bh +250-SIZE 52428800 +250-8BITMIME +250-PIPELINING +250-STARTTLS +250-SMTPUTF8 +250 HELP +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbD-0005vi-00 +221 the.local.host.name closing connection +220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +250-the.local.host.name Hello CALLER at client.bh +250-SIZE 52428800 +250-8BITMIME +250-PIPELINING +250-STARTTLS +250-SMTPUTF8 +250 HELP +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbF-0005vi-00 +221 the.local.host.name closing connection +220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +250-the.local.host.name Hello CALLER at client.ffail +250-SIZE 52428800 +250-8BITMIME +250-PIPELINING +250-STARTTLS +250-SMTPUTF8 +250 HELP +250 OK +533 mailbox name not allowed +221 the.local.host.name closing connection +220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +250-the.local.host.name Hello CALLER at client.ffail +250-SIZE 52428800 +250-8BITMIME +250-PIPELINING +250-STARTTLS +250-SMTPUTF8 +250 HELP +250 OK +533 mailbox name not allowed +221 the.local.host.name closing connection +220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +250-the.local.host.name Hello CALLER at client.bh +250-SIZE 52428800 +250-8BITMIME +250-PIPELINING +250-STARTTLS +250-SMTPUTF8 +250 HELP +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbH-0005vi-00 +221 the.local.host.name closing connection +220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +250-the.local.host.name Hello CALLER at client.bh +250-SIZE 52428800 +250-8BITMIME +250-PIPELINING +250-STARTTLS +250-SMTPUTF8 +250 HELP +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbJ-0005vi-00 +221 the.local.host.name closing connection +220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +250-the.local.host.name Hello CALLER at client.bh +250-SIZE 52428800 +250-8BITMIME +250-PIPELINING +250-STARTTLS +250-SMTPUTF8 +250 HELP +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbL-0005vi-00 +221 the.local.host.name closing connection +220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +250-the.local.host.name Hello CALLER at client.sfail +250-SIZE 52428800 +250-8BITMIME +250-PIPELINING +250-STARTTLS +250-SMTPUTF8 +250 HELP +250 OK +550-Callback setup failed while verifying +550-533 mailbox name not allowed +550-The initial connection, or a HELO or MAIL FROM:<> command was +550-rejected. Refusing MAIL FROM:<> does not help fight spam, disregards +550-RFC requirements, and stops you from receiving standard bounce +550-messages. This host does not accept mail from domains whose servers +550-refuse bounces. +550 Sender verify failed +221 the.local.host.name closing connection +220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +250-the.local.host.name Hello CALLER at client.sfail +250-SIZE 52428800 +250-8BITMIME +250-PIPELINING +250-STARTTLS +250-SMTPUTF8 +250 HELP +250 OK +550-Callback setup failed while verifying +550-533 mailbox name not allowed +550-The initial connection, or a HELO or MAIL FROM:<> command was +550-rejected. Refusing MAIL FROM:<> does not help fight spam, disregards +550-RFC requirements, and stops you from receiving standard bounce +550-messages. This host does not accept mail from domains whose servers +550-refuse bounces. +550 Sender verify failed +221 the.local.host.name closing connection -- cgit v1.2.3