On 8/21/20 6:37 AM, Rich Freeman wrote:
This stuff can be interesting to discuss, but email is SO entrenched
that I don't see any of this changing because of all the legacy issues.
You would need to offer something that is both easier and better to
use to such a degree that people are willing to change.
"something that is /both/ *easier* and *better*".
That's a VERY tall bar to clear.
1. Modernizing the actual data exchange using http/etc.
I don't think you'll get much argument that SMTP isn't the way
somebody would do things if they were designing everything from
scratch.
SMTP may not be the best, but I do think that it has some merits.
Merits that the previously mentioned HTTP/2 alternative misses.
Remember, SMTP is a protocol, or a set of rules, for how two email
servers are supposed to exchange email. These rules include the following:
1) Proper server greeting, used to identify the features that can be
used. (HELO for SMTP and EHLO for ESMTP.)
2) Identifying the sender.
3) Identifying the recipient(s).
4) Sending the message payload.
Each of these discrete steps is a bi-directional communication.
Communication that can alter all subsequent aspects of a given SMTP
exchange.
The server could be an older server that only speaks SMTP and as such
doesn't support STARTTLS. Thus causing the client to /not/ try to use
STARTTLS in accordance with current best practices. Other ESMTP
features come into play here like message size, 8-bit, notification
features, etc.
The receiving server has the ability to assess the sending server's
behavior at each point to use that as an indication to know if the
sender is a legitimate email server or something more nefarious and
undesirable. -- There is a surprising amount of email hygiene based on
sending server's behavior.
The receiving server may carte blanch reject messages from specific
senders / sending domains and / or specific recipients, particularly
non-existent recipients.
SMTP has low overhead in that the message body is not transferred from
the sending server to the receiving server if any part of steps 1-3
aren't satisfactory to the receiving server.
I'm not an API expert but I imagine that just about any of the modern
alternatives would be an improvement.
Maybe. Maybe not.
What is the actual problem with SMTP as it is?
What /need/ to be improved? What could benefit from improvement even if
it's not /needed/?
http would be a pretty likely protocol to handle the transportation,
Why HTTP?
Did you mean to imply HTTPS?
Why add an additional protocol to the stack?
TCP / SMTP is two layers.
TCP / HTTP / $Email-protocol-de-jure is three layers.
UDP / HTTP / $Email-protocol-de-jusre is three layers.
Why introduce an additional layer?
Why introduce an additional dependency in the application stack?
Why co-mingle email with other non-email traffic? -- Or are you
wanting to run HTTP(S) on TCP port 25?
likely with something like JSON/xml/etc carrying the payload.
Why add an additional encapsulation on top of the additional layer?
What does JSON / XML / etc. on top of HTTP(S) provide that SMTP doesn't
provide?
What is the gain?
Is the gain worth the cost of doing so?
You might want to tweak things slightly so that recipient validity can
be tested prior to transferring data.
Definitely. (See above for more details as to why.)
But now you are doing multiple exchanges.
If we extrapolate this out to also include sender validation, and
probably hello messages, you are back to four or more exchanges.
How is this better than SMTP on TCP port 25? What is the benefit? What
does it cost to get this benefit?
A mail server doesn't want to accept a 20MB encrypted payload if it can
bounce the whole message based on the recipient or a non-authenticated
sender or whatever.
Which is one of the many reasons why there are multiple exchanges back
and forth.
However, in principle there are plenty of modern ways to build a
transport protocol that would be an improvement on SMTP ...
Please elaborate.
Please include what network layer (3) protocol(s) you want to use and why.
Please include what application layer (7) protocol(s) you want to use
and why.
Please include any encoding / encapsulation you want to use and why.
... use more standard libraries/etc.
There are many libraries to interface with SMTP.
Also, handing a message off to an SMTP server alleviates the application
from having to deal with failed deliveries, queuing, and retrying.
Why add that complexity into each and every application? Especially if
you don't have to?
Note: Pulling it in via a library is still indirectly adding it to each
and every application.
How is SMTP /not/ standard?
Also: https://xkcd.com/927/ -- Standards
I think this is actually the part of your proposal that might be
more likely to take off. You could have a new type of MX field in
DNS ...
So yet more complexity in addition to the extra layers of the stack.
... if it is set then it defines servers that will use the new protocol,
It defines servers that are purportedly /capable/ of using the new protocol.
Advertising a capability is entirely different than using an advertised
capability.
and you could have backup SMTP servers for legacy transition.
We've been transitioning from SMTP to ESMTP for about 28 years. How
long do you think it will be before we finish transitioning away from
stock SMTP?
Further, how long do you think it will be before we finish transitioning
to your new proposed standard? I'm guessing at least another 30 years
to finish it.
So how long will we have three email protocols; SMTP, ESMTP, and
$Email-protocol-de-jure?
You could change the transport side of things without redefining how
email works, so the same messages are interoperable with both systems.
So now you are proposing putting the SMTP protocol on top of a new
transport instead of TCP.
Old: TCP / SMTP is two layers
New: TCP / HTTP(S) / SMTP is three layers
New: UDP / HTTP(S) / SMTP is three layers
What exactly does moving SMTP from TCP to HTTP(S) provide? What is the
benefit for the added complexity and dependencies?
On the flip side, while I think this is an easier change to make,
I don't think it necessarily offers huge improvements.
So why bother doing it at all?
SMTP still gets the job done,
Yes. SMTP does it's job sufficiently well. Is it the best method?
Doubtful. Is it well supported and widely used? Yes on both accounts.
Note: The same can be said about Ethernet too. Yet here we are 30
years later still using it and enhancing it to be 40,000 times faster
than it originally was. (400,000,000,000 bps vs 10,000,000 bps)
and the new system wouldn't really be a major improvement from a
sysadmin standpoint, so I don't see everybody running out to change.
If there's not a significant* change, why should we bother changing?
Where significant is enough to overcome the work effort and pain to make
the change.
Just changing the transport protocols doesn't provide any anti-spam/etc
benefits.
Nope. So no benefit and additional complexity / overhead. Sounds like
a net loss to me.
SMTP already supports TLS so it isn't any more secure.
Just because (START)TLS is provided doesn't mean that it's used.
There may be some benefit to using a transport that has implicit
(START)TLS encryption.
We could easily revisit SMTPS, which does have implicit TLS encryption
on TCP port 465.
SMTPS is a well establish, but seldom used, way for clients to send
email to their outgoing mail server. Perhaps we could re-use this as a
new server-to-server SMTP transport. Slightly modifying and re-using
prior art is almost always better received than something completely new.
There is also the possibility of working on augmenting SMTP, or more
likely the metadata around it, to make existing SMTP servers to
/require/ STARTTLS when it is known that both the sending and receiving
servers support it.
This latter idea is already somewhat being done by many email
administrators. Admittedly it's sub-optimal and likely manual. But
that sounds like a simpler change. Perhaps publishing a flag in DNS
could indicate that email from my servers should be STARTTLS encrypted
and you should require it on the receiving server (presuming you support
it).
No doubt ...
I have serious doubt.
... if we were starting from scratch this is how it would be done, but
it isn't enough of a reason to change.
DING DING DING!!!
That said, if there were even modest benefits for large mail providers
I could see it taking off simply because it could leverage a lot of
existing libraries and standards, and could have legacy compatibility.
But we already have MANY libraries and MANY standards. What good does
yet another one provide?
Stop focusing on HTTP(S) <any version thereof> for a few minutes.
If you were to create a new protocol from the ground up, why would you
introduce additional layers into the application stack — which represent
additional dependencies and complications — if you didn't have to?
Not everything is a web server. Not everything can benefit from being
forced through a web server.
2. Changing the model around email moving to something more
PKI-based/etc and redefining what an email address is.
This is where you could have revolutionary improvements for
privacy/spam/etc.
What does changing email addresses (user part and / or domain part)
provide functionality that can't be done — as in is not at all possible
to do — with current email addresses?
However, it completely breaks everything that exists with email today,
so it is a hard change.
Changing email addresses doesn't break email as it exists today. /SMTP/
/doesn't/ /care/ what the addresses are.
/Humans/ /using/ /email/ (thus indirectly SMTP) /do/ /care/ what the
addresses are.
Most of the benefits only accrue if you adopt PKI as well, which is
a problem that is hard to scale out to the masses.
PKI is relatively easy to scale. (For a given value.) Hence the
thriving CA industry.
Doing so in a trust worthy manner is the problem. Especially if you
want to avoid a single point of control / failure / GEO political / etc.
If somebody comes up with a way to make PKI take off in a real way,
then I could see something like this taking off eventually. Otherwise,
this stuff is only going to be of interest to the sorts who use gpg
to sign their email, and nobody else.
The biggest issue I see with PKI is /bootstraping/ trust.
If we throw all the trusted CAs out the window, how do you /bootstrap/
encrypted communications? - My personal opinion is DNS.
We already have a very well understood, globally distributed, highly
redundant database with unique keys.
We have methods to authenticate it; DNSSEC.
We have ways to hid it's use; DNSCrypt, DNS-over-TLS (DoT),
DNS-over-HTTPS (DoH), DNS-over-53-over-IPsec (transport mode), and VPNs
(IPsec (tunnel mode), OpenVPN, WireGuard, et al.
So, why not put recipient's public keys in this phenomenal
infrastructure that we already have in place?
Oh, we did. There are already ways to publish S/MIME keys in DNS. I'm
fairly certain that there are ways to publish PGP keys in DNS too.
Non-conflicting ways at that.
We also have ways to publish the public key of a host's public / private
key pair.
The sad thing is that most people don't know that these well defined
methodologies exist and of those that do, few use them.
The long and short is that there are some relatively simple things that
we can do to augment the existing SMTP infrastructure to make it better.
We do not /need/ to do a wholesale replacement and incur all the
complications ~> technical debt that goes along with such a replacement.
--
Grant. . . .
unix || die