[8488] in Athena Bugs

home help back first fref pref prev next nref lref last post

rt 7.3M: mh

daemon@ATHENA.MIT.EDU (Marc Horowitz)
Mon Oct 28 02:59:55 1991

To: bugs@Athena.MIT.EDU
Date: Mon, 28 Oct 91 02:59:46 EST
From: Marc Horowitz <marc@Athena.MIT.EDU>

System name:		portnoy
Type and version:	RTPC-ROMPC 7.3M (1 update(s) to same version)
Display type:		apa16

What were you trying to do?
	send mail	

What's wrong:
	mh doesn't know how to parse continuations properly.
Unrelated, but discovered during testing, post(8) doesn't always do
what you ask it to.  Examples:

<6> portnoy:~> cat /tmp/draft
To: mwm_user <marc@mit.edu>
Subject: example 1

example one.
<7> portnoy:~> post -verbose -watch /tmp/draft
 -- Posting for All Recipients --
  marc@mit.edu: address ok
marc@mit.edu... Connecting to athena.mit.edu (ether)...
220 Athena.MIT.EDU Sendmail, or BOBO? 5.61/1.2 ready at Mon, 28 Oct 91 02:49:24 EST
>>> HELO portnoy.MIT.EDU
250 Athena.MIT.EDU Hello portnoy.MIT.EDU, pleased to meet you
>>> MAIL From:<marc>
250 <marc>... Sender ok
>>> RCPT To:<marc@mit.edu>
250 <marc@mit.edu>... Recipient ok
>>> DATA
354 Enter mail, end with "." on a line by itself
>>> .
250 Ok
>>> QUIT
221 Athena.MIT.EDU closing connection
marc@mit.edu... Sent
 -- Recipient Copies Posted --
Message Processed
<8> portnoy:~> cat /tmp/draft
To: mwm_user
	<marc@mit.edu>
Subject: example 1

example one.
<9> portnoy:~> post -verbose -watch /tmp/draft
 -- Posting for All Recipients --
  mwm_user: address ok
  marc@mit.edu: address ok
mwm_user,marc@mit.edu... Connecting to athena.mit.edu (ether)...
marc@mit.edu,mwm_user... Sent
 -- Recipient Copies Posted --
Message Processed


What should have happened:

	mh should be reimplemented from scratch.  The code is a
festering lump of donkey droppings.  I'd rather read Vogon poetry.

	In the second case, mail should not have been sent to
mwm_user, since mwm_user should have been interpreted as a piece of
the address.  In addition, the transcript of the SMTP transaction was
omitted.  Why?  

From RFC822:

     				    This makes the usual form of lists
     very easy; a rule such as '(element *("," element))' can be shown
     as  "1#element".

     To aid in the creation and reading of structured  fields,  the
     free  insertion   of linear-white-space (which permits folding
     by inclusion of CRLFs)  is  allowed  between  lexical  tokens.

and a few syntax specs:

     destination =  "To"          ":" 1#address  ; Primary

     address     =  mailbox                      ; one addressee

     mailbox     =  addr-spec                    ; simple address
                 /  phrase route-addr            ; name & addr-spec

     route-addr  =  "<" [route] addr-spec ">"

     route       =  1#("@" domain) ":"           ; path-relative

     addr-spec   =  local-part "@" domain        ; global address

     local-part  =  word *("." word)             ; uninterpreted
                                                 ; case-preserved

     word        =  atom / quoted-string

     domain      =  sub-domain *("." sub-domain)

     sub-domain  =  domain-ref / domain-literal

     domain-ref  =  atom                         ; symbolic reference

     domain-literal =  "[" *(dtext / quoted-pair) "]"

     atom        =  1*<any CHAR except specials, SPACE and CTLs>

In summary :-), the whitespace between "mwm_user" and "<" should
have been interpreted as inter-token space between phrase and
route-addr in the mailbox non-terminal, not as a list delimiter in the
destination non-terminal.

Also (and testing this would be anti-social :-), it seems that "send
/tmp/draft" also sends whatever message is in ~/Mail/draft.  This
isn't document, and isn't intuitive.

Please describe any relevant documentation references:
	RFC822, post(8), send(8)

home help back first fref pref prev next nref lref last post