From: Julian Brown Date: Sun, 15 Mar 2015 13:36:54 +0000 (+0000) Subject: When trying spooled messages, account for the local-interface in grouping for a conne... X-Git-Tag: exim-4_86_RC1~97 X-Git-Url: https://git.exim.org/exim.git/commitdiff_plain/a39bd74d3e942db1b465cae643e1a4766ffb304e When trying spooled messages, account for the local-interface in grouping for a connection. Bug 1141 --- diff --git a/src/src/deliver.c b/src/src/deliver.c index 65b4824ab..1cdecc6e9 100644 --- a/src/src/deliver.c +++ b/src/src/deliver.c @@ -7865,6 +7865,22 @@ if (!regex_IGNOREQUOTA) regex_IGNOREQUOTA = } +uschar * +deliver_get_sender_address (uschar * id) +{ +if (!spool_open_datafile(id)) + return NULL; + +sprintf(CS spoolname, "%s-H", id); +if (spool_read_header(spoolname, TRUE, TRUE) != spool_read_OK) + return NULL; + +(void)close(deliver_datafile); +deliver_datafile = -1; + +return sender_address; +} + /* vi: aw ai sw=2 */ /* End of deliver.c */ diff --git a/src/src/functions.h b/src/src/functions.h index df40d6456..7195afa88 100644 --- a/src/src/functions.h +++ b/src/src/functions.h @@ -133,6 +133,9 @@ extern void deliver_msglog(const char *, ...) PRINTF_FUNCTION(1,2); extern void deliver_set_expansions(address_item *); extern int deliver_split_address(address_item *); extern void deliver_succeeded(address_item *); + +extern uschar *deliver_get_sender_address (uschar *id); + #ifdef WITH_OLD_DEMIME extern int demime(uschar **); #endif @@ -424,7 +427,7 @@ extern uschar *tod_stamp(int); extern void tls_modify_variables(tls_support *); extern BOOL transport_check_waiting(const uschar *, const uschar *, int, uschar *, - BOOL *); + BOOL *, oicf, void*); extern void transport_init(void); extern BOOL transport_pass_socket(const uschar *, const uschar *, const uschar *, uschar *, int); diff --git a/src/src/ip.c b/src/src/ip.c index 83c8d167b..5b37e3898 100644 --- a/src/src/ip.c +++ b/src/src/ip.c @@ -228,14 +228,11 @@ alarm(0); can't think of any other way of doing this. It converts a connection refused into a timeout if the timeout is set to 999999. */ -if (running_in_test_harness) +if (running_in_test_harness && save_errno == ECONNREFUSED && timeout == 999999) { - if (save_errno == ECONNREFUSED && timeout == 999999) - { - rc = -1; - save_errno = EINTR; - sigalrm_seen = TRUE; - } + rc = -1; + save_errno = EINTR; + sigalrm_seen = TRUE; } /* Success */ @@ -245,7 +242,7 @@ if (rc >= 0) return 0; /* A failure whose error code is "Interrupted system call" is in fact an externally applied timeout if the signal handler has been run. */ -errno = (save_errno == EINTR && sigalrm_seen)? ETIMEDOUT : save_errno; +errno = save_errno == EINTR && sigalrm_seen ? ETIMEDOUT : save_errno; return -1; } @@ -360,53 +357,57 @@ bad: int ip_tcpsocket(const uschar * hostport, uschar ** errstr, int tmo) { - int scan; - uschar hostname[256]; - unsigned int portlow, porthigh; - - /* extract host and port part */ - scan = sscanf(CS hostport, "%255s %u-%u", hostname, &portlow, &porthigh); - if ( scan != 3 ) { - if ( scan != 2 ) { - *errstr = string_sprintf("invalid socket '%s'", hostport); - return -1; +int scan; +uschar hostname[256]; +unsigned int portlow, porthigh; + +/* extract host and port part */ +scan = sscanf(CS hostport, "%255s %u-%u", hostname, &portlow, &porthigh); +if (scan != 3) + { + if (scan != 2) + { + *errstr = string_sprintf("invalid socket '%s'", hostport); + return -1; } - porthigh = portlow; + porthigh = portlow; } - return ip_connectedsocket(SOCK_STREAM, hostname, portlow, porthigh, - tmo, NULL, errstr); +return ip_connectedsocket(SOCK_STREAM, hostname, portlow, porthigh, + tmo, NULL, errstr); } int ip_unixsocket(const uschar * path, uschar ** errstr) { - int sock; - struct sockaddr_un server; +int sock; +struct sockaddr_un server; - if ((sock = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) { - *errstr = US"can't open UNIX socket."; - return -1; +if ((sock = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) + { + *errstr = US"can't open UNIX socket."; + return -1; } - server.sun_family = AF_UNIX; - Ustrncpy(server.sun_path, path, sizeof(server.sun_path)-1); - server.sun_path[sizeof(server.sun_path)-1] = '\0'; - if (connect(sock, (struct sockaddr *) &server, sizeof(server)) < 0) { - int err = errno; - (void)close(sock); - *errstr = string_sprintf("unable to connect to UNIX socket (%s): %s", - path, strerror(err)); - return -1; - } - return sock; +server.sun_family = AF_UNIX; +Ustrncpy(server.sun_path, path, sizeof(server.sun_path)-1); +server.sun_path[sizeof(server.sun_path)-1] = '\0'; +if (connect(sock, (struct sockaddr *) &server, sizeof(server)) < 0) + { + int err = errno; + (void)close(sock); + *errstr = string_sprintf("unable to connect to UNIX socket (%s): %s", + path, strerror(err)); + return -1; + } +return sock; } int ip_streamsocket(const uschar * spec, uschar ** errstr, int tmo) { - return *spec == '/' - ? ip_unixsocket(spec, errstr) : ip_tcpsocket(spec, errstr, tmo); +return *spec == '/' + ? ip_unixsocket(spec, errstr) : ip_tcpsocket(spec, errstr, tmo); } /************************************************* @@ -461,7 +462,7 @@ if (timeout <= 0) } /* Wait until the socket is ready */ -for (;;) +do { FD_ZERO (&select_inset); FD_SET (fd, &select_inset); @@ -497,9 +498,8 @@ for (;;) } /* If the socket is ready, break out of the loop. */ - - if (FD_ISSET(fd, &select_inset)) break; } +while (!FD_ISSET(fd, &select_inset)); return TRUE; } @@ -702,13 +702,9 @@ while (last > first) return TRUE; } else if (c > 0) - { first = middle + 1; - } else - { last = middle; - } } return FALSE; } diff --git a/src/src/structs.h b/src/src/structs.h index 85207b52f..6ec52e1ec 100644 --- a/src/src/structs.h +++ b/src/src/structs.h @@ -791,4 +791,7 @@ typedef struct acl_block { int verb; } acl_block; +/* smtp transport calc outbound_ip */ +typedef BOOL (*oicf) (uschar *message_id, void *data); + /* End of structs.h */ diff --git a/src/src/transport.c b/src/src/transport.c index fea914646..7b3d46908 100644 --- a/src/src/transport.c +++ b/src/src/transport.c @@ -1625,13 +1625,24 @@ Arguments: as set by the caller transport new_message_id set to the message id of a waiting message more set TRUE if there are yet more messages waiting + oicf_func function to call to validate if it is ok to send + to this message_id from the current instance. + oicf_data opaque data for oicf_func Returns: TRUE if new_message_id set; FALSE otherwise */ +typedef struct msgq_s msgq_t; + +typedef struct msgq_s +{ + uschar message_id [MESSAGE_ID_LENGTH + 1]; + BOOL bKeep; +} msgq_t; + BOOL transport_check_waiting(const uschar *transport_name, const uschar *hostname, - int local_message_max, uschar *new_message_id, BOOL *more) + int local_message_max, uschar *new_message_id, BOOL *more, oicf oicf_func, void *oicf_data) { dbdata_wait *host_record; int host_length, path_len; @@ -1639,6 +1650,16 @@ open_db dbblock; open_db *dbm_file; uschar buffer[256]; +msgq_t *msgq = NULL; +int msgq_count = 0; +int msgq_actual = 0; +int i; +BOOL bFound = FALSE; +uschar spool_dir [PATH_MAX]; +uschar spool_file [PATH_MAX]; +struct stat statbuf; +BOOL bContinuation = FALSE; + *more = FALSE; DEBUG(D_transport) @@ -1691,58 +1712,107 @@ until one is found for which a spool file actually exists. If the record gets emptied, delete it and continue with any continuation records that may exist. */ -host_length = host_record->count * MESSAGE_ID_LENGTH; +/* For Bug 1141, I refactored this major portion of the routine, it is risky +but the 1 off will remain without it. This code now allows me to SKIP over +a message I do not want to send out on this run. */ -/* Loop to handle continuation host records in the database */ +sprintf(CS spool_dir, "%s/input/", spool_directory); -for (;;) +host_length = host_record->count * MESSAGE_ID_LENGTH; + +while (1) { - BOOL found = FALSE; + /* create an array to read entire message queue into memory for processing */ - sprintf(CS buffer, "%s/input/", spool_directory); - path_len = Ustrlen(buffer); + msgq = (msgq_t*) malloc(sizeof(msgq_t) * host_record->count); + msgq_count = host_record->count; + msgq_actual = msgq_count; - for (host_length -= MESSAGE_ID_LENGTH; host_length >= 0; - host_length -= MESSAGE_ID_LENGTH) + for (i = 0; i < host_record->count; ++i) { - struct stat statbuf; - Ustrncpy(new_message_id, host_record->text + host_length, + msgq[i].bKeep = TRUE; + + Ustrncpy(msgq[i].message_id, host_record->text + (i * MESSAGE_ID_LENGTH), MESSAGE_ID_LENGTH); - new_message_id[MESSAGE_ID_LENGTH] = 0; + msgq[i].message_id[MESSAGE_ID_LENGTH] = 0; + } + + /* first thing remove current message id if it exists */ + for (i = 0; i < msgq_count; ++i) + if (Ustrcmp(msgq[i].message_id, message_id) == 0) + { + msgq[i].bKeep = FALSE; + break; + } + + /* now find the next acceptable message_id */ + + bFound = FALSE; + + for (i = msgq_count - 1; i >= 0; --i) if (msgq[i].bKeep) + { if (split_spool_directory) - sprintf(CS(buffer + path_len), "%c/%s-D", new_message_id[5], new_message_id); + sprintf(CS spool_file, "%s%c/%s-D", + spool_dir, new_message_id[5], msgq[i].message_id); else - sprintf(CS(buffer + path_len), "%s-D", new_message_id); + sprintf(CS spool_file, "%s%s-D", spool_dir, msgq[i].message_id); - /* The listed message may be the one we are currently processing. If - so, we want to remove it from the list without doing anything else. - If not, do a stat to see if it is an existing message. If it is, break - the loop to handle it. No need to bother about locks; as this is all - "hint" processing, it won't matter if it doesn't exist by the time exim - actually tries to deliver it. */ - - if (Ustrcmp(new_message_id, message_id) != 0 && - Ustat(buffer, &statbuf) == 0) + if (Ustat(spool_file, &statbuf) != 0) + msgq[i].bKeep = FALSE; + else if (!oicf_func || oicf_func(msgq[i].message_id, oicf_data)) { - found = TRUE; + Ustrcpy(new_message_id, msgq[i].message_id); + msgq[i].bKeep = FALSE; + bFound = TRUE; break; } } - /* If we have removed all the message ids from the record delete the record. - If there is a continuation record, fetch it and remove it from the file, - as it will be rewritten as the main record. Repeat in the case of an - empty continuation. */ + /* re-count */ + for (msgq_actual = 0, i = 0; i < msgq_count; ++i) + if (msgq[i].bKeep) + msgq_actual++; + + /* reassemble the host record, based on removed message ids, from in + * memory queue. + */ + + if (msgq_actual <= 0) + { + host_length = 0; + host_record->count = 0; + } + else + { + host_length = msgq_actual * MESSAGE_ID_LENGTH; + host_record->count = msgq_actual; + + if (msgq_actual < msgq_count) + { + int new_count; + for (new_count = 0, i = 0; i < msgq_count; ++i) + if (msgq[i].bKeep) + Ustrncpy(&host_record->text[new_count++ * MESSAGE_ID_LENGTH], + msgq[i].message_id, MESSAGE_ID_LENGTH); + + host_record->text[new_count * MESSAGE_ID_LENGTH] = 0; + } + } + +/* Jeremy: check for a continuation record, this code I do not know how to +test but the code should work */ + + bContinuation = FALSE; while (host_length <= 0) { int i; - dbdata_wait *newr = NULL; + dbdata_wait * newr = NULL; /* Search for a continuation */ - for (i = host_record->sequence - 1; i >= 0 && newr == NULL; i--) + for (i = host_record->sequence - 1; i >= 0 && !newr; i--) { sprintf(CS buffer, "%.200s:%d", hostname, i); newr = dbfn_read(dbm_file, buffer); @@ -1750,7 +1820,7 @@ for (;;) /* If no continuation, delete the current and break the loop */ - if (newr == NULL) + if (!newr) { dbfn_delete(dbm_file, hostname); break; @@ -1761,11 +1831,12 @@ for (;;) dbfn_delete(dbm_file, buffer); host_record = newr; host_length = host_record->count * MESSAGE_ID_LENGTH; - } - /* If we found an existing message, break the continuation loop. */ + bContinuation = TRUE; + } - if (found) break; + if (bFound) + break; /* If host_length <= 0 we have emptied a record and not found a good message, and there are no continuation records. Otherwise there is a continuation @@ -1777,6 +1848,26 @@ for (;;) DEBUG(D_transport) debug_printf("waiting messages already delivered\n"); return FALSE; } + + /* we were not able to find an acceptable message, nor was there a + * continuation record. So bug out, outer logic will clean this up. + */ + + if (!bContinuation) + { + Ustrcpy (new_message_id, message_id); + dbfn_close(dbm_file); + return FALSE; + } + } /* we need to process a continuation record */ + +/* clean up in memory queue */ +if (msgq) + { + free (msgq); + msgq = NULL; + msgq_count = 0; + msgq_actual = 0; } /* Control gets here when an existing message has been encountered; its @@ -1786,7 +1877,19 @@ record if required, close the database, and return TRUE. */ if (host_length > 0) { + uschar msg [MESSAGE_ID_LENGTH + 1]; + int i; + host_record->count = host_length/MESSAGE_ID_LENGTH; + + /* rebuild the host_record->text */ + + for (i = 0; i < host_record->count; ++i) + { + Ustrncpy(msg, host_record->text + (i*MESSAGE_ID_LENGTH), MESSAGE_ID_LENGTH); + msg[MESSAGE_ID_LENGTH] = 0; + } + dbfn_write(dbm_file, hostname, host_record, (int)sizeof(dbdata_wait) + host_length); *more = TRUE; } @@ -1795,8 +1898,6 @@ dbfn_close(dbm_file); return TRUE; } - - /************************************************* * Deliver waiting message down same socket * *************************************************/ diff --git a/src/src/transports/smtp.c b/src/src/transports/smtp.c index 11d7fdd12..446b3702b 100644 --- a/src/src/transports/smtp.c +++ b/src/src/transports/smtp.c @@ -700,8 +700,6 @@ router_name = transport_name = NULL; } #endif - - /************************************************* * Synchronize SMTP responses * *************************************************/ @@ -1210,6 +1208,80 @@ return OK; #endif + +typedef struct smtp_compare_s +{ + uschar *current_sender_address; + struct transport_instance *tblock; +} smtp_compare_t; + +/* +Create a unique string that identifies this message, it is based on +sender_address, helo_data and tls_certificate if enabled. */ + +static uschar * +smtp_local_identity(uschar * sender, struct transport_instance * tblock) +{ +address_item * addr1; +uschar * if1 = US""; +uschar * helo1 = US""; +#ifdef SUPPORT_TLS +uschar * tlsc1 = US""; +#endif +uschar * save_sender_address = sender_address; +uschar * local_identity = NULL; +smtp_transport_options_block * ob = + (smtp_transport_options_block *)tblock->options_block; + +sender_address = sender; + +addr1 = deliver_make_addr (sender, TRUE); +deliver_set_expansions(addr1); + +if (ob->interface) + if1 = expand_string(ob->interface); + +if (ob->helo_data) + helo1 = expand_string(ob->helo_data); + +#ifdef SUPPORT_TLS +if (ob->tls_certificate) + tlsc1 = expand_string(ob->tls_certificate); +local_identity = string_sprintf ("%s^%s^%s", if1, helo1, tlsc1); +#else +local_identity = string_sprintf ("%s^%s", if1, helo1); +#endif + +deliver_set_expansions(NULL); +sender_address = save_sender_address; + +return local_identity; +} + + + +/* This routine is a callback that is called from transport_check_waiting. +This function will evaluate the incoming message versus the previous +message. If the incoming message is using a different local identity then +we will veto this new message. */ + +static BOOL +smtp_are_same_identities(uschar * message_id, smtp_compare_t * s_compare) +{ +uschar * save_sender_address = sender_address; +uschar * current_local_identity = + smtp_local_identity(s_compare->current_sender_address, s_compare->tblock); +uschar * new_sender_address = deliver_get_sender_address(message_id); +uschar * message_local_identity = + smtp_local_identity(new_sender_address, s_compare->tblock); + +sender_address = save_sender_address; + +return Ustrcmp(current_local_identity, message_local_identity) == 0; +} + + + /************************************************* * Deliver address list to given host * *************************************************/ @@ -1293,13 +1365,16 @@ smtp_inblock inblock; smtp_outblock outblock; int max_rcpt = tblock->max_addresses; uschar *igquotstr = US""; + uschar *helo_data = NULL; + uschar *message = NULL; uschar new_message_id[MESSAGE_ID_LENGTH + 1]; uschar *p; uschar buffer[4096]; uschar inbuffer[4096]; uschar outbuffer[4096]; +address_item * current_address; suppress_tls = suppress_tls; /* stop compiler warning when no TLS support */ @@ -2520,6 +2595,11 @@ DEBUG(D_transport) if (completed_address && ok && send_quit) { BOOL more; + smtp_compare_t t_compare; + + t_compare.tblock = tblock; + t_compare.current_sender_address = sender_address; + if ( first_addr != NULL || continue_more || ( ( tls_out.active < 0 @@ -2527,7 +2607,8 @@ if (completed_address && ok && send_quit) ) && transport_check_waiting(tblock->name, host->name, - tblock->connection_max_messages, new_message_id, &more) + tblock->connection_max_messages, new_message_id, &more, + (oicf)smtp_are_same_identities, (void*)&t_compare) ) ) { uschar *msg; diff --git a/test/confs/0603 b/test/confs/0603 new file mode 100644 index 000000000..bc84cc0d1 --- /dev/null +++ b/test/confs/0603 @@ -0,0 +1,60 @@ +# Exim test configuration 0603 +# Add several messages going to the same location +# And change smtp output based on senders domain + +hostlist loopback = <; 127.0.0.0/8 ; 0.0.0.0 ; ::1 ; 0000:0000:0000:0000:0000:ffff +untrusted_set_sender = * + +SERVER = + +exim_path = EXIM_PATH +host_lookup_order = bydns +#primary_hostname = myhost.test.ex +rfc1413_query_timeout = 0s +spool_directory = DIR/spool +log_file_path = DIR/spool/log/SERVER%slog +log_selector = +sender_on_delivery +gecos_pattern = "" +gecos_name = CALLER_NAME + +# ----- Main settings ----- + +acl_smtp_rcpt = accept + +queue_only +queue_run_in_order + +# ----- Routers ----- + +begin routers + +client: + driver = accept + condition = ${if eq {SERVER}{server}{no}{yes}} + transport = send_to_server + +server: + driver = accept + transport = send_to_server + + +# ----- Transports ----- + +begin transports + +send_to_server: + driver = smtp + connection_max_messages = 0 + allow_localhost + hosts = 127.0.0.1 + port = PORT_D + interface = ${if eq {$sender_address_domain}{dustybelt.tld} {127.0.0.1}{127.0.0.2}} + +# ----- Retry ----- + +begin retry + +* * F,5d,10s + +# End + diff --git a/test/confs/0604 b/test/confs/0604 new file mode 100644 index 000000000..77376cdcd --- /dev/null +++ b/test/confs/0604 @@ -0,0 +1,59 @@ +# Exim test configuration 0604 +# Send many messages in hopes of tripping continuation records code + +hostlist loopback = <; 127.0.0.0/8 ; 0.0.0.0 ; ::1 ; 0000:0000:0000:0000:0000:ffff +untrusted_set_sender = * + +SERVER = + +exim_path = EXIM_PATH +host_lookup_order = bydns +#primary_hostname = myhost.test.ex +rfc1413_query_timeout = 0s +spool_directory = DIR/spool +log_file_path = DIR/spool/log/SERVER%slog +log_selector = +sender_on_delivery +gecos_pattern = "" +gecos_name = CALLER_NAME + +# ----- Main settings ----- + +acl_smtp_rcpt = accept + +queue_only +queue_run_in_order + +# ----- Routers ----- + +begin routers + +client: + driver = accept + condition = ${if eq {SERVER}{server}{no}{yes}} + transport = send_to_server + +server: + driver = accept + transport = send_to_server + + +# ----- Transports ----- + +begin transports + +send_to_server: + driver = smtp + connection_max_messages = 0 + allow_localhost + hosts = 127.0.0.1 + port = PORT_D + interface = ${if eq {$sender_address_domain}{dustybelt.tld} {127.0.0.1}{127.0.0.2}} + +# ----- Retry ----- + +begin retry + +* * F,5d,10s + +# End + diff --git a/test/log/0603 b/test/log/0603 new file mode 100644 index 000000000..d8ca112c1 --- /dev/null +++ b/test/log/0603 @@ -0,0 +1,30 @@ +1999-03-02 09:44:33 10HmaX-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmaY-0005vi-00 <= peter@dustybelt.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmaZ-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmbA-0005vi-00 <= peter@dustybelt.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmbB-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmbC-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 Start queue run: pid=pppp -qq +1999-03-02 09:44:33 10HmaX-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbD-0005vi-00" +1999-03-02 09:44:33 10HmaX-0005vi-00 Completed +1999-03-02 09:44:33 10HmbC-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmbE-0005vi-00" +1999-03-02 09:44:33 10HmbC-0005vi-00 Completed +1999-03-02 09:44:33 10HmbB-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmbF-0005vi-00" +1999-03-02 09:44:33 10HmbB-0005vi-00 Completed +1999-03-02 09:44:33 10HmaZ-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmbG-0005vi-00" +1999-03-02 09:44:33 10HmaZ-0005vi-00 Completed +1999-03-02 09:44:33 10HmaY-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbH-0005vi-00" +1999-03-02 09:44:33 10HmaY-0005vi-00 Completed +1999-03-02 09:44:33 10HmbA-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmbI-0005vi-00" +1999-03-02 09:44:33 10HmbA-0005vi-00 Completed +1999-03-02 09:44:33 End queue run: pid=pppp -qq + +******** SERVER ******** +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 no host name found for IP address 127.0.0.2 +1999-03-02 09:44:33 10HmbD-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmaX-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmbE-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmbC-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmbF-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmbB-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmbG-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmaZ-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmbH-0005vi-00 <= peter@dustybelt.tld H=localhost (the.local.host.name) [127.0.0.1] P=esmtp S=sss id=E10HmaY-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmbI-0005vi-00 <= peter@dustybelt.tld H=localhost (the.local.host.name) [127.0.0.1] P=esmtp S=sss id=E10HmbA-0005vi-00@the.local.host.name diff --git a/test/log/0604 b/test/log/0604 new file mode 100644 index 000000000..b72c16983 --- /dev/null +++ b/test/log/0604 @@ -0,0 +1,330 @@ +1999-03-02 09:44:33 10HmaX-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmaY-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmaZ-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmbA-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmbB-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmbC-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmbD-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmbE-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmbF-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmbG-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmbH-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmbI-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmbJ-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmbK-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmbL-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmbM-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmbN-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmbO-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmbP-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmbQ-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmbR-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmbS-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmbT-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmbU-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmbV-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmbW-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmbX-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmbY-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmbZ-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmcA-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmcB-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmcC-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmcD-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmcE-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmcF-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmcG-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmcH-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmcI-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmcJ-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmcK-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmcL-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmcM-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmcN-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmcO-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmcP-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmcQ-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmcR-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmcS-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmcT-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmcU-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmcV-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmcW-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmcX-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmcY-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmcZ-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmdA-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmdB-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmdC-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmdD-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmdE-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmdF-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmdG-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmdH-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmdI-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmdJ-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmdK-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmdL-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmdM-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmdN-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmdO-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmdP-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmdQ-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmdR-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmdS-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmdT-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmdU-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmdV-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmdW-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmdX-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmdY-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmdZ-0005vi-00 <= ralph@dustyshoes.tld U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 Start queue run: pid=pppp -qq +1999-03-02 09:44:33 10HmaX-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmeA-0005vi-00" +1999-03-02 09:44:33 10HmaX-0005vi-00 Completed +1999-03-02 09:44:33 10HmdZ-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeB-0005vi-00" +1999-03-02 09:44:33 10HmdZ-0005vi-00 Completed +1999-03-02 09:44:33 10HmdY-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeC-0005vi-00" +1999-03-02 09:44:33 10HmdY-0005vi-00 Completed +1999-03-02 09:44:33 10HmdX-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeD-0005vi-00" +1999-03-02 09:44:33 10HmdX-0005vi-00 Completed +1999-03-02 09:44:33 10HmdW-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeE-0005vi-00" +1999-03-02 09:44:33 10HmdW-0005vi-00 Completed +1999-03-02 09:44:33 10HmdV-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeF-0005vi-00" +1999-03-02 09:44:33 10HmdV-0005vi-00 Completed +1999-03-02 09:44:33 10HmdU-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeG-0005vi-00" +1999-03-02 09:44:33 10HmdU-0005vi-00 Completed +1999-03-02 09:44:33 10HmdT-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeH-0005vi-00" +1999-03-02 09:44:33 10HmdT-0005vi-00 Completed +1999-03-02 09:44:33 10HmdS-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeI-0005vi-00" +1999-03-02 09:44:33 10HmdS-0005vi-00 Completed +1999-03-02 09:44:33 10HmdR-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeJ-0005vi-00" +1999-03-02 09:44:33 10HmdR-0005vi-00 Completed +1999-03-02 09:44:33 10HmdQ-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeK-0005vi-00" +1999-03-02 09:44:33 10HmdQ-0005vi-00 Completed +1999-03-02 09:44:33 10HmdP-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeL-0005vi-00" +1999-03-02 09:44:33 10HmdP-0005vi-00 Completed +1999-03-02 09:44:33 10HmdO-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeM-0005vi-00" +1999-03-02 09:44:33 10HmdO-0005vi-00 Completed +1999-03-02 09:44:33 10HmdN-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeN-0005vi-00" +1999-03-02 09:44:33 10HmdN-0005vi-00 Completed +1999-03-02 09:44:33 10HmdM-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeO-0005vi-00" +1999-03-02 09:44:33 10HmdM-0005vi-00 Completed +1999-03-02 09:44:33 10HmdL-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeP-0005vi-00" +1999-03-02 09:44:33 10HmdL-0005vi-00 Completed +1999-03-02 09:44:33 10HmdK-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeQ-0005vi-00" +1999-03-02 09:44:33 10HmdK-0005vi-00 Completed +1999-03-02 09:44:33 10HmdJ-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeR-0005vi-00" +1999-03-02 09:44:33 10HmdJ-0005vi-00 Completed +1999-03-02 09:44:33 10HmdI-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeS-0005vi-00" +1999-03-02 09:44:33 10HmdI-0005vi-00 Completed +1999-03-02 09:44:33 10HmdH-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeT-0005vi-00" +1999-03-02 09:44:33 10HmdH-0005vi-00 Completed +1999-03-02 09:44:33 10HmdG-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeU-0005vi-00" +1999-03-02 09:44:33 10HmdG-0005vi-00 Completed +1999-03-02 09:44:33 10HmdF-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeV-0005vi-00" +1999-03-02 09:44:33 10HmdF-0005vi-00 Completed +1999-03-02 09:44:33 10HmdE-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeW-0005vi-00" +1999-03-02 09:44:33 10HmdE-0005vi-00 Completed +1999-03-02 09:44:33 10HmdD-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeX-0005vi-00" +1999-03-02 09:44:33 10HmdD-0005vi-00 Completed +1999-03-02 09:44:33 10HmdC-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeY-0005vi-00" +1999-03-02 09:44:33 10HmdC-0005vi-00 Completed +1999-03-02 09:44:33 10HmdB-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmeZ-0005vi-00" +1999-03-02 09:44:33 10HmdB-0005vi-00 Completed +1999-03-02 09:44:33 10HmdA-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfA-0005vi-00" +1999-03-02 09:44:33 10HmdA-0005vi-00 Completed +1999-03-02 09:44:33 10HmcZ-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfB-0005vi-00" +1999-03-02 09:44:33 10HmcZ-0005vi-00 Completed +1999-03-02 09:44:33 10HmcY-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfC-0005vi-00" +1999-03-02 09:44:33 10HmcY-0005vi-00 Completed +1999-03-02 09:44:33 10HmcX-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfD-0005vi-00" +1999-03-02 09:44:33 10HmcX-0005vi-00 Completed +1999-03-02 09:44:33 10HmcW-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfE-0005vi-00" +1999-03-02 09:44:33 10HmcW-0005vi-00 Completed +1999-03-02 09:44:33 10HmcV-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfF-0005vi-00" +1999-03-02 09:44:33 10HmcV-0005vi-00 Completed +1999-03-02 09:44:33 10HmcU-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfG-0005vi-00" +1999-03-02 09:44:33 10HmcU-0005vi-00 Completed +1999-03-02 09:44:33 10HmcT-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfH-0005vi-00" +1999-03-02 09:44:33 10HmcT-0005vi-00 Completed +1999-03-02 09:44:33 10HmcS-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfI-0005vi-00" +1999-03-02 09:44:33 10HmcS-0005vi-00 Completed +1999-03-02 09:44:33 10HmcR-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfJ-0005vi-00" +1999-03-02 09:44:33 10HmcR-0005vi-00 Completed +1999-03-02 09:44:33 10HmcQ-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfK-0005vi-00" +1999-03-02 09:44:33 10HmcQ-0005vi-00 Completed +1999-03-02 09:44:33 10HmcP-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfL-0005vi-00" +1999-03-02 09:44:33 10HmcP-0005vi-00 Completed +1999-03-02 09:44:33 10HmcO-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfM-0005vi-00" +1999-03-02 09:44:33 10HmcO-0005vi-00 Completed +1999-03-02 09:44:33 10HmcN-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfN-0005vi-00" +1999-03-02 09:44:33 10HmcN-0005vi-00 Completed +1999-03-02 09:44:33 10HmcM-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfO-0005vi-00" +1999-03-02 09:44:33 10HmcM-0005vi-00 Completed +1999-03-02 09:44:33 10HmcL-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfP-0005vi-00" +1999-03-02 09:44:33 10HmcL-0005vi-00 Completed +1999-03-02 09:44:33 10HmcK-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfQ-0005vi-00" +1999-03-02 09:44:33 10HmcK-0005vi-00 Completed +1999-03-02 09:44:33 10HmcJ-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfR-0005vi-00" +1999-03-02 09:44:33 10HmcJ-0005vi-00 Completed +1999-03-02 09:44:33 10HmcI-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfS-0005vi-00" +1999-03-02 09:44:33 10HmcI-0005vi-00 Completed +1999-03-02 09:44:33 10HmcH-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfT-0005vi-00" +1999-03-02 09:44:33 10HmcH-0005vi-00 Completed +1999-03-02 09:44:33 10HmcG-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfU-0005vi-00" +1999-03-02 09:44:33 10HmcG-0005vi-00 Completed +1999-03-02 09:44:33 10HmcF-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfV-0005vi-00" +1999-03-02 09:44:33 10HmcF-0005vi-00 Completed +1999-03-02 09:44:33 10HmcE-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfW-0005vi-00" +1999-03-02 09:44:33 10HmcE-0005vi-00 Completed +1999-03-02 09:44:33 10HmcD-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfX-0005vi-00" +1999-03-02 09:44:33 10HmcD-0005vi-00 Completed +1999-03-02 09:44:33 10HmcC-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfY-0005vi-00" +1999-03-02 09:44:33 10HmcC-0005vi-00 Completed +1999-03-02 09:44:33 10HmcB-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmfZ-0005vi-00" +1999-03-02 09:44:33 10HmcB-0005vi-00 Completed +1999-03-02 09:44:33 10HmcA-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgA-0005vi-00" +1999-03-02 09:44:33 10HmcA-0005vi-00 Completed +1999-03-02 09:44:33 10HmbZ-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgB-0005vi-00" +1999-03-02 09:44:33 10HmbZ-0005vi-00 Completed +1999-03-02 09:44:33 10HmbY-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgC-0005vi-00" +1999-03-02 09:44:33 10HmbY-0005vi-00 Completed +1999-03-02 09:44:33 10HmbX-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgD-0005vi-00" +1999-03-02 09:44:33 10HmbX-0005vi-00 Completed +1999-03-02 09:44:33 10HmbW-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgE-0005vi-00" +1999-03-02 09:44:33 10HmbW-0005vi-00 Completed +1999-03-02 09:44:33 10HmbV-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgF-0005vi-00" +1999-03-02 09:44:33 10HmbV-0005vi-00 Completed +1999-03-02 09:44:33 10HmbU-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgG-0005vi-00" +1999-03-02 09:44:33 10HmbU-0005vi-00 Completed +1999-03-02 09:44:33 10HmbT-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgH-0005vi-00" +1999-03-02 09:44:33 10HmbT-0005vi-00 Completed +1999-03-02 09:44:33 10HmbS-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgI-0005vi-00" +1999-03-02 09:44:33 10HmbS-0005vi-00 Completed +1999-03-02 09:44:33 10HmbR-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgJ-0005vi-00" +1999-03-02 09:44:33 10HmbR-0005vi-00 Completed +1999-03-02 09:44:33 10HmbQ-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgK-0005vi-00" +1999-03-02 09:44:33 10HmbQ-0005vi-00 Completed +1999-03-02 09:44:33 10HmbP-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgL-0005vi-00" +1999-03-02 09:44:33 10HmbP-0005vi-00 Completed +1999-03-02 09:44:33 10HmbO-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgM-0005vi-00" +1999-03-02 09:44:33 10HmbO-0005vi-00 Completed +1999-03-02 09:44:33 10HmbN-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgN-0005vi-00" +1999-03-02 09:44:33 10HmbN-0005vi-00 Completed +1999-03-02 09:44:33 10HmbM-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgO-0005vi-00" +1999-03-02 09:44:33 10HmbM-0005vi-00 Completed +1999-03-02 09:44:33 10HmbL-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgP-0005vi-00" +1999-03-02 09:44:33 10HmbL-0005vi-00 Completed +1999-03-02 09:44:33 10HmbK-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgQ-0005vi-00" +1999-03-02 09:44:33 10HmbK-0005vi-00 Completed +1999-03-02 09:44:33 10HmbJ-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgR-0005vi-00" +1999-03-02 09:44:33 10HmbJ-0005vi-00 Completed +1999-03-02 09:44:33 10HmbI-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgS-0005vi-00" +1999-03-02 09:44:33 10HmbI-0005vi-00 Completed +1999-03-02 09:44:33 10HmbH-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgT-0005vi-00" +1999-03-02 09:44:33 10HmbH-0005vi-00 Completed +1999-03-02 09:44:33 10HmbG-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgU-0005vi-00" +1999-03-02 09:44:33 10HmbG-0005vi-00 Completed +1999-03-02 09:44:33 10HmbF-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgV-0005vi-00" +1999-03-02 09:44:33 10HmbF-0005vi-00 Completed +1999-03-02 09:44:33 10HmbE-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgW-0005vi-00" +1999-03-02 09:44:33 10HmbE-0005vi-00 Completed +1999-03-02 09:44:33 10HmbD-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgX-0005vi-00" +1999-03-02 09:44:33 10HmbD-0005vi-00 Completed +1999-03-02 09:44:33 10HmbC-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgY-0005vi-00" +1999-03-02 09:44:33 10HmbC-0005vi-00 Completed +1999-03-02 09:44:33 10HmbB-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmgZ-0005vi-00" +1999-03-02 09:44:33 10HmbB-0005vi-00 Completed +1999-03-02 09:44:33 10HmbA-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmhA-0005vi-00" +1999-03-02 09:44:33 10HmbA-0005vi-00 Completed +1999-03-02 09:44:33 10HmaZ-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmhB-0005vi-00" +1999-03-02 09:44:33 10HmaZ-0005vi-00 Completed +1999-03-02 09:44:33 10HmaY-0005vi-00 => bob@anotherone.tld F= R=client T=send_to_server H=127.0.0.1 [127.0.0.1]* C="250 OK id=10HmhC-0005vi-00" +1999-03-02 09:44:33 10HmaY-0005vi-00 Completed +1999-03-02 09:44:33 End queue run: pid=pppp -qq + +******** SERVER ******** +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 no host name found for IP address 127.0.0.2 +1999-03-02 09:44:33 10HmeA-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmaX-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmeB-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmdZ-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmeC-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmdY-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmeD-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmdX-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmeE-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmdW-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmeF-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmdV-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmeG-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmdU-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmeH-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmdT-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmeI-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmdS-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmeJ-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmdR-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmeK-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmdQ-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmeL-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmdP-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmeM-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmdO-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmeN-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmdN-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmeO-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmdM-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmeP-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmdL-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmeQ-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmdK-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmeR-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmdJ-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmeS-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmdI-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmeT-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmdH-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmeU-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmdG-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmeV-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmdF-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmeW-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmdE-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmeX-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmdD-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmeY-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmdC-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmeZ-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmdB-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmfA-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmdA-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmfB-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmcZ-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmfC-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmcY-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmfD-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmcX-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmfE-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmcW-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmfF-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmcV-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmfG-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmcU-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmfH-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmcT-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmfI-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmcS-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmfJ-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmcR-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmfK-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmcQ-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmfL-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmcP-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmfM-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmcO-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmfN-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmcN-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmfO-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmcM-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmfP-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmcL-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmfQ-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmcK-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmfR-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmcJ-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmfS-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmcI-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmfT-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmcH-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmfU-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmcG-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmfV-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmcF-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmfW-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmcE-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmfX-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmcD-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmfY-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmcC-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmfZ-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmcB-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmgA-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmcA-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmgB-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmbZ-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmgC-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmbY-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmgD-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmbX-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmgE-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmbW-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmgF-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmbV-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmgG-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmbU-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmgH-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmbT-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmgI-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmbS-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmgJ-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmbR-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmgK-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmbQ-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmgL-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmbP-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmgM-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmbO-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmgN-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmbN-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmgO-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmbM-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmgP-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmbL-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmgQ-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmbK-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmgR-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmbJ-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmgS-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmbI-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmgT-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmbH-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmgU-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmbG-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmgV-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmbF-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmgW-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmbE-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmgX-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmbD-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmgY-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmbC-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmgZ-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmbB-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmhA-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmbA-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmhB-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmaZ-0005vi-00@the.local.host.name +1999-03-02 09:44:33 10HmhC-0005vi-00 <= ralph@dustyshoes.tld H=(the.local.host.name) [127.0.0.2] P=esmtp S=sss id=E10HmaY-0005vi-00@the.local.host.name diff --git a/test/scripts/0000-Basic/0603 b/test/scripts/0000-Basic/0603 new file mode 100644 index 000000000..38e374a1f --- /dev/null +++ b/test/scripts/0000-Basic/0603 @@ -0,0 +1,71 @@ +# retry: transport identity depending on sender +# Exim test configuration 0603 +# +# Add several messages going to the same location +# And change smtp output based on senders domain +# +exim -DSERVER=server -bd -oX PORT_D +**** +# +exim -bs +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +This is a test message. +It has three lines. +This is the last line. +. +RSET +mail from:peter@dustybelt.tld +rcpt to:bob@anotherone.tld +data +Subject: second + +This is a second test message. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: third +Reply-to: some@body + +This is a third test message. +. +RSET +mail from:peter@dustybelt.tld +rcpt to:bob@anotherone.tld +data +Subject: secondA + +This is a secondA test message. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: third +Reply-to: some@body + +This is a fourth test message. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: third +Reply-to: some@body + +This is a fifth test message. +. +quit +**** +# +# +exim -qq +**** +# +# +killdaemon +no_msglog_check + diff --git a/test/scripts/0000-Basic/0604 b/test/scripts/0000-Basic/0604 new file mode 100644 index 000000000..a24d194fa --- /dev/null +++ b/test/scripts/0000-Basic/0604 @@ -0,0 +1,667 @@ +# retry: database continuation record +# Exim test configuration 0604 +# +echo Note this takes 3 minutes to run +# +exim -DSERVER=server -bd -oX PORT_D +**** +# +exim -bs +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +This is a test message. +It has three lines. +This is the last line. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 1 + +This is message number 1. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 2 + +This is message number 2. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 3 + +This is message number 3. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 4 + +This is message number 4. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 5 + +This is message number 5. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 6 + +This is message number 6. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 7 + +This is message number 7. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 8 + +This is message number 8. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 9 + +This is message number 9. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 10 + +This is message number 10. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 11 + +This is message number 11. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 12 + +This is message number 12. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 13 + +This is message number 13. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 14 + +This is message number 14. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 15 + +This is message number 15. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 16 + +This is message number 16. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 17 + +This is message number 17. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 18 + +This is message number 18. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 19 + +This is message number 19. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 20 + +This is message number 20. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 21 + +This is message number 21. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 22 + +This is message number 22. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 23 + +This is message number 23. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 24 + +This is message number 24. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 25 + +This is message number 25. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 26 + +This is message number 26. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 27 + +This is message number 27. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 28 + +This is message number 28. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 29 + +This is message number 29. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 30 + +This is message number 30. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 31 + +This is message number 31. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 32 + +This is message number 32. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 33 + +This is message number 33. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 34 + +This is message number 34. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 35 + +This is message number 35. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 36 + +This is message number 36. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 37 + +This is message number 37. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 38 + +This is message number 38. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 39 + +This is message number 39. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 40 + +This is message number 40. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 41 + +This is message number 41. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 42 + +This is message number 42. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 43 + +This is message number 43. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 44 + +This is message number 44. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 45 + +This is message number 45. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 46 + +This is message number 46. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 47 + +This is message number 47. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 48 + +This is message number 48. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 49 + +This is message number 49. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 50 + +This is message number 50. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 51 + +This is message number 51. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 52 + +This is message number 52. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 53 + +This is message number 53. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 54 + +This is message number 54. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 55 + +This is message number 55. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 56 + +This is message number 56. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 57 + +This is message number 57. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 58 + +This is message number 58. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 59 + +This is message number 59. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 60 + +This is message number 60. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 61 + +This is message number 61. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 62 + +This is message number 62. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 63 + +This is message number 63. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 64 + +This is message number 64. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 65 + +This is message number 65. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 66 + +This is message number 66. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 67 + +This is message number 67. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 68 + +This is message number 68. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 69 + +This is message number 69. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 70 + +This is message number 70. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 71 + +This is message number 71. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 72 + +This is message number 72. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 73 + +This is message number 73. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 74 + +This is message number 74. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 75 + +This is message number 75. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 76 + +This is message number 76. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 77 + +This is message number 77. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 78 + +This is message number 78. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 79 + +This is message number 79. +. +RSET +mail from:ralph@dustyshoes.tld +rcpt to:bob@anotherone.tld +data +Subject: message_id 80 + +This is message number 80. +. +quit +**** +# +# +exim -qq +**** +# +# +killdaemon +no_msglog_check + diff --git a/test/stderr/0604 b/test/stderr/0604 new file mode 100644 index 000000000..045fadc9b --- /dev/null +++ b/test/stderr/0604 @@ -0,0 +1,2 @@ + +******** SERVER ******** diff --git a/test/stdout/0603 b/test/stdout/0603 new file mode 100644 index 000000000..ee9b665a1 --- /dev/null +++ b/test/stdout/0603 @@ -0,0 +1,31 @@ +220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmaX-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmaY-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmaZ-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbA-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbB-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbC-0005vi-00 +221 the.local.host.name closing connection diff --git a/test/stdout/0604 b/test/stdout/0604 new file mode 100644 index 000000000..a6da43d1d --- /dev/null +++ b/test/stdout/0604 @@ -0,0 +1,406 @@ +220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmaX-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmaY-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmaZ-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbA-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbB-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbC-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbD-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbE-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbF-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbG-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbH-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbI-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbJ-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbK-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbL-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbM-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbN-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbO-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbP-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbQ-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbR-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbS-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbT-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbU-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbV-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbW-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbX-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbY-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmbZ-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmcA-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmcB-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmcC-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmcD-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmcE-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmcF-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmcG-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmcH-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmcI-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmcJ-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmcK-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmcL-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmcM-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmcN-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmcO-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmcP-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmcQ-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmcR-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmcS-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmcT-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmcU-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmcV-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmcW-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmcX-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmcY-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmcZ-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmdA-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmdB-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmdC-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmdD-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmdE-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmdF-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmdG-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmdH-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmdI-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmdJ-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmdK-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmdL-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmdM-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmdN-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmdO-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmdP-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmdQ-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmdR-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmdS-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmdT-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmdU-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmdV-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmdW-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmdX-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmdY-0005vi-00 +250 Reset OK +250 OK +250 Accepted +354 Enter message, ending with "." on a line by itself +250 OK id=10HmdZ-0005vi-00 +221 the.local.host.name closing connection