Subject: Tenex and scalability

From: [email-masked] (Trey Harris)
Date: 1 Dec 1995 04:31:16 GMT

My system is the centralized campus email machine at this university, and
currently we have 27,000 users (increasing by about 2,000 per month).  We
maintain user mailboxes in a 5GB filesystem mounted over /var/spool/mail
on a centralized mailserver; all mail delivery is routed to this machine
via MX entries and sendmail LOCAL_RELAY directives.  This redirection of
mail, along with a hard mount, minimizes the mail locking problems which
are inherent in any large cluster sharing an NFS-mounted /var/spool/mail. 

Currently most mail (70%) is accessed on the client machines by an NFS
mount of the mailserver's /var/spool/mail filesystem over the client's
/var/spool/mail.  Pine (or in a very few cases Elm, mailx, etc.) access
the mail using the NFS filesystem.  Another large part of the mail (25%)
is accessed from PC IMAP (or POP) clients running all over the campus,
which connect to the University of Washington IMAP daemon (or the POP
gateway) running on the mail server.  The remaining portion (5%) use PC
IMAP or POP clients to connect to the IMAP or POP daemons running on the
login client machines. 

(The final 5%, though less than optimal, is because one of our campus's
favorite Mac clients doesn't deal with DNS naming conventions correctly,
and must use the client machines as their IMAP and SMTP hosts in order to
give mail the correct headers for proper reply.)

Obviously, as a system administrator I am interested in maximizing the
usefulness and performance of each of my machines.  If one uses
Berkeley-style ("Unix") mailboxes, then one's mail user agent (such as
Pine) or network mail access agent (such as the IMAP or POP server) must
load one's entire mailbox into memory in order to process it.  The Tenex
format, on the other hand, only requires the MUA or IMAP server to keep
one message into memory at a time.  This can result in significant
performance gains.  The Tenex mailbox style also allows for multiple
processes to concurrently access the file. 

I would therefore be very interested in using the Tenex mailbox style.  
But a few things about its requirements give me pause:

-- The most obvious one, the requirement of using a MUA or network
   mail access daemon that supports the Tenex format.  We are about to
   replace our current system (three high-end RS/6000's, one used for
   mailserving and the other two used for login and home directory
   fileserving) with a new, larger system (a ten-node SP, with one
   mailserver node, two fileserver nodes, and seven UNIX login nodes).
   I do not plan to install any MUAs other than Pine on the new
   system, so this requirement does not worry me.

   However, I am concerned that if at some point the Tenex format may
   no longer be the path we want to take, for whatever reason, there
   be a path of migration.  Are there programs to convert from Tenex
   to Berkeley format?  Is the Tenex specification available so that
   we can write our own utilities to convert its format to some other
   in the future?  Where would I find a paper documenting this mailbox
   style?

-- I am told that the Tenex format uses Unix filesystem semantics not 
   available under NFS.  Is this true?  If so, can I expect my mailserver to 
   be able to handle enough more IMAP clients with Tenex so that I can 
   convert my whole cluster to use IMAP exclusively?

   As I said before, we currently use NFS to mount a shared
   /var/spool/mail stored on the mailserver.  This seems to distribute
   CPU usage fairly well, because mail deliveries and most IMAP access
   is local, while MUAs on the Unix login clients use NFS.  At one
   point I changed my global pine.conf file on one of the login
   clients to use IMAP by default.  The mailserver was overwhelmed.
   It seems that the 50-60 imapd processes it runs now are about all
   it can manage in the Berkeley format.  Is it likely that switching
   to Tenex would allow the mailserver to run the 400-700 imapds
   needed with similar performance?

-- If not, what are other possibilities?  Transparency and elegance
   are very important to our user community, and the
   "[email-masked]" DNS trick suggested previously on
   this newsgroup simply would not be accepted here.  *Everyone* has
   an address of the form "[email-masked]" and *everyone*
   connects to "mailserv.unc.edu".  The fact that our user
   documentation does not have the copious conditionals ("if you are a
   student whose name begins with A-F and you will graduate in 1997,
   use the following hostname") that are so common at other
   universities has been a blessing for support people.

-- I am interested to know whether the Tenex mailbox style will work
   in AFS.  If so, could I continue to NFS-mount /var/spool/mail, and
   modify the c-client to *always* move mail into the home directory,
   whether or not a mail.txt file is present?

-- If, after the above questions are answered, we decide to move to
   Tenex, we will want to move the current mailboxes to that format so
   that users don't notice the change (again, transparency and
   elegance). Is there a tool out there to convert Berkeley mailboxes
   to Tenex in place?  If not, would it be easy to write one?

As our IMAP client usage goes up, the 50-60 concurrent imapds my
mailserver currently supports will become more and more insufficient.
IMSP's IMAP server redirection, if and when it becomes available and
is fully supported by Pine and other major IMAP clients, would solve
our problems in one fell swoop, but it looks like it may come too
late.

I am interested in discussing these issues with attendees of the IMAP
meeting at UW in January, but the design decisions for this new
complex of machines must be made before then.  I'd appreciate any
thoughts anyone has on the above.
-- 
Trey Harris                             http://sunsite.unc.edu/harris/
  System Administrator, Project Isis, Office of Information Technology
                       The University of North Carolina at Chapel Hill