Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!utgpu!water!watnot!watmath!clyde!rutgers!ames!ucbcad!ucbvax!HERMES.AI.MIT.EDU!dms From: dms@HERMES.AI.MIT.EDU.UUCP Newsgroups: mod.protocols.tcp-ip Subject: When to acknowledge SMTP messages Message-ID: <8702271841.AA15482@hermes.ai.mit.edu> Date: Fri, 27-Feb-87 13:41:34 EST Article-I.D.: hermes.8702271841.AA15482 Posted: Fri Feb 27 13:41:34 1987 Date-Received: Sun, 1-Mar-87 11:09:40 EST References: <8702270047.AA17154@ucbarpa.Berkeley.EDU> Sender: daemon@ucbvax.BERKELEY.EDU Distribution: world Organization: The ARPA Internet Lines: 33 Approved: tcp-ip@sri-nic.arpa Date: Thu, 26 Feb 87 16:47:02 PST From: jordan@ucbarpa.berkeley.edu (Jordan Hayes) Organization: Experimental Computer Facility (XCF), UC Berkeley Kevin Crowston writes: I decided that the client SMTP would have to wait while the relay delivered the message. Otherwise, the relay could acknowledge the message and then crash or discover that the destination mail server was unable to take the message. Sendmail seems to handle this correctly, since "delivered" to that part of the code means "placed in the queue" (i.e., wrote it to disk ... if the machine then crashes, the daemon will pick up where it left off since the queue file is still there) -- you can't acknowlege the message as being sent before you have firm control of it. That's what lock-step is all about. Once you have done that, if you find later that you can't deliver it, it's up to the recipient SMTP process to send it back to where it came from. This can be handled asynchronously. /jordan Actually, sendmail doesn't handle this completely correctly. Before sendmail queue's up a message, and gives the acknowledgment back to the sender, it attempts to expand every address in a mailing list. This expansion can take a long time, since it means a call to the resolver to qualify host names. So, messages sent to large mailing lists take a long time to get queued up. What sendmail should be doing is writing out a very simple queue file with the un-expanded receipients. The background delivery process should do the expansion the first time it comes across an un-expanded address.