[net.mail.headers] smtp, errors and delivery

Rudy.Nedved@CMU-CS-A.ARPA (03/05/84)

A large number of sites seem to handle "mail from:" command errors by
issuing the command "mail from:<>" as the next command. Considering
that alot of mail is forwarded and that any mail with a null return
is "droppable" if an error occurs, I don't think this is a wise way
of handling "mail from" errors for the user will not get an error
message. The following is an example of this code:

220 CMU-CS-A.ARPA TOPS-10 SMTP server ready 1C(50)-2
HELO bazola
250 CMU-CS-A.ARPA
MAIL FROM:<frodo.baggins@bonzo_land>
500 malformed local host name 'bonzo_land', for line 'MAIL FROM:<frodo.baggins@bonzo_land>'.
MAIL FROM:<>
250 Mail okay.
RCPT TO:<Joe.Smoe@cmu-cs-a>
250 Rcpt okay.
DATA
354 Ready for mail.
250 Mail completed.
QUIT
221 CMU-CS-A.ARPA TOPS-10 SMTP service terminating

I can understand that the code was probably installed duringthe tcp
transition days when alot of smtp servers were still "buggy" but I
can not see a reason for it now. Is there some other reason or should
I send mail to sites that have this "old code" installed?

Thanks,
-Rudy

MRC@SU-SCORE.ARPA (Mark Crispin) (03/05/84)

Rudy -

     The TOPS-20 SMTP sender (part of MMailr) is one of those SMTP
senders who will send a MAIL FROM: with a null argument if the SMTP
server rejects the command.  This is to maximize what chance the
message has of getting through.  I think that this is completely
within reasonable fault-tolerance procedures.

     I will resist any pressure to change it, until and unless CMU
is willing to undertake the responsibility of reliably delivering
any and all mail originating from any and all TOPS-20 systems on
the Internet.

-- Mark --
-------

Rudy.Nedved@CMU-CS-A.ARPA (03/05/84)

Mark,

I didn't even know that TOPS-20 was in the crowd of people doing
this way of handling rejected "mail from" commands. It looks
like it is a defacto standard then since Unix, ITS and TOPS-20
do it.

I don't understand why people use this mechanism if they want
their users to have their mail delivered or get an error
message back. I consider the risk too high to take the
chance with using a null-return or no-return path....sigh.

Maybe it is the case that these same systems parse the headers
if they don't have a return-path and try to use the address??
If so the picture doesn't seem so bleak afterall.

Well back to work....I not going to bug anyone except for
people around CMU.

-Rudy

don.provan@CMU-CS-A.ARPA (03/05/84)

Rudy,
	Look at your example: your mailer is all set to reject the
mail altogether because it doesn't like "bonzo_land".  How can you
be upset about the remote mailer sending you a blank field?  Its
first priority is to get the mail delivered.  If you're going to
reject the only from address it has, what else can it do?  You aren't
going to return an error message there anyway.
	I don't really understand why mail receivers are parsing this
field so carefully, anyway.  I've had several sites i couldn't get mail
to because they tried to parse '"Provan Don%c"@LLL-MFE' and couldn't,
so they rejected the mail.  Its bad enbough that they can't parse
it, but to reject some mail because a field that shouldn't ever
get used can't be parsed is silly.  I wasn't smart enough to think
of sending an empty address if it wouldn't take my real address,
but now that it's been suggested, I think I'll add it.
	Frankly, I think the only legal error to a mail command
should be "too busy to send mail now."  I don't think it makes
sense to reject it because of a syntax error.

MRC@SU-SCORE.ARPA (Mark Crispin) (03/06/84)

Rudy -

     The problem is that it is a "de facto standard" to reject
MAIL FROM: commands for the slightest bogosity (even if the
bogon turns out to be at the SMTP server's end!).  A number of
SMTP servers reject a-d-l's, for example.  Still others reject
mail from "unknown hosts" when the problem is that the SMTP
server's host table is out of date.  Yet another problem is
that many (most?) SMTP servers reject bracketed host names.
There are a number of "nameless" TOPS-20s which talk TCP/IP
and use their bracketed address forms as a name (e.g. [1.2.3.4]).
This is valid according to the standard and TOPS-20 fully
implements it, but try convincing a large number of SMTP
servers of that!!

     I won't even go into the details of how to reply or return
messages in these cases (other than "implement the standard").

-- Mark --
-------

MRC@SU-SCORE.ARPA (Mark Crispin) (03/06/84)

Don -

     I take the middle ground.  I think it is completely alright
to reject a MAIL FROM command because of a syntax error PROVIDED
that the syntax parser COMPLETELY implements the standard.  That
includes:
 . all forms of quoting
 . source path route lists
 . bracketed or #'d host addresses in lieu of host names

     Very few SMTP servers do.  I believe TOPS-20's SMTP server
does (if it doesn't, it's a bug because all the code is there).

     I don't think an SMTP server should try to validate a host
name in a MAIL FROM command other than checking it for syntactical
validity.  RCPT TO: is a different matter entirely.

-- Mark --
-------

solomon@wisc-crys.ARPA (Marvin Solomon) (03/06/84)

I can't resist putting in my two bits.

An important principle in mail systems is the notion of
responsibility.  If we want reliable mail systems, then we should
design them so that throughout a message's lifetime, there is always
some module responsible for it.  When a server SMTP accepts a message,
it is taking responsibility for that message.  If for some reason it
can't deliver the message to the recipient, it has the responsibility
to return it to the sender.  If it has reason to believe that it is
being asked to accept a piece of mail that will be unreturnable, it has
every right (indeed duty) to reject it.  Otherwise, it may end up with
no alternative but to drop the message on the floor--the very worst thing
to do in any mail systems.

The old BBN SMTP server (used with many Berkeley 4.1 UNIX systems) got
a lot of flack (righly) for being too promiscuous in what it would accept;
it would take just about anything, and figure out later what to do about
it:

	MAIL FROM: !random@@garbage?
	250 Fine and dandy
	RCPT TO: >you got to be kidding>
	250 You betcha
	DATA
	blah blah blah
	.
	250 Yes sir boss!

I would much rather see mail bounce back to the sender if something
goes wrong, than to have it flush down a black hole.  If the server doesn't
like the MAIL FROM address, the sender should take the rejection gracefully,
and inform the sender that something is wrong.  The sender (if he is a
naive user) will yell at his mail system maintainer, who will see what's
wrong and fix it.  The idea of substituting "Postmaster" has a lot
to recommend it, but if that's rejected (perhaps because it's the host name,
not the local part, that's at issue), the sender shouldn't cram the mail
down the receiver's throat.  Null return addresses should only be used for
the error messages themselves.

If many (most?) SMTP servers are broken, they should be fixed, not coded
around by breaking the senders as well.

don.provan@CMU-CS-A.ARPA (03/06/84)

Mark,
	Why should you ever reject it because of a bogus Mail From field?
All you do by that is make sure the receiver doesn't get the mail.  Of all
the parties involved, the receiver is the one that can't possibly be at
fault, so why limit the sevice you provide him?  I agree that bells and
wistles should go off all over the place, but not at the expense of delivery.

dpk@brl-vgr.ARPA (Doug Kingston) (03/06/84)

	There are two different philosophies being used here.  One says
"Deliver the message at all costs", while the other says "Make a reliable
deliver, or return it".  The first is the method used by people that
will give you a null return addresss (MAIL FROM:<>) while the second is
the more conservative stratagy and gives you a better guarantee that you
will know that the message was delivered (or not).  MMDF (the system I
maintain) is a more conservative mailer.  We rigorously adhere to the
transfer of responsibility model and we always give a return address
(even it is the postmaster address).  We do not attempt to supply alternate
MAIL FROM addresses, and as it turns out we now almost never get rejections
based on the MAIL FROM address.  This was not true when the net first
changed protocols though.

	Mark and others are not wrong in what they are doing, it just
shows a difference in priorities.

					Cheers,
						-Doug-

Rudy.Nedved@CMU-CS-A.ARPA (03/06/84)

don,

The problem is that large number of sites including CMU's Unix machines relay
mail to another site and do not include their name in the return path. In the
example I gave the sender was something like "bazola" and it was NOT in the
mail from: line. The return path of
	"@bazola:<user>@bonzo_land"
will work in the CMU-CS-A server (independent of whether it is in the host
table) and so will
	"@[78.7.8.9]:<user>@bonzo_land"
but since my mail system knows that hosts that are in the local domain have
names that contain the character set A-Z and period it rejects the mail. The
reason behind this was I was getting some real bizarre garbage host names that
sometimes look like data or internal queueing data from the remote host. I
suspect that a large chunk of mail systems can not handle funny characters that
"happen" to be the queue file delimiter....like our Unix machines using colons
can not simply insert the return path into the queue file...some conversion has
to be done.

The other problem I have seen is that if I add the connected site name to the
return path if it is not there then when the mail is rejected, the site I did
this service for rejects the error notifcation.

I think what I will do now is change the mail server so that it adds the
connecting site host name (or address) and if an error occurs it tries to send
it back to the correct address and if that fails it replaces the address with
Postmaster@<original connecting site>.

As Doug Kingston has pointed out...we have two design philosphys in the mail
world....I didn't realize this before and I am glad I sent mail asking before
starting to shoot at sites that are different.

My apology for the length of this message.

-Rudy

RICH.GVT@OFFICE-3.ARPA (Rich Zellich) (03/06/84)

Re the mention of two different philosophies:  Remember, please, that there is 
an authentication issue involved, too.  Perhaps the "deliver at all costs" 
philosophy should quietly begin disappearing (at least in the MilNet 
environment), since there is a very large, and growing, community of users using
mail for business purposes as well as the older uses for technical (and social) 
purposes.

-Rich

steve@brl-bmd.UUCP (Stephen Wolff) (03/06/84)

>	Perhaps the "deliver at all costs" philosophy should quietly begin
>	disappearing (at least in the MilNet environment) .........

Why the (apparent) double standard?  MILNET people don't NEED reliable mail
service?  Or at least not if `business' (commercially) related?  Can you
explain, please?  I'm puzzled.
				-steve

farber@udel-ee.arpa (Dave Farber) (03/06/84)

As some one who has run an experimental mail relay for the
Military for many years (!!), let me assure all that they
NEED reliable mail and deliver at any cost. You every see
a red faced 4 star?

Dave

ps Steve, I know you know. It should be to: Rich, copy you.

gross@dcn7.ARPA (03/06/84)

I'm also in favor of phasing out the 'deliver at all costs' philosophy
since it can cause as many problems as it solves.  Are there any
counterbalancing arguments out there?  Why leave Milnet out?

Phill 

-------

wcwells%ucbopal.CC@Berkeley.ARPA (William C. Wells) (03/08/84)

Military message systems operate on three basic principles: reliability,
speed, and security. Of the three, "reliability is paramount".
I think you will find that an electronic mail system that permits
messages to "drop into a black hole" will not be acceptable for
Defense Data Network (ie. MILNET) use.

Mail transport agents should be responsible for ensuring the FROM in
SMTP and the "From" in the mail header are correct both when received
and when transmitted.  This may require that gateway mail transport
agents modify the address when the message is transmitted by a gateway
into a different mail domain or mail system.  For non-Internet mail
addresses, this means transforming the address into an address that is
acceptable to the Internet world.  It may mean adding  the source
"route" (eg. @host.domain:) of the gateway mail transport agent to the
front of the From address, or changing the address into the form:

   "off-net-address"@mail-gateway-id.registered-top-domain-name

where the address to the right of the "@" sign is a valid Internet
mail domain name.

Receiving mail transport agents should check the FROM field, if the
syntax is correct, but the domain name is not, then they should add
the domain name of the sending mail transport agent to the front of
the source "route" in the address to ensure a reply path. --- Hmmmm.
That would imply the addresses of the form:

   <@mail-gate.Internet-top-domain:local-address@hostid.non-ARPA-domain-name>

for example:

   <@mail-relay.ARPA:userid@hostid.local-netid>

should be legal within the Internet mail world. That is, if the
first domain-name in the source "route" is known and valid within the
current mail domain, and the syntax of the address is correct,
then the address should be accepted by the receiving mail transport
agent.

Bill Wells, Computing Services, UC Berkeley
wcwells@Berkeley.ARPA or ...!ucbvax!wcwells