LWN.net Logo

LCA: Lessons from 30 years of Sendmail

LCA: Lessons from 30 years of Sendmail

Posted Feb 3, 2011 22:06 UTC (Thu) by foom (subscriber, #14868)
In reply to: LCA: Lessons from 30 years of Sendmail by dskoll
Parent article: LCA: Lessons from 30 years of Sendmail

No thanks. I have no interest in writing a new MTA, nor in writing any Ruby code. :)

But I will point out that many large mailing list installations run on mailman, which is written completely in Python. That seems to be performant enough.

And spam filtering of email content is frequently done with spamassassin -- written in Perl.


(Log in to post comments)

LCA: Lessons from 30 years of Sendmail

Posted Feb 3, 2011 22:40 UTC (Thu) by dlang (✭ supporter ✭, #313) [Link]

Mailman is not a MTA.

it manages the list of users that the MTA will send mail to (a low overhead activity)

it validates messages sent to the list (it handles each message once, before it gets multiplied by potentially several orders of magnitude as it's sent out)

LCA: Lessons from 30 years of Sendmail

Posted Feb 4, 2011 11:08 UTC (Fri) by paravoid (subscriber, #32869) [Link]

Have a look at Lamson, then.

LCA: Lessons from 30 years of Sendmail

Posted Feb 4, 2011 19:42 UTC (Fri) by dskoll (subscriber, #1630) [Link]

From the "About Lamson" page:

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.

LCA: Lessons from 30 years of Sendmail

Posted Feb 5, 2011 0:17 UTC (Sat) by dskoll (subscriber, #1630) [Link]

And spam filtering of email content is frequently done with spamassassin -- written in Perl.

Indeed so. We use Perl (including SpamAssassin) to filter our mail.

In terms of memory size, SpamAssassin on our system is about 70MB per instance vs. about 9MB for Sendmail. (To be fair, we use a lot of other Perl modules apart from SpamAssasssin in our filter.) And when it comes to performance, SpamAssassin is so slow relative to Sendmail that Sendmail becomes completely negligible. Bolting anything in Perl onto Sendmail is like towing a five-ton truck with a motorcycle. :)

LCA: Lessons from 30 years of Sendmail

Posted Feb 5, 2011 0:43 UTC (Sat) by foom (subscriber, #14868) [Link]

Yes. Perl is an order of magnitude slower than C. Furthermore, spam filtering is inherently a harder job than mail routing. Yet, Spamassassin is *still* fast enough! Thus my claim: MTAs don't need to be written in C.

But writing a new MTA from scratch now is pretty pointless, no matter what language it's in.

LCA: Lessons from 30 years of Sendmail

Posted Feb 5, 2011 17:13 UTC (Sat) by dskoll (subscriber, #1630) [Link]

Thus my claim: MTAs don't need to be written in C.

That's probably true, 99% of the time. But again, MTA authors tend to worry a lot about performance and tend to write their software to cope with huge amounts of mail. I believe that's the correct approach because even a small site can suddenly get a huge spike in traffic for various reasons (eg, a spammer does a massive joe-job spam run.) You don't really want your email to fall over.

LCA: Lessons from 30 years of Sendmail

Posted Feb 26, 2011 13:07 UTC (Sat) by job (guest, #670) [Link]

Spam filtering is very different from general mail routing. You might find a better example in qpsmtpd.

It is (almost) pure Perl and in use at quite a few large installations including the Apache project.

Copyright © 2013, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds