lear@NET.BIO.NET (Eliot Lear) (12/12/88)
I have always believed that the general rule for implementations is that they should expect the least from other implementations, and be as robust as possible, as far as conformance to a given RFC is concerned. With that thought in mind, I have a question for TCP-IP implementors who have done SMTP implementations. Given a permanent error condition and that you control SMTP server code, which do you believe to be the better action? [a] Immediately have a server respond with an error to the SMTP client leave the client to report the error. [b] Receive the message and report the error directly to the sender. Solution [a] is the straight forward method which programs such as most incarnations of sendmail use. I know of at least one implementation that has used solution [b] in the past. The reason for using solution [b] is that I would not have to rely on any other implementation to properly dispose of the error. I have heard of at least one implementation that considered a particular permanent error response as temporary, and the fact that it was blatantly wrong didn't stop it from continually retrying our host. Using solution [b] eliminates such bizarre cases, but places honus of error handling on the server. What's your opinion? -- Eliot Lear [lear@net.bio.net]
cfe+@andrew.cmu.edu (Craig F. Everhart) (12/13/88)
I like [a] better (give an SMTP error rather than accept a piece of mail for later rejection). If you're most interested in tolerating a system that doesn't interpret your error codes, maybe you can narrow how you read the specification so that the error code you generate will be one that the remote system will interpret the way you want (as a permanent error). If the system in question won't interpret anything as a permanent error, this mechanism won't help much. One of the good reasons for preferring [a] when possible is that it gives faster error turnaround to the user, not to mention causing less overhead for your system because it doesn't have to handle composition, enqueueing, and delivery of the error message piece of mail. The significant reason for preferring [b], other than the reason you give of confused SMTP-user ends, is that if you always accept mail for later delivery, the SMTP-user end doesn't have to wait around while you check for the permanent-failure condition in question. Craig Everhart