On 8/27/20 7:00 AM, Caveman Al Toraboran wrote:
but i this way of looking at protocols (despite being common) is wrong.

Why do you think that it is wrong?

What is not factually correct about it?

i also disagree with the network layering proposed by osi or the other ones commonly published in books. i specially disagree with using such layering for studying the complexity of protocols.

If you're going to make such a statement, which is fine to do, you must provide information ~> evidence as to why you are doing so and why you think what you think.

so i suggest that if we want to study the complexity of messaging systems, we better not count SMTP as a single thing (like how it is normally done in books and talks), but instead talk about it based on the fundamental tasks that it actually does. this way, SMTP becomes at least 2 layers:

I think that I see part of a problem.

RFC 822 - Standard for the format of ARPA Internet Text Message - is what defines what I was referring to as the opaque blob sent between systems.

I will argue that the content of the opaque blob that SMTP transfers is independent of SMTP itself.

1. "resource exchange" layer where binaries are made into a single giant text file by base64 encoding and then partitioned by rfc822. this part overlaps with http* and is much less efficient (rightfully, since email had to be backwards compatible as it is critical).

SMTP* does not support binary in any (original) capacity. As such, email service, which /rides/ /on/ /top/ /of/ SMTP, is where the encoding ""hack was placed. This /encoding/ and / or /formatting/ is completely independent of the SMTP protocol used to exchange opaque blobs between mail servers.

*I did elide some more modern SMTP extensions to simplify the previous statement.

To whit: It is conceptually possible that there could be an SMTP exchange consisting of the following:

S:  Hello...
C:  EHLO <client FQDN>
S:  Nice to meet you...
C:  MAIL FROM:<envelope from>
S:  Okay.  Continue
C:  RCPT TO:<envelope recipient>
S:  Okay.  Continue
C:  DATA
S:  Okay.  Continue
C: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
.
S:  Okay.  Thank you.
C:  QUIT
S:  Goodbye.

The XXX...XXX content is /OUTSIDE/ of the SMTP specification. That content could conceptually be anything that you want it to be. The only limitation is that the communications channel must safely support the bit pattern and there must not be any way to cause confusion for the protocol outside of it.

SMTP doesn't care /what/ the contents of the XXX...XXX is. SMTP's ob is to exchange the XXX...XXX between servers based on the envelope from and recipients.

Some, if not many, email servers have instituted sanity checks to make sure that the XXX...XXX has some specific content (headers) and is well formatted. But this sanity checking is outside of the SMTP protocol.

So, your "where binaries are made into a single giant text file by base64 encoding and then partitioned by rfc822" is /NOT/ about SMTP. Instead it is about RFC 822 - Internet Message Format.

SMTP is RFC 821 - Simple Mail Transfer Protocol

2. "resource use" where the mail server parses such exchanged resources (e.g. email bodies, attachments, etc) and then acts upon them (e.g. forward them, discard them, etc).

Again, this is outside of the SMTP protocol. It has nothing to do with how the opaque blob is transferred between servers.

and so will pop* and imap.

I'm guessing that you are making a similar mistake with POP3 and IMAP.

Both POP3 and IMAP are also about transferring an opaque blob between the email server and the client.

The base POP3 and IMAP protocol do not care what the contents of the opaque blob are. Their goal is to get said opaque blob of XXX...XXX from the email server to the client.

I say base protocol because I think there are some - what I'll call - fancier POP3 and / or IMAP commands that can be issued to search and / or retrieve messages based on content in the blob.

At their base, SMTP and POP3 and IMAP are about transferring opaque blobs between servers.

In fact, they are the most recent replacement for alternative methods for exchanging the same opaque blobs. Historically, SMTP replaced FTP and UUCP for exchanging the same opaque blobs. Something could, and probably eventually will, replace SMTP, POP3, and IMAP. But that has not happened yet.

this way, if we ignore the problem of maintaining backwards compatibility,

That is a HUGE if. One that I do not accept at all. You absolutely *MUST* have backwards compatibility in some way. Even if that compatibility is something that acts as an edge gateway between SMTP and your new method. You MUST have backward compatibility in some way.

then having http* in the "resource exchange" layer would be more efficient and simpler as there will be less protocols doing the "resource exchange" task (instead of having each do its own).

So you want to take two completely different protocols that serve two completely different functions and force them into a third completely different protocol that serve yet another completely different function.

I feel the need to back up and call out what HTTP is. (HTTPS included because it's really just HTTP wrapped in encryption.)

C: HTTP/1(.0)
C: GET <path>
S: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

S: 200 ...

Notice how the HTTP /protocol/ doesn't care what the opaque blob is either.

Also notice how there is no exchange about who the message is from or two either. This might not seem like a problem. But what happens when i start sending you an email from someone you won't accept or to one or more recipients that you won't accept? I'm still sending you the email. You have to receive it, process it, and then reject it. This is a HUGE vector for a denial of service.

You might be able to do each client & server exchange as separate requests.

C: HTTP/1(.0)
C: GET /path/that/encodes/from
C: XXX...XXX
S: <return code>
C: GET /path/that/encodes/recipient
C: XXX...XXX
S: <return code>
C: GET /path/that/encodes/message-body
C: XXX...XXX
S: <return code>

Now you're getting REALLY close to SMTP run through a find and replace filter.

i also think that the kind of resource that email exchanges is fundamentally identical to a subset of resources that are natively exchanged in the web.

As stated above, that's the opaque blob that SMTP exchanges. I has nothing to do with the Simple Mail Transfer /Protocol/.

The /protocol/ is about /how/ things are exchanged. The /protocol/ is *NOT* about /what/ is exchanged.

I feel like you genuinely believe what you are saying. I also feel like you are tilting at the /wrong/ windmill.

so i think the only reason that smtp/pop/imap have different resource exchange protocols is purely due to backwards compatibility due to how things evolved historically.

It's not backwards compatibility.

SMTP is for sending email from server to server.
POP3 is about pulling email from a single mailbox down to the local client.
IMAP is about remotely accessing multiple different mailboxes on a remote server.

They do three fundamentally different things.

SMTP is akin to the postal service exchanging post between businesses.

POP3 is you collecting email from your inbox in the mail room and taking it back to your desk.

IMAP is you going to the file room to access a file in one of the many file cabinets.

They are very different actions on what is potentially the same content. But what is done and how it is done is completely different.

i suspect that we actually agree on everything, but speak different languages (possibly due to how books commonly talk about protocols and layering), or assume things beyond what's written.

No.  We definitely do NOT agree on everything.

I'll thank you for not altering what I say / think / believe.

e.g. we agree that:

1. smtp/pop*/imap make the best messaging system today,

So why are you trying to change them if they are the "best messaging system today"?

and is not going away any time soon, thanks to its wide spread.

Absolutely.

most likely i'll be dead and still have multiple active smtp/imap/pop account.

2. smtp/imap/pop are imperfect and have many shortcomings

I believe that SMTP can adequately address current needs.

I believe that IMAP does things very well. I have no issues at all with IMAP.

I believe that POP3 does what it does quite well. I have no issues at all with POP3.

that are "rightfully" not solved "cleanly" due to historical reasons

I don't like that statement. Something about it doesn't seem accurate to me.

and its critical nature which imposed on us the constraint of having to maintaining its backwards compatibility.

You are completely free to do your own completely independent thing. Just know that in doing so, you are very likely not going to have people adopt it without some interoperability.

3. trying new protocols is fine. and is also fine to have sub-communities that use different messaging protocols if they find it more fitting.

Sure.

We already have that today.

e.g. i'll probably end up using smtp/imap for talking to people in general, and use hillarymail [1] for talking to a closer nerdy community.

To each their own.



--
Grant. . . .
unix || die

Reply via email to