[8488] in Athena Bugs
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)