4 ms·
The whole email is based on archaic complicated system and it is long due for a disruption. The RFCs are too many and too long and complicated to get them righ
by noncoml 9y ago
The whole email is based on archaic complicated system and it is long due for a disruption.
The RFCs are too many and too long and complicated to get them right at first try.
The SMTP protocol for example is based on ABNFs, which are not very machine friendly, and many implementations end up using regular expressions.
Then there is MIME and the quest for the main content of the message; there is no precise way to tell which of the parts of the MIME message are the main contents to be displayed to the user. Some clients use "multipart/alternative" and under that they have a "text/plain" and a "text/html" part. Others use "multipart/mixed" and add them there. Yet some others use "multipart/related". The you may have “multipart/alternative” under “multipart/mixed” and so on.
The way to achieve high-availability, is by using multiple MX records in the DNS for the mail exchangers. Imagine if today you had to get a list of host to try running your REST APIs against.
And of course achieving end to end encryption is not straight forward for the users.
IHMO it is time to come up with a new REST base API for email and short message exchange.
- tonyarkles 9y ago> Imagine if today you had to get a list of host to try running your REST APIs against. That's... exactly what we do, via DNS: $ host google.ca google.ca has address 96.63.131.14 google.ca has address 96.63.131.28 google.ca has address 96.63.131.26 google.ca has address 96.63.131.18 google.ca has address 96.63.131.22 google.ca has address 96.63.131.24 google.ca has address 96.63.131.16 google.ca has address 96.63.131.20
- noncoml 9y agoI don't think so. The client will do a DNS lookup, try the address and if it fails will give up. Look at the node.js code for example: https://github.com/nodejs/node/blob/master/lib/net.js https://github.com/nodejs/node/blob/master/lib/net.js. Look for "lookupAndConnect". The high-availability responsibility has been moved to the server side.
- stingraycharles 9y agoDNS is indeed being used for load balancing, not HA. However, piggybacking on the parent’s example of Google, they actually achieve HA on the IP level. They have multiple data centers broadcast the same IPs using BGP, and if one goes down Dijkstra’s algorithm will re-route to another data center that listens to the same IP. Having said that, I actually think that using multiple MX records for HA is a very elegant and robust solution for mere mortals that do not own multiple data centers and their own AS. Server side HA is way more expensive to get right than client side HA, and if it’s important for the protocol (which, in the case of email, it is), you better make damn sure it’s not expensive to implement for service providers.
- Spooky23 9y agoYou’ll never get a replacement system that is truly universal. Every replacement produc has been proprietary.
- noncoml 9y agoYeah, that's the problem. The forces that drive the internet today are more interested in locking in the users.
- saurik 9y agoHow is an ABNF grammar specification somehow not "machine friendly"?!
- deleted 9y ago[deleted]
- noncoml 9y agoWhy you think ABNFs are machine friendly? Is it that easy to parse ABNFs that we are flooding with libraries? Just because it is a formal system it doesn’t mean it’s machine friendly.
- saurik 9y agoHow to work with BNF grammars is seriously second year computer science... if you wanted to parse that precise format it should probably take something like twenty minutes using an existing parsing framework, and then you can generate anything you want. I could see making "parse SMTP" a homework assignment for a compilers class... if only it were challenging ;P. FWIW, when I implemented the SMTP/IMAP specs, I spent a few hours first writing my own parser combinator framework (to be 100% clear: from scratch, with no reference) and then made short work of getting these specific grammars fully implemented.
- deleted 9y ago[deleted]
- noncoml 9y ago> when I implemented the SMTP/IMAP spec Link to the code? > I spent a few hours first writing my own parser combinator framework (to be 100% clear: from scratch, with no reference) I am sure you did. Like when you rolled out your own crypto in 5 minutes. Or the time you rewrote FB in a weekend.