Zed Shaw's Son of Sam Email Server: Write Email Apps in a Modern Style
zedshaw.com
zedshaw.com
"The short version: Classes and methods beats pipes and processes."
Well, it depends. For latency on when processing a single large email, yes, perhaps. One-pass processing will give you that (although I think he skipped over how SoS manages to hand off incoming email to SpamAssassin without "passing it over a pipe to a perl process")? Surely we are trying to compare like with like, right?
But mail processing is a parallel activity. Reducing latency on a single message is not the same thing as improving throughput. What do we find out about that?
"But, sendmail and postfix are still way better at huge scale bulk, so it relays to them."
Ah, OK. So this is a boutique solution, for personalised handling of small-site stuff. Guess what? We already have that, since (as noted by the spamassassin example) you can set up the big solutions to hand off a message to you to process in the language of your choice.
Sorry for -ve rant. I didn't see any -ve comments in this section and wanted a little critical balance. Nice software is always nice, and you don't have to have a reason to want to write it.
But I don't like unjustified justifications. If you're going to claim better performance, give numbers.
In an ideal world.
Add five years of heavy development, and it'll probably be a suitable replacement for Postfix or qmail or Sendmail.
Besides, what's hard about Postfix? It usually only requires two or three configuration file changes to get mail processing working.
That, but used differently.
Mako's goal is to create a powerful, programmer friendly and FAST templating language .
A lot many times having code in templates is a faster way to develop, especially if the presentation layer is mostly intended to be used by a programmer.
Also, you can write mako code which has good separation of concerns.
How is : <% for r in rows %> ${r.name} <% endfor %>
less readable than :
{% for r in rows %} {{r.name}} {% endfor %}
It's not, and never will be, a general purpose mail server - old-fashioned SMTP servers have their flaws but it's as good as it gets if you want mail that can reach anyone, anywhere.
I ask because email has the property that all replies are linked to the original message, creating a dependency tree of ID's. Any system that doesn't create a unique message-id is a step back from email.
This is an intentional step back from email. Twitter is a bad place to have long back-and-forth conversations by design.
With that in mind, scaling a mail server is about speeding up disk access, not implementing it in a "fast" language. I'm sure Zed's thing can do just as well.