On 8/21/20 10:11 PM, Caveman Al Toraboran wrote:
not a major point but just to clarify a thing.
i think it's unfair to look at SMTP as a single thing that compares 
against HTTP*.  because while HTTP* is a single-ish thing, SMTP is 
several things.  i.e. SMTP is at least 2 parts:
Fair point.

As I see it, we have two things; 1) what is transferred (email message) and 2) how it is transferred (SMTP, UUCP, etc.).
1. resource exchange layer where people are defined as some kind of URL (e.g. n...@dom.zone) and attachments are base64-ed text balls referred to by some numbers in RFC822.
That sounds like the "what is transferred" to me.

As in the opaque value of the sender / recipient / body / attachments. It does not matter what the contents of those opaque values are. They make up what is transferred.
This part overlaps with HTTP*.  let's call this "RESXCH_SERVER".
HTTP(S) can overlap with the "how" part of the transfer.

But I believe that the HTTP(S) "how" part is independent of the opaque blob part of "what".
2. the part where it defines how to process the exchanged resources (e.g. safe storage, routing, etc). this part is beyond HTTP*'s scope, and is the "web app" scope. let's call this "RESUSE_SERVER"
Okay.

of course, email still doesn't work with those 2 parts, because you need a way to get mails to your email client, so you end up using POP or IMAP. now, this --itself-- is also two parts:
That is highly dependent on your email client.  Many traditional Unix 
email clients read email directly off the file system of the email server.
In fact, most POP3(S) and IMAP(S) implementations read the same data off 
of the email server.  The only difference being that the allow the email 
client to be remote from the email server.
I'd like to point out that thus far this thread has been about how to 
get email between email servers.  As such, I think client access 
protocols are somewhat outside of the existing scope.
1. resource exchange layer to send resources to users. which also overlaps with HTTP* (again). let's call this "RESXCH_CLIENT".
The "how".

2. the part where it defines how the mail client to treat the resources. let's call this "RESUSE_CLIENT".
See above comment about scope.

This is also a "how". But "how" clients get email from servers is decidedly different than "how" servers exchange email.
They can both use any underlying transport, be it TCP (like POP3 & IMAP) 
or HTTP(S).
i disagree. i think this is more like it about the current email system:
RESXCH_SERVER / RESUSE_SERVER / RESXCH_CLIENT / RESUSE_CLIENT
I'm having trouble unpacking that.  So I'll provide my version of what I 
think you're trying to say.
Since all of this rides on top of TCP, I'm not going to call it out.

1) The sender (who-sender) sends their email (what) to their outbound email server (who-recipient) with SMTP (how).
2)  (The sender's) outbound server (who-sender) sends (the sender's) 
email (what) to the (the recipient's) inbound server (who-recipient) 
with SMTP (how).
3)  The recipient (who-recipient) pulls email (what) from their inbound 
server (who-sender) with POP3S / IMAPS (how).
Notice how we have a what, who-sender, who-recipient, and how in each of 
these.  The who-sender and who-recipient are the parties of each 
discrete conversation; 1, 2, or 3.
Notice how the what (email) is an opaque blob on each leg of the 
transmission journey.
There are four distinct points with three distinct paths in between.

A)   [1]---(SMTP)---[2]---(SMTP)---[3]---(POP3S/IMAPS)---[4]

1) Person sending the email.
2) #1's email server.
4) Person receiving the email.
3) #4's email server.

(Yes I know those are not in numerical order. #3 and #4 are in dependency order.)
The only way to remove a point and transmission path from this process 
end-to-end process is for #2 and #3 to be the same.
B)   [1]---(SMTP)---[2/3]---(POP3S/IMAPS)---[4]

Other than mega email providers; Google, Microsoft, Yahoo, et al., you are going to have scenario A above.
Each step of the way you have what is transferred (the message) and how 
it is transferred (the protocol) between two points.
The what (email) is still an opaque blob on each leg of the transfer.

it's 4 different layers to exchange mail between people.
We apparently aren't using layers the same way.  You seem to be using 
layers in place of hops.  That is both inaccurate and unfair for a 
number of reasons.
There can be any number of additional hops in between # 2 & 3 above for 
any number of reasons; legal, technical, political, etc.
but if we plug HTTP* in the mix, it because only 3 different layers:

HTTP* / RESUSE_SERVER / HTTP* / RESUSE_CLIENT
You also seem to be describing scenario B above.

Here is a variation on scenario A above that is completely realistic if not probable.
C) 
[1]---(SMTP)---[2]---(SMTP)---[3]---(SMTP)---[4]---(SMTP)---[5]---(SMTP)---[6]---(POP3S/IMAPS)---[7]
1)  The person sending the email.
2)  The person sending the email's work SMTP server.
3) The ESP server that the sender's employer is using. E.g. their ISP or SendGrid. 5) The ESP server that the recipients employer is using. E.g. Postini or MailRoute.
6)  The person receiving the email's work SMTP server.
7)  The person receiving the email.

This completely realistic scenario is more hops but still the same number of layers as scenarios A and B above.
Scenario A with some layering detail.

           email         email         email
           SMTP          SMTP          POP3S/IMAPS
A)   [1]---(TCP)---[2]---(TCP)---[3]---(TCP)---[4]

Now what you are proposing:



           email         email         email
            TBD           TBD           TBD
           HTTPS         HTTPS         HTTPS
A)   [1]---(TCP)---[2]---(TCP)---[3]---(TCP)---[4]

The number of layers has increased from three to four.

The number of hops in the path doesn't matter.

You can freely replace TCP with UDP (QUIC) or some other transport layer.

You are free to define your own email exchange protocol in place of TBD in the lower of the two layered diagrams.
The email layer (opaque contents of the message) is effectively the 
same.  How it's executed doesn't really matter.
You can't get around the fact that you have /added/ a layer to the stack 
in between the transport and the email exchange protocol.
I have not heard any compelling reasons for adding HTTPS in between the 
email transport protocol (SMTP / TBD) and the underlying network 
transport protocol (TCP / UDP / ...).
The only reasons that I have heard are:  "there are more libraries" 
which for me translates to "it's easier (for the developer)" which 
translates to "laziness".
NONE of these reasons qualify as "easier" or "better" for email 
administrators / the email ecosystem to migrate.
and it is even nicer for when HTTP* is plugged, because it is also the protocol used for most of internet's traffic (web browsing).
It may be the protocol that you see.  Trust me when I say that the World 
Wide Web (which is predominantly HTTP(S)) is a subset of the Internet 
(which is many, Many, MANY other protocols).
Email and DNS are probably the most visible things on the Internet that 
aren't part of the World Wide Web.
so basically total expected number of protocols/layers used in the universe, per second, will be much less if we, on planet earth, use a mail system that uses HTTP* instead of RESXCH_*.
I obviously disagree.



--
Grant. . . .
unix || die

Reply via email to