Mail Systems (was Re: mapping files to objects )

cwg@DeepEddy.Com cwg@DeepEddy.Com
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 
issues properly:

  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 
non-priv'd users.

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 
knew that.

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
native format).


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/

Content-Type: application/pgp-signature

Version: 2.6.2