[net.mail] Path problem -- From: vs. Return-Path: data

wmartin@brl-tgr.ARPA (Will Martin ) (09/10/84)

I recently ran into a strange situation with a batch of messages I received
in response to a netnews posting. I had been trying to reply to each
message, thanking the sender for his/her time and info. I then began
receiving MAILER-DAEMON messages from the "hplabs" machine, telling
me that it did not recognize host "uw-beaver". 

I am NOT complaining about hplabs' mailer here -- it was perfectly
correct. For some reason, the "From:" field in the messages I was
replying to had a slight (!) difference compared to the "Return-Path:"
field -- host "tektronix", which should have been between "hplabs"
and "uw-beaver", was in the Return-Path: field, but was NOT in the
"From:" field. So, my host, when generating the reply, created an
address based on the "From:" field, sent it out, and, when it reached
hplabs, instead of "tektronix", that host found the unrecognized
"uw-beaver".

For what it is worth, I am on a 4.2 BSD machine on the MILNET, running
mmdf. Mail from the ARPA/MILNET to USENET, and vice-versa, normally
goes through host seismo in my case.

Here are two examples of the situation, with the message text edited
out. The first message is the one I received, the second my rejected reply:

EXAMPLE # 1:

Received: From Brl-Tgr.ARPA by ALMSA-1 via smtp;  8 Sep 84 16:08 CDT
Received: from css-ring-gw by BRL-TGR.ARPA id a005341; 8 Sep 84 16:59 EDT
Return-Path: <hao!hplabs!tektronix!uw-beaver!cornell!vax135!houxm!mhuxh!smitty@seismo.ARPA>
Received: from hao.UUCP by seismo.ARPA with UUCP; Sat, 8 Sep 84 16:58:50 EDT
Received: by hao (4.12/4.7)
	id AA24664; Sat, 8 Sep 84 14:13:41 mdt
Received: by HP-VENUS id AA05553; Sat, 1 Sep 84 23:38:11 pdt
From: hao!hplabs!uw-beaver!cornell!vax135!houxm!mhuxh!smitty@SEISMO.ARPA
To: wmartin <@SEISMO.ARPA:wmartin@BRL-TGR.ARPA>
Received: from uw-beaver.uucp by tektronix ; 1 Sep 84 18:58:09 PDT
Received: by uw-beaver.arpa (3.346/1.9),	id AA02693; 1 Sep 84 07:16:35 PDT (Sat)
Received: by CORNELL-GVAX.ARPA (4.30/4.30),	id AA12851; Fri, 31 Aug 84 11:34:15 edt
Date: Fri, 31 Aug 84 10:25:06 edt
Message-Id: <8408311425.AA13667@vax135.UUCP>
Subject: Re: Electrical Service Query
In-Reply-To: your article <4318@brl-tgr.ARPA>

******
Text removed here
******

Answer rejected and returned by HPLABS mailer:


Received: From css-ring-gw.ARPA by ALMSA-1 via smtp;  10 Sep 84 14:03 CDT
Return-Path: <hao!hplabs!MAILER-DAEMON@seismo.ARPA>
Received: from hao.UUCP by seismo.ARPA with UUCP; Mon, 10 Sep 84 15:03:26 EDT
Received: by hao (4.12/4.7)
	id AA10659; Mon, 10 Sep 84 11:55:22 mdt
Date:     Mon, 10 Sep 84 9:03:40 CDT
From: Mail Delivery Subsystem <hao!hplabs!MAILER-DAEMON@seismo.ARPA>
Received: by HP-VENUS id AA03018; Mon, 10 Sep 84 07:28:41 pdt
Subject: Returned mail: unknown mailer error 101
Message-Id: <8409101428.AA03018@HP-VENUS>
To: hao!seismo!wmartin@ALMSA-1.ARPA

   ----- Transcript of session follows -----
bad system name: uw-beav
554 uw-beaver!cornell!vax135!houxm!mhuxh!smitty... unknown mailer error 101

   ----- Unsent message follows -----
Received: by HP-VENUS id AA03010; Mon, 10 Sep 84 07:28:41 pdt
Received: by hao (4.12/4.7)
	id AA08404; Mon, 10 Sep 84 08:21:01 mdt
Received: from ALMSA-1 (almsa-1.ARPA) by seismo.ARPA with SMTP; Mon, 10 Sep 84 10:09:09 EDT
Message-Id: <8409101409.AA01355@seismo.ARPA>
Date:     Mon, 10 Sep 84 9:03:40 CDT
From: Will Martin -- DRXAL-RI <hao!seismo!wmartin@ALMSA-1.ARPA>
To: hao!hplabs!uw-beaver!cornell!vax135!houxm!mhuxh!smitty@seismo
Subject:  Re:  Electrical Service Query

******
Text removed here
******

EXAMPLE # 2:

Received: From Brl-Tgr.ARPA by ALMSA-1 via smtp;  8 Sep 84 19:38 CDT
Received: from css-ring-gw by BRL-TGR.ARPA id a007336; 8 Sep 84 20:34 EDT
Return-Path: <hao!hplabs!tektronix!uw-beaver!cornell!vax135!houxm!hou2e!mike@seismo.ARPA>
Received: from hao.UUCP by seismo.ARPA with UUCP; Sat, 8 Sep 84 20:33:47 EDT
Received: by hao (4.12/4.7)
	id AA27048; Sat, 8 Sep 84 17:39:54 mdt
Received: by HP-VENUS id AA05683; Sat, 1 Sep 84 23:40:03 pdt
From: hao!hplabs!uw-beaver!cornell!vax135!houxm!hou2e!mike@SEISMO.ARPA
To: wmartin <@SEISMO.ARPA:wmartin@BRL-TGR.ARPA>
Received: from uw-beaver.uucp by tektronix ; 1 Sep 84 19:00:52 PDT
Received: by uw-beaver.arpa (3.346/1.9),	id AA02719; 1 Sep 84 07:17:33 PDT (Sat)
Received: by CORNELL-GVAX.ARPA (4.30/4.30),	id AA12922; Fri, 31 Aug 84 11:36:26 edt
Date: Fri, 31 Aug 84 11:02:23 edt
Message-Id: <8408311502.AA14035@vax135.UUCP>
Subject: Re: Electrical Service Query
References: <4318@brl-tgr.ARPA>

******
Text removed here
******

Answer returned and rejected by HPLABS mailer:


Received: From css-ring-gw.ARPA by ALMSA-1 via smtp;  10 Sep 84 14:03 CDT
Return-Path: <hao!hplabs!MAILER-DAEMON@seismo.ARPA>
Received: from hao.UUCP by seismo.ARPA with UUCP; Mon, 10 Sep 84 15:03:32 EDT
Received: by hao (4.12/4.7)
	id AA10670; Mon, 10 Sep 84 11:55:44 mdt
Date:     Mon, 10 Sep 84 9:05:04 CDT
From: Mail Delivery Subsystem <hao!hplabs!MAILER-DAEMON@seismo.ARPA>
Received: by HP-VENUS id AA03034; Mon, 10 Sep 84 07:28:54 pdt
Subject: Returned mail: unknown mailer error 101
Message-Id: <8409101428.AA03034@HP-VENUS>
To: hao!seismo!wmartin@ALMSA-1.ARPA

   ----- Transcript of session follows -----
bad system name: uw-beav
554 uw-beaver!cornell!vax135!houxm!hou2e!mike... unknown mailer error 101

   ----- Unsent message follows -----
Received: by HP-VENUS id AA03027; Mon, 10 Sep 84 07:28:54 pdt
Received: by hao (4.12/4.7)
	id AA08417; Mon, 10 Sep 84 08:21:19 mdt
Received: from ALMSA-1 (almsa-1.ARPA) by seismo.ARPA with SMTP; Mon, 10 Sep 84 10:09:21 EDT
Message-Id: <8409101409.AA01361@seismo.ARPA>
Date:     Mon, 10 Sep 84 9:05:04 CDT
From: Will Martin -- DRXAL-RI <hao!seismo!wmartin@ALMSA-1.ARPA>
To: hao!hplabs!uw-beaver!cornell!vax135!houxm!hou2e!mike@seismo
Subject:  Re:  Electrical Service Query

******
Text removed here
******

END OF EXAMPLES

Is this evidence of some bug somewhere which is not updating the path
in "From:" correctly, or does the problem lie elsewhere?

Will Martin

seismo!brl-bmd!wmartin     or     wmartin@almsa-1.ARPA

steveh@hammer.UUCP (Stephen Hemminger) (09/13/84)

The problem is that the mail program at the host ``tektronix'' outputs
mail with both a From: (RFC822 style) and a From line (Uucp style).
The next host down the chain on either side gets this and may or may not
add its name to the From: line.   This problem has been reported to them
and will be fixed.

P.s: we don't run that mail program here.

pag@hao.UUCP (Peter Gross) (09/22/84)

The problem everyone has been complaining about -- "From: " lines
out of sync with "From " lines and resulting dropped sites from
paths -- is NOT (repeat, NOT) due to a sendmail problem.  I previously
posted a fix for this.  It is a mal-design in Berkeley 4.2 Mail.
The problem is that when mail passes through a 4.2 mail system
it always uses the From: " line if present.  But System V systems
ignore it and add their own sitename only to the "From " line.
Then when a 4.2-er does an "r[eply]" in Mail it constructs the return path
from the "From: " line which may be missing some of the sites.
The fix is simple -- force Mail to use the "From " line in preference
to the "From: " line.  This works fine for uucp-only (ie non-ARPA) sites.
I haven't thought about implications for Internet sites.  It may still
work fine there too.

--peter gross
hao!pag

The changes:
1.  Add "-DIGNOREFROM" to the OPTIONS line in the Makefile
2.  changes to cmd3.c and aux.c (in src/ucb/Mail):
*** /tmp/,RCSt1007362	Fri Sep 21 18:29:19 1984
--- cmd3.c	Sat Jun 23 15:42:49 1984
***************
*** 1,5
  #ifndef lint
! static char *sccsid = "@(#)cmd3.c	2.14 (Berkeley) 8/11/83";
  #endif
  
  #include "rcv.h"

--- 1,5 -----
  #ifndef lint
! static char *rcsid = "$Header: cmd3.c,v 2.15 84/06/23 15:41:47 pag Exp $";
  #endif
  
  #include "rcv.h"
***************
*** 9,14
   * Mail -- a mail program
   *
   * Still more user commands.
   */
  
  /*

--- 9,20 -----
   * Mail -- a mail program
   *
   * Still more user commands.
+  *
+  * $Log:	cmd3.c,v $
+  * Revision 2.15  84/06/23  15:41:47  pag
+  * Added IGNOREFROM conditional code to keep responses from using a
+  * possibly incomplete "From:" header
+  * 
   */
  
  /*
***************
*** 205,210
  	cp = skin(nameof(mp, 1));
  	if (cp != NOSTR)
  	    rcv = cp;
  	cp = skin(hfield("from", mp));
  	if (cp != NOSTR)
  	    rcv = cp;

--- 211,217 -----
  	cp = skin(nameof(mp, 1));
  	if (cp != NOSTR)
  	    rcv = cp;
+ #ifndef IGNOREFROM
  	cp = skin(hfield("from", mp));
  	if (cp != NOSTR)
  	    rcv = cp;
***************
*** 208,213
  	cp = skin(hfield("from", mp));
  	if (cp != NOSTR)
  	    rcv = cp;
  	replyto = skin(hfield("reply-to", mp));
  	strcpy(buf, "");
  	if (replyto != NOSTR)

--- 215,221 -----
  	cp = skin(hfield("from", mp));
  	if (cp != NOSTR)
  	    rcv = cp;
+ #endif IGNOREFROM
  	replyto = skin(hfield("reply-to", mp));
  	strcpy(buf, "");
  	if (replyto != NOSTR)
***************
*** 673,678
  	for (s = 0, ap = msgvec; *ap != 0; ap++) {
  		mp = &message[*ap - 1];
  		dot = mp;
  		if ((cp = skin(hfield("from", mp))) != NOSTR)
  		    s+= strlen(cp) + 1;
  		else

--- 681,687 -----
  	for (s = 0, ap = msgvec; *ap != 0; ap++) {
  		mp = &message[*ap - 1];
  		dot = mp;
+ #ifndef IGNOREFROM
  		if ((cp = skin(hfield("from", mp))) != NOSTR)
  		    s+= strlen(cp) + 1;
  		else
***************
*** 676,681
  		if ((cp = skin(hfield("from", mp))) != NOSTR)
  		    s+= strlen(cp) + 1;
  		else
  		    s += strlen(skin(nameof(mp, 2))) + 1;
  	}
  	if (s == 0)

--- 685,691 -----
  		if ((cp = skin(hfield("from", mp))) != NOSTR)
  		    s+= strlen(cp) + 1;
  		else
+ #endif IGNOREFROM
  		    s += strlen(skin(nameof(mp, 2))) + 1;
  	}
  	if (s == 0)
***************
*** 684,689
  	head.h_to = cp;
  	for (ap = msgvec; *ap != 0; ap++) {
  		mp = &message[*ap - 1];
  		if ((cp2 = skin(hfield("from", mp))) == NOSTR)
  		    cp2 = skin(nameof(mp, 2));
  		cp = copy(cp2, cp);

--- 694,700 -----
  	head.h_to = cp;
  	for (ap = msgvec; *ap != 0; ap++) {
  		mp = &message[*ap - 1];
+ #ifndef IGNOREFROM
  		if ((cp2 = skin(hfield("from", mp))) == NOSTR)
  #endif IGNOREFROM
  		    cp2 = skin(nameof(mp, 2));
***************
*** 685,690
  	for (ap = msgvec; *ap != 0; ap++) {
  		mp = &message[*ap - 1];
  		if ((cp2 = skin(hfield("from", mp))) == NOSTR)
  		    cp2 = skin(nameof(mp, 2));
  		cp = copy(cp2, cp);
  		*cp++ = ' ';

--- 696,702 -----
  		mp = &message[*ap - 1];
  #ifndef IGNOREFROM
  		if ((cp2 = skin(hfield("from", mp))) == NOSTR)
+ #endif IGNOREFROM
  		    cp2 = skin(nameof(mp, 2));
  		cp = copy(cp2, cp);
  		*cp++ = ' ';
-----------------------
*** /tmp/,RCSt1007356	Fri Sep 21 18:28:38 1984
--- aux.c	Sat Jun 23 15:41:13 1984
***************
*** 1,5
  #ifndef lint
! static char *sccsid = "@(#)aux.c	2.11 (Berkeley) 8/11/83";
  #endif
  
  #include "rcv.h"

--- 1,5 -----
  #ifndef lint
! static char *rcsid = "$Header: aux.c,v 2.12 84/06/23 15:39:54 pag Exp $";
  #endif
  
  #include "rcv.h"
***************
*** 10,15
   * Mail -- a mail program
   *
   * Auxiliary functions.
   */
  
  /*

--- 10,21 -----
   * Mail -- a mail program
   *
   * Auxiliary functions.
+  *
+  * $Log:	aux.c,v $
+  * Revision 2.12  84/06/23  15:39:54  pag
+  * Added IGNOREFROM conditional code to keep responses from using the
+  * incomplete "From:" header
+  * 
   */
  
  /*
***************
*** 616,621
  	register FILE *ibuf;
  	int first = 1;
  
  	if ((cp = hfield("from", mp)) != NOSTR)
  		return(cp);
  	if (reptype == 0 && (cp = hfield("sender", mp)) != NOSTR)

--- 622,628 -----
  	register FILE *ibuf;
  	int first = 1;
  
+ #ifndef IGNOREFROM
  	if ((cp = hfield("from", mp)) != NOSTR)
  		return(cp);
  	if (reptype == 0 && (cp = hfield("sender", mp)) != NOSTR)
***************
*** 620,625
  		return(cp);
  	if (reptype == 0 && (cp = hfield("sender", mp)) != NOSTR)
  		return(cp);
  	ibuf = setinput(mp);
  	copy("", namebuf);
  	if (readline(ibuf, linebuf) <= 0)

--- 627,633 -----
  		return(cp);
  	if (reptype == 0 && (cp = hfield("sender", mp)) != NOSTR)
  		return(cp);
+ #endif IGNOREFROM
  	ibuf = setinput(mp);
  	copy("", namebuf);
  	if (readline(ibuf, linebuf) <= 0)