Lamson The Python SMTP Server
lamsonproject.org
lamsonproject.org
Mail servers, web servers, C compilers, libcs, and crypto libraries all seem to share the common property that their basic functionality seems enticingly easy to implement, inducing the naive to look at the mainstream implementations and think, "Look how stupidly bloated these are! I can do way better", and go on to produce nice elegant, minimalistic implementations that immediately fall over when put into production.
P.S. Is it just me or has Exim declined in popularity? 10 years ago it was hard to choose between Qmail and Exim, and Postfix was the hot new thing.
shephard@sbwc:~$ cat /etc/issue
Ubuntu 8.04.2 \n \l
shephard@sbwc:~$ sudo netstat -anp | egrep -i tcp.25
tcp 0 0 127.0.0.1:25 0.0.0.0: LISTEN 21313/exim4
Ubuntu seems to have an affinity for exim somewhere...
"Postfix is the default Mail Transfer Agent (MTA) for Ubuntu." -- https://help.ubuntu.com/community/Postfix
However, as great as Lamson is for processing email intelligently, it isn’t the best solution for delivering mail. There is 30+ years of SMTP lore and myth stored in the code of mail servers such as Postfix and Exim that would take years to replicate and make efficient. Being a practical project, Lamson defers to much more capable SMTP servers for the grunt work of getting the mail to the final recipient.
Also see this question in the FAQ: http://lamsonproject.org/docs/faq.html "What about security?! Shouldn’t Lamson be 20 processes?"
lightly-tested - Objection valid. Testing should be heavy for a MTA.
monolithic program - Erlang-style process separation might be useful here, with each part running at different privilege levels.
dynamic language that permits monkey-patching - So what? Dynamic languages are not any less secure. Machine code injection often allowed by many C programs is the ultimate monkey-patching. If you want to make a Smalltalk image secure, you just expunge the Compiler objects and disable the various #perform: messages. No more compiling! No more dynamic evaluating or altering of Smalltalk code of any kind.
doesn't have Perl's taint checking support - Objection could be valid. Taint checking is a very good thing. However, it turns out that there is something along those lines for Python.
http://mail.python.org/pipermail/python-list/2007-February/5...
One thing that's nice about dynamic languages, is that many of them are immune to buffer-overflow code injection. That, plus taint checking actually makes me feel better about the security of properly architected and deployed applications in dynamic languages.
I do agree that the set of apps you mention are deceptively "enticingly easy." Caution is warranted!
In other words, don't think "sendmail/postfix replacement"; think "tool for building things like Posterous". Or, more clearly, it's not about delivering mail, it's about processing mail. And for that, it appears to be a huge improvement over the traditional state of the art.
While this project seems interesting, I'd be curious to see what its performance is like. High volumes of spam make performance a top concern.
[later] i'm impressed so far, i haven't thought about email like this in a long time.
if this is 1970ish, then so is typing ls (forks and pipes galore) on a terminal, and i don't see anyone complaining about that. i'm not exaclty thrilled with the use of a SQL backing store either, more to install, more to monitor, more things that can go wrong.
body = view('confirmation.msg’).render( list=list, [...]
Rebinding the list builtin in the snippet on your homepage? Is there a good reason for that?Now, the 'list' in the argument list is rebinding.