[comp.mail.sendmail] home delivery non-standards, followup

rayan@ai.toronto.edu (Rayan Zachariassen) (11/27/88)

[ The questions was whether there was a standard filename for UCB-Mail format
  message delivery to the recipients' home directory. ]

Based on the responses, there is obviously no overwhelming favorite:

.maildrop	1	(RPI)
.mail		2	(MMDF; Australia: Rourke mail & their local Upas)
.mailbox	1	(Brunel U, UK)

Mailbox/	1	(Andrew Message System, a directory)
don't-do-it	1

Based on this meagre tally,  I suggest ~/.mail be used in the future.

Here are some (paraphrased) comments and my thoughts on them:

John Mackin @ Basser U, DCS:

   The local delivery program needs to be robust: "the last thing you want to
   do is bounce the mail because the user's home directory happens to be
   unavailable" (in the context of backups done with homes unmounted).
   One solution is to deliver to an alternate location in that case (e.g.
   the traditional mail spool area).

I would prefer a delivery program that refused to deliver and just left
the messages queued.


Karl Owen @ Data General:

   There are good reasons to keep a "super" mailbox (/usr/[spool/]mail) concept:

   The home directory may temporarily disappear for various reasons, for
   example because it is a remotely mounted filesystem and the server is down.
   The delivery agent may not be able to distinguish between such a temporary
   condition and a permanent situation.

This is quite true.  I would not recommend delivery to a remotely mounted
filesystem unless if the machine you're delivering from is 100% dependent
on the (one) remote server.  This is also a problem with .forward files.

There are three reasons I can think of why one might want to deliver to a
home directory file:

- avoid dependency on a mail server
- move file space from system to user area, get people to police themselves
- aesthetics

You have to balance these off against the robustness of your environment
and your mailer.  In our case, we have twin machines of which one was the
mail/network box.  People on the second machine couldn't read or send mail
when the mail server was down.  We first considered delivery to home
directories to solve the access problem, but that doesn't address the
problem of mail coming in for someone whose home directory is remotely
mounted on the mail server, whose home dir server is down, and the mailer
trying to read their .forward file.  Instant hung mailer.  We now run a
mailer on the secondary machine and do mutual forwarding based on where
people's home directory is.  In the long run, this isn't very satisfactory.
In the short run it has proven slightly unstable due to the cruft people
put in the .forward files ("oh, forward to the mail server" MS:"oh, his home
isn't here, forward to the other machine" OM: "oh, forward to the mail server",
etc.)  Back to Karl:

   Many mail readers will have to be redone or some compatibility mode
   must be introduced during the migration.

Use symlinks: /var/mail/rayan -> ~rayan/.whatever


Craig F. Everhart @ ITC, CMU (about the Andrew Message System):

   Each message is delivered as a separate file in a known (system-wide
   configurable) directory (~/Mailbox/).  Such directories have equivalent
   of `world-writable w/ sticky bit set' permissions, meaning local mail
   is trivially authenticated (owner of the file).

There are a lot of advantages to a scheme with one file per message.
However, very few user agents are prepared to deal with that yet.  I would
be interested in determining a standard for that situation as well.  How
about the following (screwy) scheme?:

stat ~/.mail

If it is a file, deliver in UCB-mail/MMDF format to that file.

If it is a directory, create a new file in that directory and deliver
the raw message to it.  The algorithm that generates the file name is
guaranteed to produce unique names consisting of all-digits.  The algorithm
is free to maintain state between invocations but doesn't need to.

Two issues: should creation of a Return-Path (a la From_ line) be mandatory?
	what happens if the "unique" filename that is generated already exists?

If you care to shoot this down or make suggestions, feel free.

rayan

taylor@cs.glasgow.ac.uk (Jem Taylor) (11/29/88)

In article <88Nov27.125307est.6152@neat.ai.toronto.edu> rayan@ai.toronto.edu (Rayan Zachariassen) writes:
>[ The questions was whether there was a standard filename for UCB-Mail format
>  message delivery to the recipients' home directory. ]

>There are a lot of advantages to a scheme with one file per message.
>However, very few user agents are prepared to deal with that yet.  I would
>be interested in determining a standard for that situation as well.  How
>about the following (screwy) scheme?:
>
>stat ~/.mail
>
>If it is a file, deliver in UCB-mail/MMDF format to that file.
>
>If it is a directory, create a new file in that directory and deliver
>the raw message to it. 

I believe this to be the only sensible way to organise a mailbox ! It
places concurrency control in the filesystem, and means there can be no
problem with several people or processes reading the mail at the same time
but closing after deleting different messages. It also eases the
'search for message headers' phase of start-up - the headers are at the
fronts of the files.

>The algorithm that generates the file name is
>guaranteed to produce unique names consisting of all-digits.  The algorithm
>is free to maintain state between invocations but doesn't need to.

This is a lot like closed-hash - which is well understood. However, I would
suggest NOT using a 'random' unique name, because it discards data. One thing
a User Agent might like to do, apart from offering messages in CREATION DATE
order rather than DELIVERY DATE, is to group messages which reference one
another by References: or In-Reply-To: headers. So, either use the
Message-ID: in the message (which should be unique) or use the Date:. I prefer
Message-ID since it is more likely to be unique; if it exists then compare
body parts; if body is the same it is a duplicate -> discard it; if they
differ then append (!). If the UA can cope with /usr/spool/mail format then
it can also cope with two messages in one file.

-Jem Taylor.
-- 
ARPANet:taylor@cs.glasgow.ac.uk		| Mail:	J.A.Taylor, Computing Science,
JANET:	taylor@uk.ac.glasgow.cs		|	Glasgow University,
UseNet:	mcvax!cs.glasgow.ac.uk!taylor	|	GB-GLASGOW G12 8QQ