Live data from Hacker News

A serverless email server on AWS using S3 and SES

github.com

41–50 of 266 posts

Re: A serverless email server on AWS using S3 and SES

#41

I don't know anything about serverless --- to this day I fail to understand what this word is even supposed to mean. And the deployment diagram[1] sure looks complicated to me. I think I prefer old-school servers. [1]: " rel="nofollow">https://raw.githubusercontent.com/0x4447/0x4447-product-s3-e...

Yeah, it's a really dumb term. > Serverless computing is a cloud-computing execution model in which the cloud provider runs the server ...so, there is a server? What's with the name, then?

>...so, there is a server? What's with the name, then?

The name is just a marketing gimmick. Absent any other context, "serverless" seems like it must be a paradigm shifting technology so sufficiently advanced that it renders servers obsolete, as if by magic.

It's the same sort of trick that people sometimes pull when they show off an application to "do x in 10 lines" (or some absurd low number), when the app is just making API calls to a remote server running several million LOC.

Re: A serverless email server on AWS using S3 and SES

#42
post #35

Now someone just needs to create a serverless (aka client side or browser only) Gmail like interface you can host on S3. And the shackles will be broken...

https://www.rainloop.net ?

Anyway, what is the point in moving from one Giant to another Giant? :-) Unless it saves the cost, I don't see the benefit of such hassle.

Re: A serverless email server on AWS using S3 and SES

#43
post #12

> This stack was created out of frustration due to the fact that to this day there's no easy way to have a full email server without the overhead of installing and configuring all servers needed to handle incoming and outgoing messages. Interesting approach, though I solved this frustration by the use of a Docker and kept "my data is mine" + "no vendor lock-in" + "I control all the gears" approach. (Though, it's not…

Another drawback is that while yes, you can scale up fairly easily with terraform, your server can also fall over if you get a heavy burst of traffic, and you'll return errors until you're able to provision more machines. Depending on what you're doing, how fast you're growing, and how much tolerance your users have for downtime, that might be a pretty big deal.

Email itself has built-in resilience for such scenarios.

Re: A serverless email server on AWS using S3 and SES

#44
post #16

Wow, this is cool! JSON structures resemble JMAP. I wonder what'd be the effort to add JMAP endpoint to this?

JMAP is a radically different beast. The similarities between this thing’s JSON format for sending and JMAP’s Email data type are superficial only: they’re both JSON and are representing the same thing, so it should be no surprise that they look similar. But that’s a quite tiny part of what JMAP is: JMAP is an object synchronisation protocol. (And this is why JMAP so much more complex than the typical REST API. And why I prefer it so much.)

I also think the JSON here is only for sending, not for receiving—I presume that you’ll receive the MIME message, because otherwise you’d be throwing away all kinds of essential information.

All of this gets you basically nowhere along the path to JMAP, and achieving a JMAP endpoint would be a lot of effort. This project doesn’t look to be at all suitable as a base for such an endeavour. Things like sorting (e.g. newest first), querying (e.g. emails from so-and-so) and JMAP’s state management (so the server can tell you “something changed” and you can ask the server to tell you what changed since x, rather than needing to throw everything away and start again) don’t work well within the design of this system—you need to store lots of extra details along the way, maintaining indexes and other such things.

For such an endeavour, I would instead recommend either wrapping an existing mail server in serverless voodoo (much of which I expect to be not too hard: you’re essentially just replacing ingress and egress and not running it as a daemon; but there will be architecturally difficult parts like getting push channels working probably), or starting new mail server software from scratch designed to be able to work serverless.

(I work for Fastmail on our webmail. I have general knowledge of how mail servers work internally, but little specific knowledge; for example, I have no idea how amenable Cyrus, which we use and develop, would be to serverless packaging.)

Re: A serverless email server on AWS using S3 and SES

#45
post #36

Earlier quoted context omitted.

Yeah, it's a really dumb term. > Serverless computing is a cloud-computing execution model in which the cloud provider runs the server ...so, there is a server? What's with the name, then?

Probably this means that there is no server you can SSH to nor need to maintain. It could probably be called a serverhostage/server-lock-in computing, where someone else keeps the _shared_ server(s) away from you and runs other people's, potentially harmful, instructions as well :-)

So how is it different than running it in the cloud?

Re: A serverless email server on AWS using S3 and SES

#46

I don't know anything about serverless --- to this day I fail to understand what this word is even supposed to mean. And the deployment diagram[1] sure looks complicated to me. I think I prefer old-school servers. [1]: " rel="nofollow">https://raw.githubusercontent.com/0x4447/0x4447-product-s3-e...

Your link, fixed: https://raw.githubusercontent.com/0x4447/0x4447-product-s3-e...

Re: A serverless email server on AWS using S3 and SES

#47

I don't know anything about serverless --- to this day I fail to understand what this word is even supposed to mean. And the deployment diagram[1] sure looks complicated to me. I think I prefer old-school servers. [1]: " rel="nofollow">https://raw.githubusercontent.com/0x4447/0x4447-product-s3-e...

Serverless is beautiful. You just need to try some basic serverless concepts. Like run a website on S3.

But to your second point, I agree. the technical hurdle required to learn all the configuration and moving parts ... And then to know that this language is vendor specific... Makes it less palatable.

That's why I expect the cloud vendors to normalize their offerings over time. I should be able to take a CloudFormation template from aws and put it through Googles Deployment Manager

Re: A serverless email server on AWS using S3 and SES

#48
post #38

Earlier quoted context omitted.

I still fail to understand why 4 years in, people seem to be confused about the idea that definitions of words involve over the years and that the computer industry has both been coining and adopting phrases. But a quick Google search is all that it would take to “understand it” https://en.wikipedia.org/wiki/Serverless_computing

I've found that "I don't even get what the word is supposed to mean" is someone's first experience with tech fear. In my experience (including my own personal anecdata) they tend to mean "I don't want to learn this new thing and because of that I'm worried I'll be left behind if everyone switches to this"

I also don’t get this. I’ve been programming either professionally or personally for 30+ years. But this isn’t a new phenomenon.

Back in the early 90s you had an “Apple II Forever” movement with people still holding on to their 8 bit Apple //e’s while Apple and the rest of the world moved on.

Re: A serverless email server on AWS using S3 and SES

#49

Earlier quoted context omitted.

"serverless" is just "managed hosting" under a new name, I believe.

No it’s not just managed hosting. Managed hosting still means there is a server to maintain, patch, and that it is always running.

There's a firecracker VM and a Linux OS under the Lambda. Both of which need to be maintained by Amazon.

Edit: "managed cgi-bin" is perhaps more apt.

Re: A serverless email server on AWS using S3 and SES

#50
post #36

Earlier quoted context omitted.

Probably this means that there is no server you can SSH to nor need to maintain. It could probably be called a serverhostage/server-lock-in computing, where someone else keeps the _shared_ server(s) away from you and runs other people's, potentially harmful, instructions as well :-)

So how is it different than running it in the cloud?

When you are “running it in the cloud” with a traditional VM you still have a server that you can log into, that’s always running, requires patching and if you get a spike, you have to set up your own scaling policies and it will usually scale more slowly.
Post reply on HN