>
> Oh dear, I'm getting into an RFC debate. Looks like the problem won't go away.
You're onto a loser if you're discussing RFCs with someone who can make a
bizarre statement like:
> > E: RCPT ;Recipient details & path e-mail has travelled (basically the
> e-mail header)
which could only be made by someone with no real understanding of SMTP.
You've been firewalled.
I notice nobody has pointed out that this very problem has arisen on the
list before: I think Nigel Metheringham came up against Tobit and got the
same 'our software is used by hundreds of sites and can't possibly be
wrong' attitude.
Apart from the 'zero or more transactions' quote from RFC 821, note this from
RFC 1123 (host requirements):
When the same message is to be delivered to several users on
the same host, only one copy of the message SHOULD be
transmitted. That is, the sender-SMTP should use the
command sequence: RCPT, RCPT,... RCPT, DATA instead of the
sequence: RCPT, DATA, RCPT, DATA,... RCPT, DATA.
Implementation of this efficiency feature is strongly urged.
In other words, if exim wants to send a message to a@??? and b@???
it should do:
mail from:<sender@???>
rcpt to:<a@???>
rcpt to:<b@???>
data
body
.
quit
rather than:
mail from:<sender@???>
rcpt to:<a@???>
data
body
.
mail from:<sender@???>
rcpt to:<b@???>
data
body
.
quit
Fine, it will. But note that the latter is *permitted* (as indicated by
the use of the word 'should' rather than 'must', these words having very
precise meanings in the RFC world). Ignore the fact that this is talking
about delivery of a single message to multiple recipients: it obviously
implies that a 'sender-SMTP' implementation is allowed to send more than
one message per connection.
It seems to me that David Postman fails the familiar Robustness Principle:
"be liberal in what you accept, and conservative in what you send". It's
perfectly clear what exim is trying to do, so why not accept it? But
the bottom line is that it has a clear bug: it is delivering the DATA to
someone other than a recipient named in the appropriate RCPT command.
If it's not prepared to accept more mail after the end of the first DATA,
it should give error responses.
I just did a test, with interesting results (addresses changed in the
following log, of course):
$ telnet mail.tobit.com smtp
Trying 62.52.80.126...
Connected to mail.tobit.com.
Escape character is '^]'.
220 mail.tobit.com Service ready by David PostMan (Tobit Software, Germany)
helo central.ulcc.ac.uk
250 mail.tobit.com Hello central.ulcc.ac.uk, pleased to meet you
mail from:<bounceme@???>
250 <bounceme@???>... Sender ok
rcpt to:<nosuchuser1@???>
250 <nosuchuser1@???>... Recipient ok
data
354 Start mail input, end with <CRLF>.<CRLF>
From: bounceme@???
To: nosuchuser1@???
Date: Thu, 5 Nov 1998 11:53:00 +0000
Subject: Test message
This is a test message to see how David Postman handles multiple
recipients per SMTP connection
.
250 Message accepted for delivery
mail from:<bounceme@???>
250 <bounceme@???>... Sender ok
rcpt to:<nosuchuser2@???>
250 <nosuchuser2@???>... Recipient ok
data
354 Start mail input, end with <CRLF>.<CRLF>
From: bounceme@???
To: nosuchuser2@???
Date: Thu, 5 Nov 1998 11:53:00 +0000
Subject: Test message
This is a test message to see how David Postman handles multiple
recipients per SMTP connection
.
250 Message accepted for delivery
quit
221 mail.tobit.com Service closing transmission channel
Notice all the nice '250' responses. I won't know what happened to the
message unless I get a reply, of course.
--
Malcolm Ray University of London Computer Centre
--
*** Exim information can be found at
http://www.exim.org/ ***