Tk Library Source Code

View Ticket
Login
Ticket UUID: 528287
Title: Explodes for 'From: <>'
Type: Bug Version: None
Submitter: nobody Created on: 2002-03-10 23:57:37
Subsystem: smtp Assigned To: mrose
Priority: 5 Medium Severity:
Status: Closed Last Modified: 2002-03-19 02:25:32
Resolution: Invalid Closed By: andreas_kupries
    Closed on: 2002-03-18 19:25:32
Description:
I have some code to replicate a pop3 box by downloading
it
and resending it to N other popboxen via SMTP.

Care is taken to pass the message thru "as is",
from headers to MIME body.

Running it against a real-world pop that had 14Mb of
email,
it blew up on the RFC valid "bounce" syntax of 'From:
<>'.

----

-header {Date {Wed, 20 Feb 2002 20:34:04 -0400 (EDT)}} 
\
-header {From <>}  \
-header {Subject {Home Based Employment - No Selling}} 
\
-header {Bcc {}}  \
-header {Message-id <805913@635096>}  \
 '.
error in From: expecting mailbox in local-part (found
>)
    while executing
"error "error in $who: $aprops(error)""
    (procedure "smtp::sendmessage" line 144)
    invoked from within
"smtp::sendmessage $part -servers vpop1.superb.net  
-recipients
[redacted]@orwellian.org,[redacted]@orwellian.org
-header {Return-path <>}  \
-header {..."
    ("eval" body line 1)
    invoked from within
"eval $Build_SMTP"
    (procedure "Main" line 57)
    invoked from within
"Main
"
    (file "./Multiplier.tcl" line 130)
Exit 1
User Comments: andreas_kupries added on 2002-03-19 02:25:32:
Logged In: YES 
user_id=75003

The original documentation (README.*) is part of the 
module. It is not installed however. The manpages for smtp 
and mime are directly derived from these documents.

mrose added on 2002-03-18 22:19:16:

File Added - 19569: README.html

Logged In: YES 
user_id=24077

> There is a dearth of documentation or real world
> examples associated with packages smpt, mime.

when i wrote the original mime/smtp package, there was 
some documentation that went with it. i don't know why/how 
the document got lost. i'll attach it.

> What is the exact output result when using
> the different options? Where is a discussion
> of header vs. envelope? Why can't some options
> be set in the header vs. envelope?

i don't understand the question...

to answer your two most important questions:

1. you use -canonical when you are supplying the raw data 
for a mime body part; if -canonical isn't given, then the 
input is an 822-formatted message.

2. to get the behavior you want, try:

smtp::sendmessage $mimeT -originator "" \
-header {Resent-From ...} \
-header {Resent-To ...}


> Why do these packages twiddle with the upper/lower
> case of some of the header params submitted by the user?

in the early days, some software didn't format messages 
when it displayed for the user. people who used that 
software would complain if the headers didn't look 
"right"... so, those of us who were writing some mail 
software in those days decided to make the headers look 
pretty.

mrose added on 2002-03-15 13:26:27:
Logged In: YES 
user_id=24077

the packages work just fine. they handled hundreds of 
messages a day for me. 

put the original message in a mimeToken and use -header 
{Resent-From ...} -header {Resent-To ...}

if you think it is still broken, then reply with a tcl 
script that demonstrates the problem.

/mtr

ps: "<>" is not a valid address. it is used in SMTP to 
indicate an empty return address.

andreas_kupries added on 2002-03-15 09:17:07:
Logged In: YES 
user_id=75003

Reopened and given to original author of the two packages.

nobody added on 2002-03-15 05:59:20:
Logged In: NO 

[email protected] replies...

Maybe it's me, or maybe there are almost zero
examples of how to do non-trivial things with
these two packages, smtp and mime, but I still
don't know how to accomplish what I said I was
doing using the reply just given.

I said I was replicating popboxen, headers and body,
when remailing them.

I am now not only getting four extra "Resent" headers
using this method, I still can't get the SMTP FROM <>
equivalent which would set "Return-Path: <>". That's
when I pass the whole msg in the mime part, and
set the Resent-From to the address of the originating
popboxen.

Then I tried:

Resent-From seems to set the Return-Path, but
when I tried to set that to <> for replication purposes,
it blew up with the same error msg as originally reported:

error in Resent-From: expecting mailbox in local-part (found
>)

Failure to replicate.

Any other ideas, or can't these packages do it?

andreas_kupries added on 2002-03-13 14:59:54:
Logged In: YES 
user_id=75003

I talked to Marshall Rose, the creator of
the "mime" and "smtp" packages and he explains
that there is a difference between the *envelope*
SMTP stuffs a mail with, and the headers in
the mail itself. In the envelope the "MAIL FROM"
command/directive may contain the bounce syntax,
i.e. <>. The headers of the mail may not.

The following is an excerpt of Marshall's mail to
me. Given this I am closing the report now.

~~~~~~~~~~~~~~~~~~~~~~~
In SMTP, you can do

MAIL FROM:<>

which indicates that the *envelope* has no return address.

in 822, if a header requires an address, you can do one of

[email protected]
Fred Flintstone <[email protected]>
<[email protected]>

the last case isn't legal according to 822, but an early
sendmail
generated addresses like that, so everyone updated their
parsers to
deal with it. the mega-revision to 822, RFC 2822, explicitly
allows
the third case.

Regardless, what the submitter is trying to do is fine, but
they're
doing it the wrong way. here's the right way to do it

# put the ENTIRE message into $mimeT

smtp::sendmessage $mimeT \
  -header {Resent-From [email protected]} \
  -header {Resent-To [email protected]} \
  -header {Resent-To [email protected]}  ...

which says to resend the entire message using the envelope
presented
in the arguments.

Attachments: