Mail Systems (was Re: mapping files to objects )
Wed, 07 May 1997 14:30:47 -0500
Content-Type: text/plain; charset=us-ascii
> OK. What I've decided would be a good way to get the code writing ball rolling
> is to use this mail system stuff as an example.
> I'm going to go ahead and do what I've said, walk-the-walk as I say.
> I'll write the low-level SMTP agent, using ACL and Linux and dumplisp,
> and then write some bad simple user interface to it.
> I can't actually use it myself for my real work, but I will actually
> try and use it for something.
> I'll then make this code available and
> others can see it and play with it, and I hope use it to aid in
> other such systems or at least get a more concrete idea of what I'm
> talking about.
Great. Just a couple of comments.
1) Didn't we agree on CMU-CL? Since that's about all we've agreed on so far,
it seems odd to use ACL instead.
2) Please make sure your design has the ability to deal with all the security
a) Support for .forward-like hooks run under the receiving user, not under
some root equivalent. (Obviously, .forward itself, is the wrong answer, but
equally obviously, in Lisp you can do something that's *much* better than
b) Spam generators can *not* use the site as an unauthorized relay.
c) Hooks for spam filters on sender/receiver/ip address/arbitrary header.
d) The actual SMTP server is *small* and runs in an isolated invironment so
that bugs won't allow outside people to eval arbitrary code in the full lisp
environment. [BTW, has anybody looked into doing something like Perl's
taint checking in a lisp environment? It seems like a good idea.]
3) Make sure it's able to support virtual domains under the control of
4) users should be able to have multiple mailboxes, either through the CMU
style user+<mailbox> or the qmail user-<mailbox>. (User configurable for
either choice, of course.)
5) The MTA should not only accept mail sent via SMTP, but should also be able
to pull mail into the local queue from a POP or IMAP server for those people
who aren't on the internet 100% of the time.
6) Hooks for a majordomo type mail service with the ability to use VERP
(Variable Envelope Return Paths) in the outgoing messages.
7) Use Delivered-To: to avoid mailer loops instead of stupidly counting
received headers ala sendmail.
8) Don't forget RFC1893.
9) And of course, don't rewrite addresses like sendmail. But I'm sure you
Some of these items can just be hooks initially (#5, #6, for instance), but
others will need to be there in the initial design (#2a, #2d, #4, etc.)
Good luck, and I'd love to write an MUA on top of such an MTA (but I'll still
write code for reading and writing unix files (*not* for importing and
exporting; there's no reason the user should find it harder to use than the
Chris Garrigues O- cwg@DeepEddy.Com
Deep Eddy Internet Consulting +1 512 432 4046
609 Deep Eddy Avenue
Austin, TX 78703-4513 http://www.DeepEddy.Com/~cwg/
-----BEGIN PGP MESSAGE-----
-----END PGP MESSAGE-----