Why does ListManager not use Sendmail?

 

ListManager relies on its own sending and receiving mailer instead of Sendmail. Why is this?

 

Many, many reasons. The major problem with list managers is maintenance. With ListManager having its own mailer, it knows exactly what the problem is, the instant it occurs. Also, if ListManager used Sendmail to receive email, it would have to rewrite Sendmail's /etc/aliases file, and that wouldn't be very elegant.

 

More importantly, ListManager doesn't do what other list managers do for mail sending efficiency. The other list managers send one message to a list, and use a huge BCC: list to get it out. When someone posts to a mailing list, exactly the same message is sent to every member of the list. The problem with this approach is that when permanent failures come back, it is very difficult to determine which user bounced it, because every message was the same.

 

ListManager makes every message unique, with an X-Lyris-Member-ID and X-Lyris-Member-Name SMTP header. Then, when a permanent failure message comes in, it becomes very easy to tell who did it and to automatically process them.

 

If you sent every message uniquely with Sendmail, you would get very little mail out, as Sendmail forks (makes a completely new copy of itself in memory) for each message, and so the number of concurrent copies of Sendmail you can run is fairly small. The ListManager mailer is multithreaded, so it takes up very little memory for each message send and very little CPU time. ListManager can run several thousand concurrent mail sends, even on a 64mb machine.

 

We're also seeing very fast message delivery times as a result of the low CPU demands and efficient memory usage.

 

The decision to leave Sendmail behind was crucial to the design of ListManager. It will coexist with Sendmail on the same machine. But, it will not use Sendmail for its own mail operations.

 

If you are running Sendmail or some other mail transfer agent, ListManager will relocate it to another TCP/IP port, and take over SMTP port 25. ListManager first receives all incoming mail. If the incoming mail is not addressed to a ListManager email address, ListManager automatically passes the email off to the relocated Sendmail program that processes it as normal. With this technique, both ListManager and Sendmail can coexist on the same machine, and there are no strange configuration tricks to play.

 

And, of course, having our own mailer means we can easily support many different operating systems, since we don't have to rely on the eccentricities of each platform's different mailing methods.



What About My Existing Web Server How Does Searching Work